diff --git a/normalizer_test.go b/normalizer_test.go index 75d8017..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( @@ -524,6 +535,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..1a127f4 100644 --- a/sqllexer_test.go +++ b/sqllexer_test.go @@ -1040,6 +1040,28 @@ here */`, {IDENT, "test"}, }, }, + { + name: "VACUUM should be classified as COMMAND", + input: "VACUUM ANALYZE my_table", + expected: []TokenSpec{ + {COMMAND, "VACUUM"}, + {SPACE, " "}, + {KEYWORD, "ANALYZE"}, + {SPACE, " "}, + {IDENT, "my_table"}, + }, + }, + { + name: "vacuum lowercase should be classified as COMMAND", + input: "vacuum analyze my_table", + expected: []TokenSpec{ + {COMMAND, "vacuum"}, + {SPACE, " "}, + {KEYWORD, "analyze"}, + {SPACE, " "}, + {IDENT, "my_table"}, + }, + }, } for _, tt := range tests { diff --git a/sqllexer_utils.go b/sqllexer_utils.go index 0e31cc9..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", - "VACCUM", "ANALYZE", "ILIKE", "USING",