You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							102 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							102 lines
						
					
					
						
							2.7 KiB
						
					
					
				| 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)) | |
| }
 |