mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-22 08:50:17 +08:00
- DSN 注入 sql_mode='ANSI_QUOTES':让元数据查询的 AS "OWNER" 与 ApplyChanges 的 "schema"."table" 在 MySQL wire 上被识别为标识符 - sql_mode 加入 mysql driver 参数白名单,避免被 mergeMySQLConnectionParam 过滤丢弃 - 加载 Oracle 列元数据失败不再静默,改为返回带 ALL_TAB_COLUMNS 诊断提示的明确错误 - 修复 stripOceanBaseConnectionParamsForCache 未剥离 # 片段导致与 resolveOceanBaseProtocolParam 行为不一致 - 锁定 mysql ParseDSN 对 sys@oracle001#cluster:p@ss 类租户凭据切分的 invariant,防止未来误加 url.QueryEscape - 同步 OceanBase agent revision,强制旧 driver-agent 被运行时校验拒绝
34 lines
928 B
Go
34 lines
928 B
Go
package app
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestStripOceanBaseConnectionParamsForCacheTrimsFragment(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got := stripOceanBaseConnectionParamsForCache("protocol=oracle&PREFETCH_ROWS=5000#dev-note")
|
|
if strings.Contains(got, "dev-note") {
|
|
t.Fatalf("expected fragment removed, got %q", got)
|
|
}
|
|
if !strings.Contains(got, "PREFETCH_ROWS=5000") {
|
|
t.Fatalf("expected business param kept, got %q", got)
|
|
}
|
|
if strings.Contains(got, "protocol=") {
|
|
t.Fatalf("expected protocol param stripped, got %q", got)
|
|
}
|
|
}
|
|
|
|
func TestStripOceanBaseConnectionParamsForCacheTrimsLeadingQuestionMark(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got := stripOceanBaseConnectionParamsForCache("?protocol=oracle&timeout=10")
|
|
if strings.Contains(got, "protocol=") {
|
|
t.Fatalf("expected protocol param stripped, got %q", got)
|
|
}
|
|
if !strings.Contains(got, "timeout=10") {
|
|
t.Fatalf("expected timeout kept, got %q", got)
|
|
}
|
|
}
|