diff --git a/internal/app/methods_driver.go b/internal/app/methods_driver.go index 6f8e26e..62179f7 100644 --- a/internal/app/methods_driver.go +++ b/internal/app/methods_driver.go @@ -4205,12 +4205,28 @@ func currentDriverReleaseTag() string { if currentVersion == "" || currentVersion == "0.0.0" { return "" } - if strings.HasPrefix(strings.ToLower(currentVersion), "dev-") { + if isDevelopmentDriverReleaseVersion(currentVersion) { return driverReleaseDevTag } return "v" + currentVersion } +func isDevelopmentDriverReleaseVersion(version string) bool { + normalized := strings.ToLower(strings.TrimSpace(normalizeVersion(version))) + if normalized == "" || normalized == "0.0.0" { + return false + } + if strings.HasPrefix(normalized, "dev-") { + return true + } + for _, marker := range []string{"-dev", "-test", "-local", "-snapshot"} { + if strings.Contains(normalized, marker) { + return true + } + } + return false +} + func driverReleaseDownloadURL(tag string, assetName string) string { tagName := strings.TrimSpace(tag) asset := strings.TrimSpace(assetName) diff --git a/internal/app/methods_driver_agent_revision_test.go b/internal/app/methods_driver_agent_revision_test.go index 0a09c9c..59aa051 100644 --- a/internal/app/methods_driver_agent_revision_test.go +++ b/internal/app/methods_driver_agent_revision_test.go @@ -142,6 +142,7 @@ func optionalDriverAgentRevisionTestDrivers(t *testing.T) []string { "mongodb", "tdengine", "clickhouse", + "elasticsearch", } for _, driverType := range drivers { if db.OptionalDriverAgentRevision(driverType) == "" { diff --git a/internal/app/methods_driver_version_test.go b/internal/app/methods_driver_version_test.go index f2875d0..22a5967 100644 --- a/internal/app/methods_driver_version_test.go +++ b/internal/app/methods_driver_version_test.go @@ -54,6 +54,32 @@ func TestCurrentDriverReleaseTagUsesDevLatestForDevBuild(t *testing.T) { } } +func TestCurrentDriverReleaseTagUsesDevLatestForLocalTestBuild(t *testing.T) { + originalVersion := AppVersion + t.Cleanup(func() { + AppVersion = originalVersion + }) + + for _, version := range []string{"0.0.1-test", "0.7.9-dev", "0.7.9-local", "0.7.9-SNAPSHOT"} { + AppVersion = version + if got := currentDriverReleaseTag(); got != driverReleaseDevTag { + t.Fatalf("expected %s to use dev driver release tag %q, got %q", version, driverReleaseDevTag, got) + } + } +} + +func TestCurrentDriverReleaseTagUsesVersionedReleaseForStableBuild(t *testing.T) { + originalVersion := AppVersion + AppVersion = "0.7.9" + t.Cleanup(func() { + AppVersion = originalVersion + }) + + if got := currentDriverReleaseTag(); got != "v0.7.9" { + t.Fatalf("expected stable driver release tag v0.7.9, got %q", got) + } +} + func TestResolveOptionalDriverBundleDownloadURLsUsesDriverReleaseRepo(t *testing.T) { originalVersion := AppVersion AppVersion = "0.7.4" diff --git a/internal/db/driver_agent_revisions_gen.go b/internal/db/driver_agent_revisions_gen.go index d1041fb..8149ac1 100644 --- a/internal/db/driver_agent_revisions_gen.go +++ b/internal/db/driver_agent_revisions_gen.go @@ -4,23 +4,23 @@ package db func init() { optionalDriverAgentRevisions = map[string]string{ - "mariadb": "src-0a4176f4b5743323", - "oceanbase": "src-e996325fd6d52648", - "diros": "src-cc11b882e28fa5d4", - "starrocks": "src-83a6d81c91c7f5c8", - "sphinx": "src-a70c2cd4d223dac2", - "sqlserver": "src-84553484c72e7253", - "sqlite": "src-762863d48f653b89", - "duckdb": "src-3e551d777ae96d8d", - "dameng": "src-596bebeaa016fc74", - "kingbase": "src-2e5a1337b0405c57", - "highgo": "src-5a29a1d3685eb6b4", - "vastbase": "src-e3cfef65512feb23", - "opengauss": "src-58227ba3bc1ec894", - "iris": "src-1b072c57af08bec4", - "mongodb": "src-57fdd8bfebdcd46e", - "tdengine": "src-939715f94df1ec9c", + "mariadb": "src-0a4176f4b5743323", + "oceanbase": "src-e996325fd6d52648", + "diros": "src-cc11b882e28fa5d4", + "starrocks": "src-83a6d81c91c7f5c8", + "sphinx": "src-a70c2cd4d223dac2", + "sqlserver": "src-84553484c72e7253", + "sqlite": "src-762863d48f653b89", + "duckdb": "src-3e551d777ae96d8d", + "dameng": "src-596bebeaa016fc74", + "kingbase": "src-2e5a1337b0405c57", + "highgo": "src-5a29a1d3685eb6b4", + "vastbase": "src-e3cfef65512feb23", + "opengauss": "src-58227ba3bc1ec894", + "iris": "src-1b072c57af08bec4", + "mongodb": "src-57fdd8bfebdcd46e", + "tdengine": "src-939715f94df1ec9c", "clickhouse": "src-482d62ed565b3e69", - "elasticsearch": "src-local", + "elasticsearch": "src-62e8aa80212bd2e4", } } diff --git a/internal/db/driver_support_test.go b/internal/db/driver_support_test.go index bcdedb0..18df3a7 100644 --- a/internal/db/driver_support_test.go +++ b/internal/db/driver_support_test.go @@ -33,9 +33,13 @@ func TestBuiltinLikeDriversRemainAvailable(t *testing.T) { func TestOptionalDriverAgentRevisionsGeneratedForOptionalDrivers(t *testing.T) { for driverType := range optionalGoDrivers { - if revision := OptionalDriverAgentRevision(driverType); revision == "" { + revision := OptionalDriverAgentRevision(driverType) + if revision == "" { t.Fatalf("%s 缺少自动生成的 driver-agent revision", driverType) } + if revision == "src-local" { + t.Fatalf("%s driver-agent revision 仍是本地占位值", driverType) + } } if OptionalDriverAgentRevision("doris") != OptionalDriverAgentRevision("diros") { t.Fatalf("doris/diros revision 应归一一致") diff --git a/tools/complete-driver-release-assets.py b/tools/complete-driver-release-assets.py index 4c26a72..07ab366 100644 --- a/tools/complete-driver-release-assets.py +++ b/tools/complete-driver-release-assets.py @@ -27,9 +27,11 @@ DRIVERS = [ "highgo", "vastbase", "opengauss", + "iris", "mongodb", "tdengine", "clickhouse", + "elasticsearch", ] BUNDLE_NAME = "GoNavi-DriverAgents.zip" diff --git a/tools/detect-changed-driver-agents.sh b/tools/detect-changed-driver-agents.sh index 5699358..9d87f3d 100644 --- a/tools/detect-changed-driver-agents.sh +++ b/tools/detect-changed-driver-agents.sh @@ -7,7 +7,7 @@ cd "$SCRIPT_DIR" SCRIPT_DIR_WINDOWS="$(pwd -W 2>/dev/null || true)" SCRIPT_DIR_WINDOWS="${SCRIPT_DIR_WINDOWS//\\//}" -DEFAULT_DRIVERS=(mariadb oceanbase doris starrocks sphinx sqlserver sqlite duckdb dameng kingbase highgo vastbase opengauss iris mongodb tdengine clickhouse) +DEFAULT_DRIVERS=(mariadb oceanbase doris starrocks sphinx sqlserver sqlite duckdb dameng kingbase highgo vastbase opengauss iris mongodb tdengine clickhouse elasticsearch) TARGET_PLATFORMS=(darwin/amd64 darwin/arm64 windows/amd64 windows/arm64 linux/amd64) usage() { @@ -50,6 +50,7 @@ normalize_driver() { case "$value" in doris|diros) echo "doris" ;; open_gauss|open-gauss) echo "opengauss" ;; + elastic|elasticsearch) echo "elasticsearch" ;; mariadb|oceanbase|starrocks|sphinx|sqlserver|sqlite|duckdb|dameng|kingbase|highgo|vastbase|opengauss|iris|mongodb|tdengine|clickhouse) echo "$value" ;; @@ -158,6 +159,7 @@ driver_tokens_from_text() { case "$text" in *mongodb*) emit_driver_token mongodb ;; esac case "$text" in *tdengine*) emit_driver_token tdengine ;; esac case "$text" in *clickhouse*) emit_driver_token clickhouse ;; esac + case "$text" in *elasticsearch*) emit_driver_token elasticsearch ;; esac case "$text" in *github.com/go-sql-driver/mysql*) @@ -184,6 +186,7 @@ driver_tokens_from_text() { case "$text" in *go.mongodb.org/mongo-driver*|*go.mongodb.org/mongo-driver/v2*) emit_driver_token mongodb ;; esac case "$text" in *github.com/taosdata/driver-go/v3*) emit_driver_token tdengine ;; esac case "$text" in *github.com/clickhouse/clickhouse-go/v2*|*github.com/clickhouse/ch-go*) emit_driver_token clickhouse ;; esac + case "$text" in *github.com/elastic/go-elasticsearch/v8*) emit_driver_token elasticsearch ;; esac } emit_driver_token() { diff --git a/tools/generate-driver-agent-revisions.sh b/tools/generate-driver-agent-revisions.sh index c417572..4557ec6 100755 --- a/tools/generate-driver-agent-revisions.sh +++ b/tools/generate-driver-agent-revisions.sh @@ -27,6 +27,7 @@ normalize_driver() { doris|diros) echo "diros" ;; oceanbase) echo "oceanbase" ;; opengauss|open_gauss|open-gauss) echo "opengauss" ;; + elastic|elasticsearch) echo "elasticsearch" ;; mariadb|diros|starrocks|sphinx|sqlserver|sqlite|duckdb|dameng|kingbase|highgo|vastbase|iris|mongodb|tdengine|clickhouse) echo "$value" ;; @@ -130,7 +131,9 @@ iris:internal/db/iris_impl.go|\ mongodb:internal/db/mongodb_impl.go|\ mongodb:internal/db/mongodb_impl_v1.go|\ tdengine:internal/db/tdengine_impl.go|\ -clickhouse:internal/db/clickhouse_impl.go) +clickhouse:internal/db/clickhouse_impl.go|\ +elasticsearch:internal/db/elasticsearch_helpers.go|\ +elasticsearch:internal/db/elasticsearch_impl.go) return 0 ;; esac