From 7e45cb6cc472019c74bc5935fef643dd546d33f3 Mon Sep 17 00:00:00 2001 From: Eric Weaver Date: Mon, 27 Apr 2026 16:09:37 -0400 Subject: [PATCH 1/2] Fix typo in VACUUM keyword --- normalizer_test.go | 9 +++++++++ sqllexer_test.go | 22 ++++++++++++++++++++++ sqllexer_utils.go | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/normalizer_test.go b/normalizer_test.go index 75d8017..adac5e4 100644 --- a/normalizer_test.go +++ b/normalizer_test.go @@ -524,6 +524,15 @@ func TestNormalizerFormatting(t *testing.T) { expected: "SELECT * FROM discount WHERE description LIKE ?", uppercaseKeywords: true, }, + { + queries: []string{ + "vacuum analyze my_table", + "VACUUM ANALYZE my_table", + "Vacuum Analyze my_table", + }, + expected: "VACUUM ANALYZE my_table", + uppercaseKeywords: true, + }, } for _, test := range tests { diff --git a/sqllexer_test.go b/sqllexer_test.go index 50e6810..fe4bcb2 100644 --- a/sqllexer_test.go +++ b/sqllexer_test.go @@ -1040,6 +1040,28 @@ here */`, {IDENT, "test"}, }, }, + { + name: "VACUUM should be classified as KEYWORD not IDENT", + input: "VACUUM ANALYZE my_table", + expected: []TokenSpec{ + {KEYWORD, "VACUUM"}, + {SPACE, " "}, + {KEYWORD, "ANALYZE"}, + {SPACE, " "}, + {IDENT, "my_table"}, + }, + }, + { + name: "vacuum lowercase should be classified as KEYWORD", + input: "vacuum analyze my_table", + expected: []TokenSpec{ + {KEYWORD, "vacuum"}, + {SPACE, " "}, + {KEYWORD, "analyze"}, + {SPACE, " "}, + {IDENT, "my_table"}, + }, + }, } for _, tt := range tests { diff --git a/sqllexer_utils.go b/sqllexer_utils.go index 0e31cc9..e52d981 100644 --- a/sqllexer_utils.go +++ b/sqllexer_utils.go @@ -135,7 +135,7 @@ var keywords = []string{ "ROLLUP", "LITERAL", "WINDOW", - "VACCUM", + "VACUUM", "ANALYZE", "ILIKE", "USING", From 08d160b76962d59edb6e63991fcd651533bb613c Mon Sep 17 00:00:00 2001 From: Eric Weaver Date: Mon, 27 Apr 2026 16:13:20 -0400 Subject: [PATCH 2/2] VACUUM keyword should be parsed as a command --- normalizer_test.go | 11 +++++++++++ sqllexer_test.go | 8 ++++---- sqllexer_utils.go | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/normalizer_test.go b/normalizer_test.go index adac5e4..79fbda1 100644 --- a/normalizer_test.go +++ b/normalizer_test.go @@ -403,6 +403,17 @@ multiline comment */ Size: 7, }, }, + { + input: "VACUUM ANALYZE my_table", + expected: "VACUUM ANALYZE my_table", + statementMetadata: StatementMetadata{ + Tables: []string{}, + Comments: []string{}, + Commands: []string{"VACUUM"}, + Procedures: []string{}, + Size: 6, + }, + }, } normalizer := NewNormalizer( diff --git a/sqllexer_test.go b/sqllexer_test.go index fe4bcb2..1a127f4 100644 --- a/sqllexer_test.go +++ b/sqllexer_test.go @@ -1041,10 +1041,10 @@ here */`, }, }, { - name: "VACUUM should be classified as KEYWORD not IDENT", + name: "VACUUM should be classified as COMMAND", input: "VACUUM ANALYZE my_table", expected: []TokenSpec{ - {KEYWORD, "VACUUM"}, + {COMMAND, "VACUUM"}, {SPACE, " "}, {KEYWORD, "ANALYZE"}, {SPACE, " "}, @@ -1052,10 +1052,10 @@ here */`, }, }, { - name: "vacuum lowercase should be classified as KEYWORD", + name: "vacuum lowercase should be classified as COMMAND", input: "vacuum analyze my_table", expected: []TokenSpec{ - {KEYWORD, "vacuum"}, + {COMMAND, "vacuum"}, {SPACE, " "}, {KEYWORD, "analyze"}, {SPACE, " "}, diff --git a/sqllexer_utils.go b/sqllexer_utils.go index e52d981..ab717de 100644 --- a/sqllexer_utils.go +++ b/sqllexer_utils.go @@ -57,6 +57,7 @@ var commands = []string{ "STRAIGHT_JOIN", "USE", "CLONE", + "VACUUM", } var tableIndicatorCommands = []string{ @@ -135,7 +136,6 @@ var keywords = []string{ "ROLLUP", "LITERAL", "WINDOW", - "VACUUM", "ANALYZE", "ILIKE", "USING",