mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-11 18:49:45 +08:00
@@ -23,9 +23,10 @@
|
||||
| #318 | mysql,bit 列,修改成 1 失败 | Fixed | `bee78be` |
|
||||
| #319 | 关于运行外部 sql 文件的一些建议 | Deferred | - |
|
||||
| #320 | 无法连接达梦数据库 | Fixed | `dc17133` |
|
||||
| #325 | 有没有考虑对数据库的驱动版本进行选择或者自定义? | Fixed | Pending |
|
||||
| #327 | SHOW DATABASES 报错 | Fixed | `5ac0221` |
|
||||
| #328 | [Bug] 安装更新失败 | Fixed | `436f130` |
|
||||
| #329 | 如果调整了左侧导航栏的宽度后,建议左侧导航栏内增加横向滚动查看 | Fixed | Pending |
|
||||
| #329 | 如果调整了左侧导航栏的宽度后,建议左侧导航栏内增加横向滚动查看 | Fixed | `942ee2f` |
|
||||
|
||||
## Notes
|
||||
|
||||
@@ -65,6 +66,12 @@
|
||||
- 处理:更新脚本统一输出为 CRLF,块内错误码改为延迟展开,旧文件回退路径统一为 `TARGET_OLD`,并将脚本启动方式收敛为 `cmd.exe /D /C call <script>`。
|
||||
- 验证:补充 `internal/app/methods_update_windows_script_test.go`,覆盖批处理语法、Win10 回退路径、CRLF 行尾、延迟展开和启动命令构造。
|
||||
|
||||
### #325
|
||||
|
||||
- 根因:TDengine 的版本列表虽然支持下拉选择,但后端在抓取与缓存 Go 模块版本时只保留最近 5 个版本,导致 `3.5.x / 3.3.x / 3.0.x` 这类旧版根本不会进入选择列表。
|
||||
- 处理:放宽 TDengine 的历史版本窗口,并补充离线 fallback 版本矩阵;同时扩大模块版本缓存上限,确保旧版不会在抓取阶段就被截断。
|
||||
- 验证:补充 `internal/app/methods_driver_version_test.go` 回归测试,覆盖缓存命中与 fallback 两条路径,并回归 Mongo 版本约束逻辑。
|
||||
|
||||
### #329
|
||||
|
||||
- 根因:侧边栏连接树被全局 Tree 样式固定为 `width: 100%`,标题同时启用了省略截断,导致缩窄侧栏后长节点无法形成横向溢出。
|
||||
|
||||
@@ -282,6 +282,7 @@ const (
|
||||
driverModuleVersionInspectLimit = 30
|
||||
driverModuleVersionListMaxSize = 4 << 20
|
||||
driverRecentVersionLimit = 5
|
||||
driverModuleVersionFetchLimit = 64
|
||||
driverVersionWarmupMinInterval = 30 * time.Second
|
||||
driverBundleIndexMaxSize = 1 << 20
|
||||
driverManifestMaxSize = 2 << 20
|
||||
@@ -393,7 +394,8 @@ var driverGoModuleAliasPathMap = map[string][]string{
|
||||
}
|
||||
|
||||
var driverExtraHistoryLimitMap = map[string]int{
|
||||
"mongodb": 10,
|
||||
"mongodb": 10,
|
||||
"tdengine": 30,
|
||||
}
|
||||
|
||||
var fallbackRecentDriverVersionsMap = map[string][]goModuleVersionMeta{
|
||||
@@ -414,6 +416,35 @@ var fallbackRecentDriverVersionsMap = map[string][]goModuleVersionMeta{
|
||||
{Version: "1.17.0"},
|
||||
{Version: "1.16.1"},
|
||||
},
|
||||
"tdengine": {
|
||||
{Version: "3.8.0"},
|
||||
{Version: "3.7.8"},
|
||||
{Version: "3.7.7"},
|
||||
{Version: "3.7.6"},
|
||||
{Version: "3.7.5"},
|
||||
{Version: "3.7.4"},
|
||||
{Version: "3.7.3"},
|
||||
{Version: "3.7.2"},
|
||||
{Version: "3.7.1"},
|
||||
{Version: "3.7.0"},
|
||||
{Version: "3.6.0"},
|
||||
{Version: "3.5.8"},
|
||||
{Version: "3.5.7"},
|
||||
{Version: "3.5.6"},
|
||||
{Version: "3.5.5"},
|
||||
{Version: "3.5.4"},
|
||||
{Version: "3.5.3"},
|
||||
{Version: "3.5.2"},
|
||||
{Version: "3.5.1"},
|
||||
{Version: "3.5.0"},
|
||||
{Version: "3.3.1"},
|
||||
{Version: "3.1.0"},
|
||||
{Version: "3.0.4"},
|
||||
{Version: "3.0.3"},
|
||||
{Version: "3.0.2"},
|
||||
{Version: "3.0.1"},
|
||||
{Version: "3.0.0"},
|
||||
},
|
||||
}
|
||||
|
||||
func (a *App) SelectDriverDownloadDirectory(currentDir string) connection.QueryResult {
|
||||
@@ -1851,8 +1882,13 @@ func resolveRecentDriverVersionMetas(driverType string, limit int) []goModuleVer
|
||||
}
|
||||
modulePaths := resolveDriverGoModulePaths(normalized)
|
||||
if len(modulePaths) > 0 {
|
||||
result := make([]goModuleVersionMeta, 0, limit)
|
||||
seen := make(map[string]struct{}, limit)
|
||||
extraHistoryLimit := resolveDriverExtraHistoryLimit(normalized)
|
||||
primaryLimit := limit + extraHistoryLimit
|
||||
if primaryLimit <= 0 {
|
||||
primaryLimit = limit
|
||||
}
|
||||
result := make([]goModuleVersionMeta, 0, primaryLimit)
|
||||
seen := make(map[string]struct{}, primaryLimit)
|
||||
appendUnique := func(values []goModuleVersionMeta, maxAppend int) {
|
||||
if maxAppend <= 0 {
|
||||
return
|
||||
@@ -1877,9 +1913,9 @@ func resolveRecentDriverVersionMetas(driverType string, limit int) []goModuleVer
|
||||
}
|
||||
}
|
||||
|
||||
appendUnique(fetchGoModuleVersionMetasCached(modulePaths[0]), limit)
|
||||
appendUnique(fetchGoModuleVersionMetasCached(modulePaths[0]), primaryLimit)
|
||||
|
||||
extraLimit := resolveDriverExtraHistoryLimit(normalized)
|
||||
extraLimit := extraHistoryLimit
|
||||
for _, modulePath := range modulePaths[1:] {
|
||||
if extraLimit <= 0 {
|
||||
break
|
||||
@@ -2105,8 +2141,8 @@ func fetchGoModuleVersionMetas(modulePath string) ([]goModuleVersionMeta, error)
|
||||
right := "v" + versions[j]
|
||||
return semver.Compare(left, right) > 0
|
||||
})
|
||||
if len(versions) > driverRecentVersionLimit {
|
||||
versions = versions[:driverRecentVersionLimit]
|
||||
if len(versions) > driverModuleVersionFetchLimit {
|
||||
versions = versions[:driverModuleVersionFetchLimit]
|
||||
}
|
||||
|
||||
metas := make([]goModuleVersionMeta, 0, len(versions))
|
||||
|
||||
@@ -162,6 +162,76 @@ func TestDownloadDriverPackageRejectsUnsupportedMongoVersion(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveRecentDriverVersionMetasIncludesHistoricalTDengineVersionsFromCache(t *testing.T) {
|
||||
seedGoModuleVersionCache(t, "github.com/taosdata/driver-go/v3", []string{
|
||||
"3.8.0",
|
||||
"3.7.8",
|
||||
"3.7.7",
|
||||
"3.7.6",
|
||||
"3.7.5",
|
||||
"3.7.4",
|
||||
"3.7.3",
|
||||
"3.7.2",
|
||||
"3.7.1",
|
||||
"3.7.0",
|
||||
"3.6.0",
|
||||
"3.5.8",
|
||||
"3.5.7",
|
||||
"3.5.6",
|
||||
"3.5.5",
|
||||
"3.5.4",
|
||||
"3.5.3",
|
||||
"3.5.2",
|
||||
"3.5.1",
|
||||
"3.5.0",
|
||||
"3.3.1",
|
||||
"3.1.0",
|
||||
"3.0.4",
|
||||
"3.0.3",
|
||||
"3.0.2",
|
||||
"3.0.1",
|
||||
"3.0.0",
|
||||
})
|
||||
|
||||
metas := resolveRecentDriverVersionMetas("tdengine", driverRecentVersionLimit)
|
||||
versions := make([]string, 0, len(metas))
|
||||
for _, meta := range metas {
|
||||
versions = append(versions, meta.Version)
|
||||
}
|
||||
|
||||
if !containsVersion(versions, "3.5.8") {
|
||||
t.Fatalf("expected tdengine historical version 3.5.8 to remain selectable, got %v", versions)
|
||||
}
|
||||
if !containsVersion(versions, "3.3.1") {
|
||||
t.Fatalf("expected tdengine historical version 3.3.1 to remain selectable, got %v", versions)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveRecentDriverVersionMetasFallsBackToHistoricalTDengineMatrix(t *testing.T) {
|
||||
driverModuleVersionMu.Lock()
|
||||
original := driverModuleVersionMap
|
||||
driverModuleVersionMap = map[string]goModuleVersionListCacheEntry{}
|
||||
driverModuleVersionMu.Unlock()
|
||||
t.Cleanup(func() {
|
||||
driverModuleVersionMu.Lock()
|
||||
driverModuleVersionMap = original
|
||||
driverModuleVersionMu.Unlock()
|
||||
})
|
||||
|
||||
metas := resolveRecentDriverVersionMetas("tdengine", driverRecentVersionLimit)
|
||||
versions := make([]string, 0, len(metas))
|
||||
for _, meta := range metas {
|
||||
versions = append(versions, meta.Version)
|
||||
}
|
||||
|
||||
if !containsVersion(versions, "3.5.8") {
|
||||
t.Fatalf("expected tdengine fallback list to include 3.5.8, got %v", versions)
|
||||
}
|
||||
if !containsVersion(versions, "3.3.1") {
|
||||
t.Fatalf("expected tdengine fallback list to include 3.3.1, got %v", versions)
|
||||
}
|
||||
}
|
||||
|
||||
func TestShouldForceSourceBuildForResolvedDownload(t *testing.T) {
|
||||
if !shouldForceSourceBuildForResolvedDownload("mongodb", "1.17.4", "builtin://activate/mongodb?channel=history&version=1.17.4") {
|
||||
t.Fatal("expected mongodb v1 builtin install to keep source build mode")
|
||||
@@ -308,6 +378,48 @@ func cloneInt64Map(src map[string]int64) map[string]int64 {
|
||||
return cloned
|
||||
}
|
||||
|
||||
func seedGoModuleVersionCache(t *testing.T, modulePath string, versions []string) {
|
||||
t.Helper()
|
||||
|
||||
driverModuleVersionMu.Lock()
|
||||
original := make(map[string]goModuleVersionListCacheEntry, len(driverModuleVersionMap))
|
||||
for key, value := range driverModuleVersionMap {
|
||||
original[key] = goModuleVersionListCacheEntry{
|
||||
LoadedAt: value.LoadedAt,
|
||||
Versions: append([]goModuleVersionMeta(nil), value.Versions...),
|
||||
Err: value.Err,
|
||||
}
|
||||
}
|
||||
driverModuleVersionMap[modulePath] = goModuleVersionListCacheEntry{
|
||||
LoadedAt: time.Now(),
|
||||
Versions: mapVersionsToMetas(versions),
|
||||
}
|
||||
driverModuleVersionMu.Unlock()
|
||||
|
||||
t.Cleanup(func() {
|
||||
driverModuleVersionMu.Lock()
|
||||
driverModuleVersionMap = original
|
||||
driverModuleVersionMu.Unlock()
|
||||
})
|
||||
}
|
||||
|
||||
func mapVersionsToMetas(versions []string) []goModuleVersionMeta {
|
||||
result := make([]goModuleVersionMeta, 0, len(versions))
|
||||
for _, version := range versions {
|
||||
result = append(result, goModuleVersionMeta{Version: version})
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func containsVersion(versions []string, target string) bool {
|
||||
for _, version := range versions {
|
||||
if version == target {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func chdirTemp(t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user