3 changed files with 10 additions and 85 deletions
-
13weed/query/engine/engine.go
-
7weed/query/engine/offset_test.go
-
75weed/query/engine/time_filter_test.go
@ -1,75 +0,0 @@ |
|||||
package engine |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"testing" |
|
||||
) |
|
||||
|
|
||||
// TestTimeColumnRecognition tests the recognition of time-related columns
|
|
||||
func TestTimeColumnRecognition(t *testing.T) { |
|
||||
engine := NewTestSQLEngine() |
|
||||
|
|
||||
timeColumns := []string{ |
|
||||
"_timestamp_ns", |
|
||||
"timestamp", |
|
||||
"created_at", |
|
||||
"updated_at", |
|
||||
"event_time", |
|
||||
"log_time", |
|
||||
"ts", |
|
||||
} |
|
||||
|
|
||||
nonTimeColumns := []string{ |
|
||||
"user_id", |
|
||||
"name", |
|
||||
"data", |
|
||||
"count", |
|
||||
"value", |
|
||||
} |
|
||||
|
|
||||
// Test time columns are recognized
|
|
||||
for _, col := range timeColumns { |
|
||||
if !engine.isTimeColumn(col) { |
|
||||
t.Errorf("Time column '%s' not recognized", col) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// Test non-time columns are not recognized
|
|
||||
for _, col := range nonTimeColumns { |
|
||||
if engine.isTimeColumn(col) { |
|
||||
t.Errorf("Non-time column '%s' incorrectly recognized as time", col) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// Test case insensitive matching
|
|
||||
if !engine.isTimeColumn("TIMESTAMP") || !engine.isTimeColumn("Timestamp") { |
|
||||
t.Error("Time column matching should be case-insensitive") |
|
||||
} |
|
||||
|
|
||||
t.Log("Time column recognition working correctly") |
|
||||
} |
|
||||
|
|
||||
// TestTimeFilterIntegration tests the full integration of time filters with SELECT queries
|
|
||||
func TestTimeFilterIntegration(t *testing.T) { |
|
||||
engine := NewTestSQLEngine() |
|
||||
|
|
||||
// Test that time filters are properly extracted and used in SELECT queries
|
|
||||
testQueries := []string{ |
|
||||
"SELECT * FROM user_events WHERE _timestamp_ns > 1672531200000000000", |
|
||||
"SELECT user_id FROM system_logs WHERE created_at >= '2023-01-01T00:00:00Z'", |
|
||||
"SELECT * FROM user_events WHERE _timestamp_ns >= 1672531200000000000 AND _timestamp_ns <= 1672617600000000000", |
|
||||
} |
|
||||
|
|
||||
for _, query := range testQueries { |
|
||||
t.Run(query, func(t *testing.T) { |
|
||||
// This should not crash and should execute (even if returning sample data)
|
|
||||
result, err := engine.ExecuteSQL(context.Background(), query) |
|
||||
if err != nil { |
|
||||
t.Errorf("Time filter integration failed for query '%s': %v", query, err) |
|
||||
} else { |
|
||||
t.Logf("Time filter integration successful for query: %s (returned %d rows)", |
|
||||
query, len(result.Rows)) |
|
||||
} |
|
||||
}) |
|
||||
} |
|
||||
} |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue