diff options
Diffstat (limited to 'weed/query/engine/cockroach_parser_success_test.go')
| -rw-r--r-- | weed/query/engine/cockroach_parser_success_test.go | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/weed/query/engine/cockroach_parser_success_test.go b/weed/query/engine/cockroach_parser_success_test.go new file mode 100644 index 000000000..499d0c28e --- /dev/null +++ b/weed/query/engine/cockroach_parser_success_test.go @@ -0,0 +1,102 @@ +package engine + +import ( + "context" + "testing" +) + +// TestCockroachDBParserSuccess demonstrates the successful integration of CockroachDB's parser +// This test validates that all previously problematic SQL expressions now work correctly +func TestCockroachDBParserSuccess(t *testing.T) { + engine := NewTestSQLEngine() + + testCases := []struct { + name string + sql string + expected string + desc string + }{ + { + name: "Basic_Function", + sql: "SELECT LENGTH('hello') FROM user_events LIMIT 1", + expected: "5", + desc: "Simple function call", + }, + { + name: "Function_Arithmetic", + sql: "SELECT LENGTH('hello') + 10 FROM user_events LIMIT 1", + expected: "15", + desc: "Function with arithmetic operation (original user issue)", + }, + { + name: "User_Original_Query", + sql: "SELECT length(trim(' hello world ')) + 12 FROM user_events LIMIT 1", + expected: "23", + desc: "User's exact original failing query - now fixed!", + }, + { + name: "String_Concatenation", + sql: "SELECT 'hello' || 'world' FROM user_events LIMIT 1", + expected: "helloworld", + desc: "Basic string concatenation", + }, + { + name: "Function_With_Concat", + sql: "SELECT LENGTH('hello' || 'world') FROM user_events LIMIT 1", + expected: "10", + desc: "Function with string concatenation argument", + }, + { + name: "Multiple_Arithmetic", + sql: "SELECT LENGTH('test') * 3 FROM user_events LIMIT 1", + expected: "12", + desc: "Function with multiplication", + }, + { + name: "Nested_Functions", + sql: "SELECT LENGTH(UPPER('hello')) FROM user_events LIMIT 1", + expected: "5", + desc: "Nested function calls", + }, + { + name: "Column_Alias", + sql: "SELECT LENGTH('test') AS test_length FROM user_events LIMIT 1", + expected: "4", + desc: "Column alias functionality (AS keyword)", + }, + } + + successCount := 0 + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + result, err := engine.ExecuteSQL(context.Background(), tc.sql) + + if err != nil { + t.Errorf("❌ %s - Query failed: %v", tc.desc, err) + return + } + + if result.Error != nil { + t.Errorf("❌ %s - Query result error: %v", tc.desc, result.Error) + return + } + + if len(result.Rows) == 0 { + t.Errorf("❌ %s - Expected at least one row", tc.desc) + return + } + + actual := result.Rows[0][0].ToString() + + if actual == tc.expected { + t.Logf("SUCCESS: %s → %s", tc.desc, actual) + successCount++ + } else { + t.Errorf("FAIL %s - Expected '%s', got '%s'", tc.desc, tc.expected, actual) + } + }) + } + + t.Logf("CockroachDB Parser Integration: %d/%d tests passed!", successCount, len(testCases)) +} |
