mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-28 07:50:44 +01:00
support limit with offset
This commit is contained in:
1 parent
e030913d9f
commit
20f61388bf
6 files changed
+607
-22
No files matched your search
@@ -92,6 +92,92 @@ func TestSQLEngine_SelectFromNonExistentTable(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSQLEngine_SelectWithOffset(t *testing.T) {
|
||||
engine := NewTestSQLEngine()
|
||||
|
||||
// Test SELECT with OFFSET only
|
||||
result, err := engine.ExecuteSQL(context.Background(), "SELECT * FROM user_events LIMIT 10 OFFSET 1")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, got %v", err)
|
||||
}
|
||||
|
||||
if result.Error != nil {
|
||||
t.Fatalf("Expected no query error, got %v", result.Error)
|
||||
}
|
||||
|
||||
// Should have fewer rows than total since we skip 1 row
|
||||
// Sample data has 4 rows, so OFFSET 1 should give us 3 rows
|
||||
if len(result.Rows) != 3 {
|
||||
t.Errorf("Expected 3 rows with OFFSET 1 (4 total - 1 offset), got %d", len(result.Rows))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSQLEngine_SelectWithLimitAndOffset(t *testing.T) {
|
||||
engine := NewTestSQLEngine()
|
||||
|
||||
// Test SELECT with both LIMIT and OFFSET
|
||||
result, err := engine.ExecuteSQL(context.Background(), "SELECT * FROM user_events LIMIT 2 OFFSET 1")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, got %v", err)
|
||||
}
|
||||
|
||||
if result.Error != nil {
|
||||
t.Fatalf("Expected no query error, got %v", result.Error)
|
||||
}
|
||||
|
||||
// Should have exactly 2 rows (skip 1, take 2)
|
||||
if len(result.Rows) != 2 {
|
||||
t.Errorf("Expected 2 rows with LIMIT 2 OFFSET 1, got %d", len(result.Rows))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSQLEngine_SelectWithOffsetExceedsRows(t *testing.T) {
|
||||
engine := NewTestSQLEngine()
|
||||
|
||||
// Test OFFSET that exceeds available rows
|
||||
result, err := engine.ExecuteSQL(context.Background(), "SELECT * FROM user_events LIMIT 10 OFFSET 10")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, got %v", err)
|
||||
}
|
||||
|
||||
if result.Error != nil {
|
||||
t.Fatalf("Expected no query error, got %v", result.Error)
|
||||
}
|
||||
|
||||
// Should have 0 rows since offset exceeds available data
|
||||
if len(result.Rows) != 0 {
|
||||
t.Errorf("Expected 0 rows with large OFFSET, got %d", len(result.Rows))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSQLEngine_SelectWithOffsetZero(t *testing.T) {
|
||||
engine := NewTestSQLEngine()
|
||||
|
||||
// Test OFFSET 0 (should be same as no offset)
|
||||
result1, err := engine.ExecuteSQL(context.Background(), "SELECT * FROM user_events LIMIT 3")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error for LIMIT query, got %v", err)
|
||||
}
|
||||
|
||||
result2, err := engine.ExecuteSQL(context.Background(), "SELECT * FROM user_events LIMIT 3 OFFSET 0")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error for LIMIT OFFSET query, got %v", err)
|
||||
}
|
||||
|
||||
if result1.Error != nil {
|
||||
t.Fatalf("Expected no query error for LIMIT, got %v", result1.Error)
|
||||
}
|
||||
|
||||
if result2.Error != nil {
|
||||
t.Fatalf("Expected no query error for LIMIT OFFSET, got %v", result2.Error)
|
||||
}
|
||||
|
||||
// Both should return the same number of rows
|
||||
if len(result1.Rows) != len(result2.Rows) {
|
||||
t.Errorf("LIMIT 3 and LIMIT 3 OFFSET 0 should return same number of rows. Got %d vs %d", len(result1.Rows), len(result2.Rows))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSQLEngine_SelectDifferentTables(t *testing.T) {
|
||||
engine := NewTestSQLEngine()
|
||||
|
||||
|
||||
Reference in new issue
Block a user