From 54687072892a4ac0d29484bbbbba3c5be2b23e11 Mon Sep 17 00:00:00 2001 From: 7y-9 Date: Sat, 13 Jun 2026 01:10:27 +0800 Subject: [PATCH] fix(util): ignore comment only sql input (#9933) * fix(util): ignore comment only sql input Problem: sqlutil.SplitStatements strips SQL comments while scanning, but when no statements remain it falls back to returning the original query. Inputs that contain only comments are therefore reported as executable SQL statements. Root cause: The no-statements fallback did not distinguish a real single statement from input that had been fully removed by comment filtering. Fix: Remove the original-query fallback and return an explicit empty slice when scanning produces no statements. Reproduction: env GOCACHE=/private/tmp/seaweedfs-go-cache go test ./weed/util/sqlutil -run TestSplitStatements -count=1 failed before the fix because comment-only inputs returned the comment text as a statement. Validation: gofmt -w weed/util/sqlutil/splitter.go weed/util/sqlutil/splitter_test.go; env GOCACHE=/private/tmp/seaweedfs-go-cache go test ./weed/util/sqlutil -run TestSplitStatements -count=1; env GOCACHE=/private/tmp/seaweedfs-go-cache go test ./weed/util/sqlutil -count=1; git diff --check; git diff --cached --check. Duplicate check: Searched /private/tmp/seaweedfs-codex0610-old-branch-index.tsv and existing tests for sqlutil, SplitStatements, comments, and comment-only. Old PostgreSQL query branches cover malformed wire frames and SQL engine numeric parsing, not comment-only statement splitting. Co-authored-by: Codex * Update weed/util/sqlutil/splitter.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: Codex Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- weed/util/sqlutil/splitter.go | 4 +--- weed/util/sqlutil/splitter_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/weed/util/sqlutil/splitter.go b/weed/util/sqlutil/splitter.go index 098a7ecb3..a9d6befa9 100644 --- a/weed/util/sqlutil/splitter.go +++ b/weed/util/sqlutil/splitter.go @@ -133,10 +133,8 @@ func SplitStatements(query string) []string { } } - // If no statements found, return the original query as a single statement if len(statements) == 0 { - return []string{strings.TrimSpace(strings.TrimSuffix(strings.TrimSpace(query), ";"))} + return []string{} } - return statements } diff --git a/weed/util/sqlutil/splitter_test.go b/weed/util/sqlutil/splitter_test.go index 91fac6196..13f3baf2b 100644 --- a/weed/util/sqlutil/splitter_test.go +++ b/weed/util/sqlutil/splitter_test.go @@ -96,6 +96,16 @@ func TestSplitStatements(t *testing.T) { input: " \n\t ", expected: []string{}, }, + { + name: "Only single line comment", + input: "-- just a comment", + expected: []string{}, + }, + { + name: "Only multi-line comment", + input: "/* just a comment; with separator */", + expected: []string{}, + }, } for _, tt := range tests {