aboutsummaryrefslogtreecommitdiff
path: root/weed/query/engine/cockroach_parser_success_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/query/engine/cockroach_parser_success_test.go')
-rw-r--r--weed/query/engine/cockroach_parser_success_test.go102
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))
+}