From eba6853480aecb7644bdc445519d250526bab00e Mon Sep 17 00:00:00 2001 From: zipg Date: Mon, 14 Sep 2026 19:08:39 +0800 Subject: [PATCH] fix(agents): lower legacy native agents to Go 1.20.14 --- .github/workflows/agents-release.yml | 8 +++---- .../kingbase-go/bench/agent_compare.go | 6 ++++- agents/drivers/kingbase-go/go.mod | 2 +- agents/drivers/kingbase-go/main.go | 22 ++++++++++++++++--- agents/drivers/kingbase-go/main_test.go | 12 +++++----- agents/drivers/xugu/go.mod | 2 +- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/.github/workflows/agents-release.yml b/.github/workflows/agents-release.yml index a6e7a4ec34..db8143d455 100644 --- a/.github/workflows/agents-release.yml +++ b/.github/workflows/agents-release.yml @@ -169,7 +169,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.22.x" + go-version: "1.20.14" - name: Test Oracle native agent working-directory: agents/drivers/oracle-go run: go test ./... @@ -222,7 +222,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.22.x" + go-version: "1.20.14" - name: Test Xugu native agent working-directory: agents/drivers/xugu run: GONOSUMDB=gitee.com/XuguDB/go-xugu-driver go test ./... @@ -262,7 +262,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.22.x" + go-version: "1.20.14" - name: Test RabbitMQ native agent working-directory: agents/drivers/rabbitmq run: go test ./... @@ -595,7 +595,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.22.x" + go-version: "1.20.14" - name: Test Kingbase native agent working-directory: agents/drivers/kingbase-go run: go test ./... diff --git a/agents/drivers/kingbase-go/bench/agent_compare.go b/agents/drivers/kingbase-go/bench/agent_compare.go index dd4ac6e4bb..0e7e078898 100644 --- a/agents/drivers/kingbase-go/bench/agent_compare.go +++ b/agents/drivers/kingbase-go/bench/agent_compare.go @@ -316,9 +316,13 @@ func runQueryBenchmark(process *agentProcess, duration time.Duration, concurrenc total += value } count := operations.Load() + sampleCount := len(merged) + if sampleCount < 1 { + sampleCount = 1 + } return benchmarkResult{ Concurrency: concurrency, Operations: count, Errors: failures.Load(), DurationMS: float64(elapsed.Microseconds()) / 1000, - QPS: float64(count) / elapsed.Seconds(), MeanMS: total / float64(max(1, len(merged))), + QPS: float64(count) / elapsed.Seconds(), MeanMS: total / float64(sampleCount), P50MS: percentile(merged, 0.50), P95MS: percentile(merged, 0.95), P99MS: percentile(merged, 0.99), PeakRSSKB: peakRSS.Load(), } diff --git a/agents/drivers/kingbase-go/go.mod b/agents/drivers/kingbase-go/go.mod index 84655538fc..e0a86c0cd2 100644 --- a/agents/drivers/kingbase-go/go.mod +++ b/agents/drivers/kingbase-go/go.mod @@ -1,5 +1,5 @@ module github.com/t8y2/dbx/agents/drivers/kingbase-go -go 1.22 +go 1.20 require gitea.com/kingbase/gokb v0.0.0-20201021123113-29bd62a876c3 diff --git a/agents/drivers/kingbase-go/main.go b/agents/drivers/kingbase-go/main.go index 49a79e5c9a..b0a891324a 100644 --- a/agents/drivers/kingbase-go/main.go +++ b/agents/drivers/kingbase-go/main.go @@ -880,11 +880,27 @@ func (s *server) closeAllQuerySessions() { } } +// minInt/maxInt replace the Go 1.21 builtins so the module stays go 1.20 +// compatible for the Windows 7 toolchain build. +func minInt(a, b int) int { + if a < b { + return a + } + return b +} + +func maxInt(a, b int) int { + if a > b { + return a + } + return b +} + func readQuerySessionPage(session *querySession, pageSize int) (queryPageResult, error) { if pageSize <= 0 { pageSize = 100 } - capacity := min(pageSize, session.remaining) + capacity := minInt(pageSize, session.remaining) result := queryPageResult{Columns: session.columns, ColumnTypes: session.columnTypes, Rows: make([][]any, 0, capacity)} for len(result.Rows) < pageSize && session.remaining > 0 { if session.pending != nil { @@ -925,7 +941,7 @@ func readRows(rows *sql.Rows, maxRows int) (queryResult, error) { } columns = nonNilStrings(columns) columnTypes := columnTypeNames(rows) - result := queryResult{Columns: columns, ColumnTypes: columnTypes, Rows: make([][]any, 0, min(maxRows, 1024))} + result := queryResult{Columns: columns, ColumnTypes: columnTypes, Rows: make([][]any, 0, minInt(maxRows, 1024))} for rows.Next() { if len(result.Rows) >= maxRows { result.Truncated = true @@ -1814,7 +1830,7 @@ func hasTopLevelSQLKeyword(sqlText string, index int, target string) bool { case '(': depth++ case ')': - depth = max(depth-1, 0) + depth = maxInt(depth-1, 0) default: if depth == 0 && isSQLWordStartByte(sqlText[index]) { keyword, next := sqlKeywordAt(sqlText, index) diff --git a/agents/drivers/kingbase-go/main_test.go b/agents/drivers/kingbase-go/main_test.go index 52b06157f4..656cc25627 100644 --- a/agents/drivers/kingbase-go/main_test.go +++ b/agents/drivers/kingbase-go/main_test.go @@ -1448,7 +1448,7 @@ func TestListIndexesFallsBackWhenWithOrdinalityIsUnsupported(t *testing.T) { server := newServer() server.db = openMetadataDB(t, state) - for range 2 { + for i := 0; i < 2; i++ { indexes, err := server.listIndexes("PUBLIC", "orders") if err != nil { t.Fatal(err) @@ -1939,7 +1939,7 @@ func TestListTriggerDefinitionsFallsBackToSingleArgument(t *testing.T) { server := newServer() server.db = openMetadataDB(t, state) - for range 2 { + for i := 0; i < 2; i++ { definitions, err := server.listTriggerDefinitions("PUBLIC", "orders") if err != nil { t.Fatal(err) @@ -1973,7 +1973,7 @@ func TestListTriggersFallsBackToV7InternalPredicate(t *testing.T) { server := newServer() server.db = openMetadataDB(t, state) - for range 2 { + for i := 0; i < 2; i++ { triggers, err := server.listTriggers("PUBLIC", "orders") if err != nil { t.Fatal(err) @@ -3442,7 +3442,7 @@ func TestObjectSourceFallsBackToV7RoutineDDLAndCachesChoice(t *testing.T) { server := newServer() server.db = openMetadataDB(t, state) - for range 2 { + for i := 0; i < 2; i++ { source, err := server.getObjectSource("PUBLIC", "format_name", "FUNCTION") if err != nil { t.Fatal(err) @@ -4274,7 +4274,7 @@ func TestSchemaConnSkipsInitialAndRepeatedEmptySchema(t *testing.T) { server := newServer() server.db = db - for range 2 { + for i := 0; i < 2; i++ { conn, err := server.schemaConn(context.Background(), "") if err != nil { t.Fatal(err) @@ -4400,7 +4400,7 @@ func TestExecuteQueryReappliesSchemaForRepeatedRequests(t *testing.T) { server := newServer() server.db = db - for range 2 { + for i := 0; i < 2; i++ { if _, err := server.executeQuery(queryOptions{SQL: "SELECT 1", Schema: "sdy_smartsite", MaxRows: 10}); err != nil { t.Fatal(err) } diff --git a/agents/drivers/xugu/go.mod b/agents/drivers/xugu/go.mod index acc70480f7..a4d614c69d 100644 --- a/agents/drivers/xugu/go.mod +++ b/agents/drivers/xugu/go.mod @@ -1,5 +1,5 @@ module github.com/t8y2/dbx/agents/drivers/xugu -go 1.22 +go 1.20 require gitee.com/XuguDB/go-xugu-driver v1.0.12