Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions lexer/lexer.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,9 @@ func (l *Lexer) readLineComment() Item {
sb.WriteRune(l.ch)
l.readChar()
}
return Item{Token: token.COMMENT, Value: sb.String(), Pos: pos}
// Strip trailing semicolon from comment - it's a statement terminator, not part of comment
text := strings.TrimRight(sb.String(), ";")
return Item{Token: token.COMMENT, Value: text, Pos: pos}
}

func (l *Lexer) readHashComment() Item {
Expand All @@ -297,7 +299,9 @@ func (l *Lexer) readHashComment() Item {
sb.WriteRune(l.ch)
l.readChar()
}
return Item{Token: token.COMMENT, Value: sb.String(), Pos: pos}
// Strip trailing semicolon from comment - it's a statement terminator, not part of comment
text := strings.TrimRight(sb.String(), ";")
return Item{Token: token.COMMENT, Value: text, Pos: pos}
}

// readUnicodeMinusComment reads from a unicode minus (U+2212) to the end of line or semicolon.
Expand Down
15 changes: 12 additions & 3 deletions parser/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@ func normalizeWhitespace(s string) string {
return strings.TrimSpace(whitespaceRegex.ReplaceAllString(s, " "))
}

// normalizeForFormat normalizes SQL for format comparison by collapsing
// whitespace and stripping trailing semicolons. This allows comparing
// formatted output regardless of whether the original had trailing semicolons.
func normalizeForFormat(s string) string {
normalized := normalizeWhitespace(s)
// Strip trailing semicolon if present
return strings.TrimSuffix(normalized, ";")
}

// checkSkipped runs skipped todo tests to see which ones now pass.
// Use with: go test ./parser -check-skipped -v
var checkSkipped = flag.Bool("check-skipped", false, "Run skipped todo tests to see which ones now pass")
Expand Down Expand Up @@ -191,9 +200,9 @@ func TestParser(t *testing.T) {
if !metadata.TodoFormat || *checkFormat {
formatted := parser.Format(stmts)
expected := strings.TrimSpace(query)
// Compare with whitespace normalization to ignore formatting differences
formattedNorm := normalizeWhitespace(formatted)
expectedNorm := normalizeWhitespace(expected)
// Compare with format normalization (whitespace + trailing semicolons)
formattedNorm := normalizeForFormat(formatted)
expectedNorm := normalizeForFormat(expected)
if formattedNorm != expectedNorm {
if metadata.TodoFormat {
if *checkFormat {
Expand Down
2 changes: 1 addition & 1 deletion parser/testdata/00001_count_hits/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00001_select_1/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00002_count_visits/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00003_reinterpret_as_string/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00005_filtering/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00006_agregates/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00008_array_join/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00008_uniq/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00009_uniq_distributed/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00011_sorting/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00012_sorting_distributed/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00013_sorting_of_nested/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00014_filtering_arrays/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00030_array_enumerate_uniq/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00032_fixed_string_to_string/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00033_fixed_string_to_string/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00034_fixed_string_to_number/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00041_aggregation_remap/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00042_set/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00048_min_max/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00049_max_string_if/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00050_min_max/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00051_min_max_array/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00060_date_lut/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00142_system_columns/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/00292_parser_tuple_element/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/01072_select_constant_limit/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/01097_pre_limit/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/01295_aggregation_bug_11413/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/01514_tid_function/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/02233_with_total_empty_chunk/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
2 changes: 1 addition & 1 deletion parser/testdata/03299_map_named_tuple/metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"todo_format":true}
{}