enginetest

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2022 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Example
package main

import (
	"context"
	"fmt"
	"io"

	sqle "github.com/Rock-liyi/p2pdb-server"
	"github.com/Rock-liyi/p2pdb-store/memory"
	"github.com/Rock-liyi/p2pdb-store/sql"
)

func main() {
	// Create a test memory database and register it to the default engine.
	db := createTestDatabase()
	e := sqle.NewDefault(sql.NewDatabaseProvider(db))

	ctx := sql.NewContext(context.Background()).WithCurrentDB("test")

	_, r, err := e.Query(ctx, `SELECT name, count(*) FROM mytable
	WHERE name = 'John Doe'
	GROUP BY name`)
	checkIfError(err)

	// Iterate results and print them.
	for {
		row, err := r.Next(ctx)
		if err == io.EOF {
			break
		}
		checkIfError(err)

		name := row[0]
		count := row[1]

		fmt.Println(name, count)
	}

}

func checkIfError(err error) {
	if err != nil {
		panic(err)
	}
}

func createTestDatabase() sql.Database {
	db := memory.NewDatabase("test")
	table := memory.NewTable("mytable", sql.NewPrimaryKeySchema(sql.Schema{
		{Name: "name", Type: sql.Text, Source: "mytable"},
		{Name: "email", Type: sql.Text, Source: "mytable"},
	}))
	db.AddTable("mytable", table)
	ctx := sql.NewEmptyContext()

	rows := []sql.Row{
		sql.NewRow("John Doe", "john@doe.com"),
		sql.NewRow("John Doe", "johnalt@doe.com"),
		sql.NewRow("Jane Doe", "jane@doe.com"),
		sql.NewRow("Evil Bob", "evilbob@gmail.com"),
	}

	for _, row := range rows {
		table.Insert(ctx, row)
	}

	return db
}
Output:

John Doe 2

Index

Examples

Constants

This section is empty.

Variables

View Source
var BrokenQueries = []QueryTest{
	{
		Query:    "SELECT pk1, SUM(c1) FROM two_pk",
		Expected: []sql.Row{{0, 60.0}},
	},

	{
		Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x 
						FROM one_pk opk WHERE x > 0 ORDER BY x`,
		Expected: []sql.Row{
			{2, 1},
			{3, 2},
		},
	},
	{
		Query: `SELECT pk,
					(SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS min,
					(SELECT min(pk) FROM one_pk WHERE pk > opk.pk) AS max
					FROM one_pk opk
					WHERE max > 1
					ORDER BY max;`,
		Expected: []sql.Row{
			{1, 0, 2},
			{2, 1, 3},
		},
	},

	{
		Query: `SELECT pk,
						(SELECT sum(c1) FROM two_pk WHERE c1 IN (SELECT c4 FROM two_pk WHERE c3 > opk.c5)) AS sum,
						(SELECT avg(c1) FROM two_pk WHERE pk2 IN (SELECT pk2 FROM two_pk WHERE c1 < opk.c2)) AS avg
					FROM one_pk opk ORDER BY pk`,
		Expected: []sql.Row{
			{0, 60.0, nil},
			{1, 50.0, 10.0},
			{2, 30.0, 15.0},
			{3, nil, 15.0},
		},
	},

	{
		Query: `SELECT column_0, sum(column_1) FROM 
			(values row(1,1), row(1,3), row(2,2), row(2,5), row(3,9)) a 
			group by 1 having avg(column_1) > 2 order by 1`,
		Expected: []sql.Row{
			{2, 7.0},
			{3, 9.0},
		},
	},

	{
		Query: `WITH t AS (SELECT 1) SELECT * FROM t UNION (WITH t AS (SELECT 2) SELECT * FROM t)`,
		Expected: []sql.Row{
			{1},
			{2},
		},
	},
	{
		Query: "SELECT json_array() FROM dual;",
	},
	{
		Query: "SELECT json_array_append() FROM dual;",
	},
	{
		Query: "SELECT json_array_insert() FROM dual;",
	},
	{
		Query: "SELECT json_contains() FROM dual;",
	},
	{
		Query: "SELECT json_contains_path() FROM dual;",
	},
	{
		Query: "SELECT json_depth() FROM dual;",
	},
	{
		Query: "SELECT json_insert() FROM dual;",
	},
	{
		Query: "SELECT json_keys() FROM dual;",
	},
	{
		Query: "SELECT json_length() FROM dual;",
	},
	{
		Query: "SELECT json_merge_patch() FROM dual;",
	},
	{
		Query: "SELECT json_merge_preserve() FROM dual;",
	},
	{
		Query: "SELECT json_object() FROM dual;",
	},
	{
		Query: "SELECT json_overlaps() FROM dual;",
	},
	{
		Query: "SELECT json_pretty() FROM dual;",
	},
	{
		Query: "SELECT json_quote() FROM dual;",
	},
	{
		Query: "SELECT json_remove() FROM dual;",
	},
	{
		Query: "SELECT json_replace() FROM dual;",
	},
	{
		Query: "SELECT json_schema_valid() FROM dual;",
	},
	{
		Query: "SELECT json_schema_validation_report() FROM dual;",
	},
	{
		Query: "SELECT json_set() FROM dual;",
	},
	{
		Query: "SELECT json_search() FROM dual;",
	},
	{
		Query: "SELECT json_storage_free() FROM dual;",
	},
	{
		Query: "SELECT json_storage_size() FROM dual;",
	},
	{
		Query: "SELECT json_type() FROM dual;",
	},
	{
		Query: "SELECT json_table() FROM dual;",
	},
	{
		Query: "SELECT json_valid() FROM dual;",
	},
	{
		Query: "SELECT json_value() FROM dual;",
	},

	{
		Query: `SELECT s as i, i as i from mytable order by i`,
	},

	{
		Query: "SELECT i, I, s, S FROM mytable;",
		Expected: []sql.Row{
			{1, 1, "first row", "first row"},
			{2, 2, "second row", "second row"},
			{3, 3, "third row", "third row"},
		},
		ExpectedColumns: sql.Schema{
			{
				Name: "i",
				Type: sql.Int64,
			},
			{
				Name: "I",
				Type: sql.Int64,
			},
			{
				Name: "s",
				Type: sql.MustCreateStringWithDefaults(sqltypes.VarChar, 20),
			},
			{
				Name: "S",
				Type: sql.MustCreateStringWithDefaults(sqltypes.VarChar, 20),
			},
		},
	},
	{
		Query: "SELECT `i`, `I`, `s`, `S` FROM mytable;",
		Expected: []sql.Row{
			{1, 1, "first row", "first row"},
			{2, 2, "second row", "second row"},
			{3, 3, "third row", "third row"},
		},
		ExpectedColumns: sql.Schema{
			{
				Name: "i",
				Type: sql.Int64,
			},
			{
				Name: "I",
				Type: sql.Int64,
			},
			{
				Name: "s",
				Type: sql.MustCreateStringWithDefaults(sqltypes.VarChar, 20),
			},
			{
				Name: "S",
				Type: sql.MustCreateStringWithDefaults(sqltypes.VarChar, 20),
			},
		},
	},
	{
		Query: "SELECT `mytable`.`i`, `mytable`.`I`, `mytable`.`s`, `mytable`.`S` FROM mytable;",
		Expected: []sql.Row{
			{1, 1, "first row", "first row"},
			{2, 2, "second row", "second row"},
			{3, 3, "third row", "third row"},
		},
		ExpectedColumns: sql.Schema{
			{
				Name: "i",
				Type: sql.Int64,
			},
			{
				Name: "I",
				Type: sql.Int64,
			},
			{
				Name: "s",
				Type: sql.MustCreateStringWithDefaults(sqltypes.VarChar, 20),
			},
			{
				Name: "S",
				Type: sql.MustCreateStringWithDefaults(sqltypes.VarChar, 20),
			},
		},
	},

	{
		Query:    `SELECT json_unquote(json_extract('{"hi":"there"}', '$.nope'))`,
		Expected: []sql.Row{{nil}},
	},

	{
		Query:    "SELECT 1 FROM DUAL WHERE (1, null) in ((1, null))",
		Expected: []sql.Row{},
	},
	{
		Query:    "SELECT 1 FROM DUAL WHERE (1, null) != (0, null)",
		Expected: []sql.Row{},
	},
	{
		Query:    "SELECT 1 FROM DUAL WHERE (0, null) = (0, null)",
		Expected: []sql.Row{},
	},
	{
		Query:    "SELECT 1 FROM DUAL WHERE ('0', 0) = (0, '0')",
		Expected: []sql.Row{{1}},
	},
	{
		Query:    "SELECT 1 FROM DUAL WHERE (null, null) = (select null, null from dual)",
		Expected: []sql.Row{},
	},

	{
		Query: "SELECT c AS i_do_not_conflict, COUNT(*), MIN((SELECT COUNT(*) FROM (SELECT 1 AS d) b WHERE b.d = a.c)) FROM (SELECT 1 AS c) a GROUP BY i_do_not_conflict;",
	},
	{
		Query: "SELECT c AS c, COUNT(*), MIN((SELECT COUNT(*) FROM (SELECT 1 AS d) b WHERE b.d = a.c)) FROM (SELECT 1 AS c) a GROUP BY a.c;",
	},
}

Queries that are known to be broken in the engine.

View Source
var ComplexIndexQueries = []ScriptTest{
	{
		Name: "Two column index",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, v2 BIGINT, INDEX (v1, v2));",
			`INSERT INTO test VALUES (0,0,48),(1,0,52),(2,2,4),(3,2,10),(4,3,35),(5,5,36),(6,5,60),(7,6,1),(8,6,51),
(9,6,60),(10,6,73),(11,9,44),(12,9,97),(13,13,44),(14,14,53),(15,14,57),(16,14,98),(17,16,19),(18,16,53),(19,16,95),
(20,18,31),(21,19,48),(22,19,75),(23,19,97),(24,24,60),(25,25,14),(26,25,31),(27,27,9),(28,27,24),(29,28,24),(30,28,83),
(31,31,14),(32,33,39),(33,34,22),(34,34,91),(35,35,89),(36,38,20),(37,38,66),(38,39,55),(39,39,86),(40,40,97),(41,42,0),
(42,42,82),(43,43,63),(44,44,48),(45,44,67),(46,45,22),(47,45,31),(48,45,63),(49,45,86),(50,46,46),(51,47,5),(52,48,22),
(53,49,0),(54,50,0),(55,50,14),(56,51,35),(57,54,38),(58,56,0),(59,56,60),(60,57,29),(61,57,49),(62,58,12),(63,58,32),
(64,59,29),(65,59,45),(66,59,54),(67,60,66),(68,61,3),(69,61,34),(70,63,19),(71,63,69),(72,65,80),(73,65,97),(74,67,95),
(75,68,11),(76,69,34),(77,72,52),(78,74,81),(79,76,39),(80,78,0),(81,78,90),(82,79,36),(83,80,61),(84,80,88),(85,81,4),
(86,82,16),(87,83,30),(88,83,74),(89,84,9),(90,84,45),(91,86,56),(92,86,88),(93,87,51),(94,89,3),(95,93,19),(96,93,21),
(97,93,96),(98,98,0),(99,98,51),(100,98,61);`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<25) OR (v1>24));",
				Expected: []sql.Row{{"Filter((test.v1 < 25) OR (test.v1 > 24))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<25) OR (v1>24));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=99 AND v2<>83) OR (v1>=1));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 99) AND (NOT((test.v2 = 83)))) OR (test.v1 >= 1))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=99 AND v2<>83) OR (v1>=1));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=38 AND v2<41) OR (v1>60)) OR (v1<22));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 38) AND (test.v2 < 41)) OR (test.v1 > 60)) OR (test.v1 < 22))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=38 AND v2<41) OR (v1>60)) OR (v1<22));",
				Expected: []sql.Row{{19, 16, 95}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {92, 86, 88}, {15, 14, 57}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {12, 9, 97}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {77, 72, 52}, {89, 84, 9}, {33, 34, 22}, {83, 80, 61}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {36, 38, 20}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>92 AND v2>25) OR (v1 BETWEEN 6 AND 24 AND v2=80));",
				Expected: []sql.Row{{"Filter(((test.v1 > 92) AND (test.v2 > 25)) OR ((test.v1 BETWEEN 6 AND 24) AND (test.v2 = 80)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>92 AND v2>25) OR (v1 BETWEEN 6 AND 24 AND v2=80));",
				Expected: []sql.Row{{100, 98, 61}, {99, 98, 51}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=29) OR (v1=49 AND v2<48));",
				Expected: []sql.Row{{"Filter((test.v1 <= 29) OR ((test.v1 = 49) AND (test.v2 < 48)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=29) OR (v1=49 AND v2<48));",
				Expected: []sql.Row{{19, 16, 95}, {3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {15, 14, 57}, {16, 14, 98}, {21, 19, 48}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {1, 0, 52}, {13, 13, 44}, {24, 24, 60}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {28, 27, 24}, {25, 25, 14}, {27, 27, 9}, {6, 5, 60}, {22, 19, 75}, {18, 16, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>75) OR (v1<=11));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 75))) OR (test.v1 <= 11))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>75) OR (v1<=11));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=86) OR (v1<>9)) AND (v1=87 AND v2<=45);",
				Expected: []sql.Row{{"Filter(((test.v1 <= 86) OR (NOT((test.v1 = 9)))) AND ((test.v1 = 87) AND (test.v2 <= 45)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=86) OR (v1<>9)) AND (v1=87 AND v2<=45);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=5) OR (v1=71)) OR (v1<>96));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 5) OR (test.v1 = 71)) OR (NOT((test.v1 = 96))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=5) OR (v1=71)) OR (v1<>96));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=97) OR (v1 BETWEEN 36 AND 98));",
				Expected: []sql.Row{{"Filter((test.v1 <= 97) OR (test.v1 BETWEEN 36 AND 98))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=97) OR (v1 BETWEEN 36 AND 98));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=86 AND v2>41) OR (v1<>6 AND v2>16));",
				Expected: []sql.Row{{"Filter(((test.v1 = 86) AND (test.v2 > 41)) OR ((NOT((test.v1 = 6))) AND (test.v2 > 16)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=86 AND v2>41) OR (v1<>6 AND v2>16));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {72, 65, 80}, {49, 45, 86}, {5, 5, 36}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {93, 87, 51}, {4, 3, 35}, {45, 44, 67}, {52, 48, 22}, {12, 9, 97}, {30, 28, 83}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {64, 59, 29}, {96, 93, 21}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>22 AND v2>18) OR (v1<>12)) OR (v1<=34));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 22))) AND (test.v2 > 18)) OR (NOT((test.v1 = 12)))) OR (test.v1 <= 34))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>22 AND v2>18) OR (v1<>12)) OR (v1<=34));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<11) OR (v1>=66 AND v2=22));",
				Expected: []sql.Row{{"Filter((test.v1 < 11) OR ((test.v1 >= 66) AND (test.v2 = 22)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<11) OR (v1>=66 AND v2=22));",
				Expected: []sql.Row{{3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {12, 9, 97}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {1, 0, 52}, {8, 6, 51}, {6, 5, 60}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>45 AND v2>37) OR (v1<98 AND v2<=35));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 45))) AND (test.v2 > 37)) OR ((test.v1 < 98) AND (test.v2 <= 35)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>45 AND v2>37) OR (v1<98 AND v2<=35));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=16 AND v2>96) OR (v1<80));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 16) AND (test.v2 > 96)) OR (test.v1 < 80))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=16 AND v2>96) OR (v1<80));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=98) OR (v1<85 AND v2>60)) OR (v1<>53 AND v2 BETWEEN 82 AND 89));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 98) OR ((test.v1 < 85) AND (test.v2 > 60))) OR ((NOT((test.v1 = 53))) AND (test.v2 BETWEEN 82 AND 89)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=98) OR (v1<85 AND v2>60)) OR (v1<>53 AND v2 BETWEEN 82 AND 89));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<71 AND v2<7) OR (v1<=21 AND v2<=48)) OR (v1=44 AND v2 BETWEEN 21 AND 83)) OR (v1<=72 AND v2<>27)) OR (v1=35 AND v2 BETWEEN 78 AND 89));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 71) AND (test.v2 < 7)) OR ((test.v1 <= 21) AND (test.v2 <= 48))) OR ((test.v1 = 44) AND (test.v2 BETWEEN 21 AND 83))) OR ((test.v1 <= 72) AND (NOT((test.v2 = 27))))) OR ((test.v1 = 35) AND (test.v2 BETWEEN 78 AND 89)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<71 AND v2<7) OR (v1<=21 AND v2<=48)) OR (v1=44 AND v2 BETWEEN 21 AND 83)) OR (v1<=72 AND v2<>27)) OR (v1=35 AND v2 BETWEEN 78 AND 89));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=16) OR (v1>=77 AND v2>77)) OR (v1>19 AND v2>27));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 16) OR ((test.v1 >= 77) AND (test.v2 > 77))) OR ((test.v1 > 19) AND (test.v2 > 27)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=16) OR (v1>=77 AND v2>77)) OR (v1>19 AND v2>27));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {57, 54, 38}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {26, 25, 31}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {64, 59, 29}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {44, 44, 48}, {60, 57, 29}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=46) AND (v1>=28 AND v2<>68) OR (v1>=33 AND v2<>39));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 46) AND ((test.v1 >= 28) AND (NOT((test.v2 = 68))))) OR ((test.v1 >= 33) AND (NOT((test.v2 = 39)))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=46) AND (v1>=28 AND v2<>68) OR (v1>=33 AND v2<>39));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<39 AND v2<10) OR (v1>64 AND v2<=15)) AND (v1>=41);",
				Expected: []sql.Row{{"Filter((((test.v1 < 39) AND (test.v2 < 10)) OR ((test.v1 > 64) AND (test.v2 <= 15))) AND (test.v1 >= 41))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<39 AND v2<10) OR (v1>64 AND v2<=15)) AND (v1>=41);",
				Expected: []sql.Row{{85, 81, 4}, {89, 84, 9}, {80, 78, 0}, {98, 98, 0}, {75, 68, 11}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=91) OR (v1<70 AND v2>=23)) OR (v1>23 AND v2<38));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 91) OR ((test.v1 < 70) AND (test.v2 >= 23))) OR ((test.v1 > 23) AND (test.v2 < 38)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=91) OR (v1<70 AND v2>=23)) OR (v1>23 AND v2<38));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>45 AND v2=70) OR (v1 BETWEEN 40 AND 96 AND v2 BETWEEN 48 AND 96)) OR (v1<>87 AND v2<31)) OR (v1<>62 AND v2=51)) AND (v1>=47 AND v2<29);",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 45))) AND (test.v2 = 70)) OR ((test.v1 BETWEEN 40 AND 96) AND (test.v2 BETWEEN 48 AND 96))) OR ((NOT((test.v1 = 87))) AND (test.v2 < 31))) OR ((NOT((test.v1 = 62))) AND (test.v2 = 51))) AND ((test.v1 >= 47) AND (test.v2 < 29)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>45 AND v2=70) OR (v1 BETWEEN 40 AND 96 AND v2 BETWEEN 48 AND 96)) OR (v1<>87 AND v2<31)) OR (v1<>62 AND v2=51)) AND (v1>=47 AND v2<29);",
				Expected: []sql.Row{{58, 56, 0}, {85, 81, 4}, {62, 58, 12}, {54, 50, 0}, {55, 50, 14}, {68, 61, 3}, {52, 48, 22}, {53, 49, 0}, {95, 93, 19}, {89, 84, 9}, {51, 47, 5}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {75, 68, 11}, {70, 63, 19}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<71) OR (v1 BETWEEN 46 AND 79));",
				Expected: []sql.Row{{"Filter((test.v1 < 71) OR (test.v1 BETWEEN 46 AND 79))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<71) OR (v1 BETWEEN 46 AND 79));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>52) OR (v1<=14));",
				Expected: []sql.Row{{"Filter((test.v1 > 52) OR (test.v1 <= 14))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>52) OR (v1<=14));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {12, 9, 97}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {63, 58, 32}, {83, 80, 61}, {8, 6, 51}, {14, 14, 53}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>74) OR (v1<>40 AND v2>=54));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 74))) OR ((NOT((test.v1 = 40))) AND (test.v2 >= 54)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>74) OR (v1<>40 AND v2>=54));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=69 AND v2<24) OR (v1<77 AND v2<=53));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 69) AND (test.v2 < 24)) OR ((test.v1 < 77) AND (test.v2 <= 53)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=69 AND v2<24) OR (v1<77 AND v2<=53));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {3, 2, 10}, {5, 5, 36}, {50, 46, 46}, {62, 58, 12}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {52, 48, 22}, {2, 2, 4}, {53, 49, 0}, {69, 61, 34}, {0, 0, 48}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {77, 72, 52}, {33, 34, 22}, {63, 58, 32}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {28, 27, 24}, {51, 47, 5}, {64, 59, 29}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {18, 16, 53}, {36, 38, 20}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=78 AND v2=87) OR (v1 BETWEEN 37 AND 58 AND v2>=30)) AND (v1=86 AND v2 BETWEEN 0 AND 70);",
				Expected: []sql.Row{{"Filter((((test.v1 = 78) AND (test.v2 = 87)) OR ((test.v1 BETWEEN 37 AND 58) AND (test.v2 >= 30))) AND ((test.v1 = 86) AND (test.v2 BETWEEN 0 AND 70)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=78 AND v2=87) OR (v1 BETWEEN 37 AND 58 AND v2>=30)) AND (v1=86 AND v2 BETWEEN 0 AND 70);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>94) OR (v1<=52));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 94))) OR (test.v1 <= 52))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>94) OR (v1<=52));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>23 AND v2>64) OR (v1>73 AND v2<=66)) OR (v1 BETWEEN 39 AND 69 AND v2>84));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 23))) AND (test.v2 > 64)) OR ((test.v1 > 73) AND (test.v2 <= 66))) OR ((test.v1 BETWEEN 39 AND 69) AND (test.v2 > 84)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>23 AND v2>64) OR (v1>73 AND v2<=66)) OR (v1 BETWEEN 39 AND 69 AND v2>84));",
				Expected: []sql.Row{{19, 16, 95}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {92, 86, 88}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {79, 76, 39}, {93, 87, 51}, {45, 44, 67}, {12, 9, 97}, {30, 28, 83}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {10, 6, 73}, {100, 98, 61}, {95, 93, 19}, {67, 60, 66}, {89, 84, 9}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {23, 19, 97}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {84, 80, 88}, {99, 98, 51}, {22, 19, 75}, {71, 63, 69}, {34, 34, 91}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>54 AND v2<16) OR (v1<74 AND v2>29)) AND (v1 BETWEEN 34 AND 48);",
				Expected: []sql.Row{{"Filter((((test.v1 > 54) AND (test.v2 < 16)) OR ((test.v1 < 74) AND (test.v2 > 29))) AND (test.v1 BETWEEN 34 AND 48))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>54 AND v2<16) OR (v1<74 AND v2>29)) AND (v1 BETWEEN 34 AND 48);",
				Expected: []sql.Row{{49, 45, 86}, {50, 46, 46}, {47, 45, 31}, {45, 44, 67}, {43, 43, 63}, {35, 35, 89}, {39, 39, 86}, {38, 39, 55}, {40, 40, 97}, {37, 38, 66}, {48, 45, 63}, {44, 44, 48}, {34, 34, 91}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>44 AND v2>12) OR (v1<=5 AND v2>27));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 44))) AND (test.v2 > 12)) OR ((test.v1 <= 5) AND (test.v2 > 27)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>44 AND v2>12) OR (v1<=5 AND v2>27));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {72, 65, 80}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {93, 87, 51}, {4, 3, 35}, {52, 48, 22}, {12, 9, 97}, {30, 28, 83}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {64, 59, 29}, {86, 82, 16}, {96, 93, 21}, {25, 25, 14}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=54 AND v2<>13) OR (v1>84));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 54) AND (NOT((test.v2 = 13)))) OR (test.v1 > 84))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=54 AND v2<>13) OR (v1>84));",
				Expected: []sql.Row{{19, 16, 95}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {91, 86, 56}, {16, 14, 98}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>1 AND v2<>51) OR (v1=28));",
				Expected: []sql.Row{{"Filter(((test.v1 > 1) AND (NOT((test.v2 = 51)))) OR (test.v1 = 28))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>1 AND v2<>51) OR (v1=28));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>35) OR (v1 BETWEEN 11 AND 21)) OR (v1<>98));",
				Expected: []sql.Row{{"Filter(((test.v1 > 35) OR (test.v1 BETWEEN 11 AND 21)) OR (NOT((test.v1 = 98))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>35) OR (v1 BETWEEN 11 AND 21)) OR (v1<>98));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=16 AND v2=57) OR (v1<46 AND v2 BETWEEN 78 AND 89));",
				Expected: []sql.Row{{"Filter(((test.v1 = 16) AND (test.v2 = 57)) OR ((test.v1 < 46) AND (test.v2 BETWEEN 78 AND 89)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=16 AND v2=57) OR (v1<46 AND v2 BETWEEN 78 AND 89));",
				Expected: []sql.Row{{49, 45, 86}, {30, 28, 83}, {35, 35, 89}, {39, 39, 86}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<53 AND v2<10) AND (v1<>37) OR (v1>23));",
				Expected: []sql.Row{{"Filter((((test.v1 < 53) AND (test.v2 < 10)) AND (NOT((test.v1 = 37)))) OR (test.v1 > 23))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<53 AND v2<10) AND (v1<>37) OR (v1>23));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<>30) OR (v1>=6 AND v2 BETWEEN 62 AND 65)) OR (v1<>89)) OR (v1<=40 AND v2>=73)) OR (v1<99));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 30))) OR ((test.v1 >= 6) AND (test.v2 BETWEEN 62 AND 65))) OR (NOT((test.v1 = 89)))) OR ((test.v1 <= 40) AND (test.v2 >= 73))) OR (test.v1 < 99))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<>30) OR (v1>=6 AND v2 BETWEEN 62 AND 65)) OR (v1<>89)) OR (v1<=40 AND v2>=73)) OR (v1<99));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 34 AND 34 AND v2 BETWEEN 0 AND 91) OR (v1 BETWEEN 54 AND 77 AND v2>92));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 34 AND 34) AND (test.v2 BETWEEN 0 AND 91)) OR ((test.v1 BETWEEN 54 AND 77) AND (test.v2 > 92)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 34 AND 34 AND v2 BETWEEN 0 AND 91) OR (v1 BETWEEN 54 AND 77 AND v2>92));",
				Expected: []sql.Row{{73, 65, 97}, {33, 34, 22}, {74, 67, 95}, {34, 34, 91}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((((v1<=55) OR (v1>=46 AND v2<=26)) OR (v1 BETWEEN 8 AND 54)) OR (v1>26 AND v2 BETWEEN 62 AND 89)) OR (v1<31 AND v2=11)) OR (v1>9 AND v2=60));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 55) OR ((test.v1 >= 46) AND (test.v2 <= 26))) OR (test.v1 BETWEEN 8 AND 54)) OR ((test.v1 > 26) AND (test.v2 BETWEEN 62 AND 89))) OR ((test.v1 < 31) AND (test.v2 = 11))) OR ((test.v1 > 9) AND (test.v2 = 60)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((((v1<=55) OR (v1>=46 AND v2<=26)) OR (v1 BETWEEN 8 AND 54)) OR (v1>26 AND v2 BETWEEN 62 AND 89)) OR (v1<31 AND v2=11)) OR (v1>9 AND v2=60));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {78, 74, 81}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 17 AND 54 AND v2>=37) AND (v1<42 AND v2=96) OR (v1<>50));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 17 AND 54) AND (test.v2 >= 37)) AND ((test.v1 < 42) AND (test.v2 = 96))) OR (NOT((test.v1 = 50))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 17 AND 54 AND v2>=37) AND (v1<42 AND v2=96) OR (v1<>50));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>39 AND v2>66) OR (v1=99));",
				Expected: []sql.Row{{"Filter(((test.v1 > 39) AND (test.v2 > 66)) OR (test.v1 = 99))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>39 AND v2>66) OR (v1=99));",
				Expected: []sql.Row{{72, 65, 80}, {49, 45, 86}, {92, 86, 88}, {45, 44, 67}, {73, 65, 97}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {84, 80, 88}, {71, 63, 69}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 24 AND 66) OR (v1<=81 AND v2<>29));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 24 AND 66) OR ((test.v1 <= 81) AND (NOT((test.v2 = 29)))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 24 AND 66) OR (v1<=81 AND v2<>29));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>18 AND v2<>8) OR (v1>=10 AND v2>3)) OR (v1=53));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 18))) AND (NOT((test.v2 = 8)))) OR ((test.v1 >= 10) AND (test.v2 > 3))) OR (test.v1 = 53))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>18 AND v2<>8) OR (v1>=10 AND v2>3)) OR (v1=53));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=42 AND v2>34) OR (v1<=40 AND v2<=49));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 42) AND (test.v2 > 34)) OR ((test.v1 <= 40) AND (test.v2 <= 49)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=42 AND v2>34) OR (v1<=40 AND v2<=49));",
				Expected: []sql.Row{{61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {50, 46, 46}, {92, 86, 88}, {91, 86, 56}, {66, 59, 54}, {79, 76, 39}, {21, 19, 48}, {57, 54, 38}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {2, 2, 4}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {33, 34, 22}, {83, 80, 61}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {48, 45, 63}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {31, 31, 14}, {44, 44, 48}, {71, 63, 69}, {36, 38, 20}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 8 AND 38) OR (v1>=23 AND v2 BETWEEN 36 AND 49));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 8 AND 38) OR ((test.v1 >= 23) AND (test.v2 BETWEEN 36 AND 49)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 8 AND 38) OR (v1>=23 AND v2 BETWEEN 36 AND 49));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {50, 46, 46}, {15, 14, 57}, {16, 14, 98}, {79, 76, 39}, {21, 19, 48}, {57, 54, 38}, {12, 9, 97}, {30, 28, 83}, {90, 84, 45}, {82, 79, 36}, {11, 9, 44}, {20, 18, 31}, {65, 59, 45}, {13, 13, 44}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {28, 27, 24}, {37, 38, 66}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>57 AND v2 BETWEEN 2 AND 93) OR (v1=52));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 57))) AND (test.v2 BETWEEN 2 AND 93)) OR (test.v1 = 52))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>57 AND v2 BETWEEN 2 AND 93) OR (v1=52));",
				Expected: []sql.Row{{72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {30, 28, 83}, {69, 61, 34}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {86, 82, 16}, {96, 93, 21}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<24) OR (v1<41)) OR (v1<12 AND v2=2)) OR (v1=3 AND v2<>66));",
				Expected: []sql.Row{{"Filter((((test.v1 < 24) OR (test.v1 < 41)) OR ((test.v1 < 12) AND (test.v2 = 2))) OR ((test.v1 = 3) AND (NOT((test.v2 = 66)))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<24) OR (v1<41)) OR (v1<12 AND v2=2)) OR (v1=3 AND v2<>66));",
				Expected: []sql.Row{{19, 16, 95}, {3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {15, 14, 57}, {16, 14, 98}, {21, 19, 48}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {1, 0, 52}, {13, 13, 44}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {28, 27, 24}, {37, 38, 66}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=52 AND v2<40) AND (v1<30) OR (v1<=75 AND v2 BETWEEN 54 AND 54)) OR (v1<>31 AND v2<>56));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 52) AND (test.v2 < 40)) AND (test.v1 < 30)) OR ((test.v1 <= 75) AND (test.v2 BETWEEN 54 AND 54))) OR ((NOT((test.v1 = 31))) AND (NOT((test.v2 = 56)))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=52 AND v2<40) AND (v1<30) OR (v1<=75 AND v2 BETWEEN 54 AND 54)) OR (v1<>31 AND v2<>56));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>52 AND v2<90) OR (v1 BETWEEN 27 AND 77 AND v2 BETWEEN 49 AND 83));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 52))) AND (test.v2 < 90)) OR ((test.v1 BETWEEN 27 AND 77) AND (test.v2 BETWEEN 49 AND 83)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>52 AND v2<90) OR (v1 BETWEEN 27 AND 77 AND v2 BETWEEN 49 AND 83));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {78, 74, 81}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>2) OR (v1<72 AND v2>=21)) AND (v1=69 AND v2 BETWEEN 44 AND 48);",
				Expected: []sql.Row{{"Filter(((test.v1 > 2) OR ((test.v1 < 72) AND (test.v2 >= 21))) AND ((test.v1 = 69) AND (test.v2 BETWEEN 44 AND 48)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>2) OR (v1<72 AND v2>=21)) AND (v1=69 AND v2 BETWEEN 44 AND 48);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>77) OR (v1=57)) OR (v1>9 AND v2>80)) OR (v1=22));",
				Expected: []sql.Row{{"Filter((((test.v1 > 77) OR (test.v1 = 57)) OR ((test.v1 > 9) AND (test.v2 > 80))) OR (test.v1 = 22))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>77) OR (v1=57)) OR (v1>9 AND v2>80)) OR (v1=22));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {85, 81, 4}, {49, 45, 86}, {92, 86, 88}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {93, 87, 51}, {30, 28, 83}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {100, 98, 61}, {95, 93, 19}, {89, 84, 9}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {23, 19, 97}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {84, 80, 88}, {99, 98, 51}, {60, 57, 29}, {34, 34, 91}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>28) OR (v1<=30 AND v2=30)) OR (v1<29)) OR (v1 BETWEEN 54 AND 74));",
				Expected: []sql.Row{{"Filter((((test.v1 > 28) OR ((test.v1 <= 30) AND (test.v2 = 30))) OR (test.v1 < 29)) OR (test.v1 BETWEEN 54 AND 74))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>28) OR (v1<=30 AND v2=30)) OR (v1<29)) OR (v1 BETWEEN 54 AND 74));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>30 AND v2 BETWEEN 20 AND 41) OR (v1>=69 AND v2=51));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 30))) AND (test.v2 BETWEEN 20 AND 41)) OR ((test.v1 >= 69) AND (test.v2 = 51)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>30 AND v2 BETWEEN 20 AND 41) OR (v1>=69 AND v2=51));",
				Expected: []sql.Row{{5, 5, 36}, {47, 45, 31}, {87, 83, 30}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {93, 87, 51}, {4, 3, 35}, {52, 48, 22}, {69, 61, 34}, {82, 79, 36}, {20, 18, 31}, {56, 51, 35}, {33, 34, 22}, {63, 58, 32}, {26, 25, 31}, {29, 28, 24}, {28, 27, 24}, {64, 59, 29}, {96, 93, 21}, {32, 33, 39}, {99, 98, 51}, {60, 57, 29}, {36, 38, 20}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>39) OR (v1=55)) AND (v1=67);",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 39))) OR (test.v1 = 55)) AND (test.v1 = 67))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>39) OR (v1=55)) AND (v1=67);",
				Expected: []sql.Row{{74, 67, 95}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<20 AND v2<=46) OR (v1<>4 AND v2=26)) OR (v1>36 AND v2<>13));",
				Expected: []sql.Row{{"Filter((((test.v1 < 20) AND (test.v2 <= 46)) OR ((NOT((test.v1 = 4))) AND (test.v2 = 26))) OR ((test.v1 > 36) AND (NOT((test.v2 = 13)))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<20 AND v2<=46) OR (v1<>4 AND v2=26)) OR (v1>36 AND v2<>13));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {17, 16, 19}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=5 AND v2>66) OR (v1<=0)) OR (v1 BETWEEN 10 AND 87));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 5) AND (test.v2 > 66)) OR (test.v1 <= 0)) OR (test.v1 BETWEEN 10 AND 87))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=5 AND v2>66) OR (v1<=0)) OR (v1 BETWEEN 10 AND 87));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((((v1<>99 AND v2 BETWEEN 12 AND 31) OR (v1<56 AND v2<>69)) OR (v1>=37 AND v2<47)) OR (v1<=98 AND v2=50)) AND (v1 BETWEEN 15 AND 47) OR (v1>55 AND v2>85)) OR (v1>86));",
				Expected: []sql.Row{{"Filter((((((((NOT((test.v1 = 99))) AND (test.v2 BETWEEN 12 AND 31)) OR ((test.v1 < 56) AND (NOT((test.v2 = 69))))) OR ((test.v1 >= 37) AND (test.v2 < 47))) OR ((test.v1 <= 98) AND (test.v2 = 50))) AND (test.v1 BETWEEN 15 AND 47)) OR ((test.v1 > 55) AND (test.v2 > 85))) OR (test.v1 > 86))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((((v1<>99 AND v2 BETWEEN 12 AND 31) OR (v1<56 AND v2<>69)) OR (v1>=37 AND v2<47)) OR (v1<=98 AND v2=50)) AND (v1 BETWEEN 15 AND 47) OR (v1>55 AND v2>85)) OR (v1>86));",
				Expected: []sql.Row{{19, 16, 95}, {49, 45, 86}, {50, 46, 46}, {92, 86, 88}, {47, 45, 31}, {21, 19, 48}, {46, 45, 22}, {93, 87, 51}, {45, 44, 67}, {30, 28, 83}, {73, 65, 97}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {100, 98, 61}, {95, 93, 19}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {39, 39, 86}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {81, 78, 90}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<37) OR (v1<=48 AND v2<=54)) OR (v1=88));",
				Expected: []sql.Row{{"Filter(((test.v1 < 37) OR ((test.v1 <= 48) AND (test.v2 <= 54))) OR (test.v1 = 88))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<37) OR (v1<=48 AND v2<=54)) OR (v1=88));",
				Expected: []sql.Row{{19, 16, 95}, {3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {15, 14, 57}, {47, 45, 31}, {16, 14, 98}, {21, 19, 48}, {46, 45, 22}, {4, 3, 35}, {7, 6, 1}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {1, 0, 52}, {13, 13, 44}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {28, 27, 24}, {51, 47, 5}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>31) OR (v1<>43)) OR (v1>37 AND v2>5));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 31))) OR (NOT((test.v1 = 43)))) OR ((test.v1 > 37) AND (test.v2 > 5)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>31) OR (v1<>43)) OR (v1>37 AND v2>5));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=91) OR (v1<>79)) OR (v1<64));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 91) OR (NOT((test.v1 = 79)))) OR (test.v1 < 64))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=91) OR (v1<>79)) OR (v1<64));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>48) OR (v1>11));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 48))) OR (test.v1 > 11))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>48) OR (v1>11));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>40) OR (v1>=49 AND v2>=92));",
				Expected: []sql.Row{{"Filter((test.v1 > 40) OR ((test.v1 >= 49) AND (test.v2 >= 92)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>40) OR (v1>=49 AND v2>=92));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {63, 58, 32}, {83, 80, 61}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<40) OR (v1<=59)) OR (v1<99)) AND (v1>=83) OR (v1>9));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 40) OR (test.v1 <= 59)) OR (test.v1 < 99)) AND (test.v1 >= 83)) OR (test.v1 > 9))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<40) OR (v1<=59)) OR (v1<99)) AND (v1>=83) OR (v1>9));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=53 AND v2<=79) OR (v1>50 AND v2>26)) AND (v1>26) AND (v1>43 AND v2<7);",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 53) AND (test.v2 <= 79)) OR ((test.v1 > 50) AND (test.v2 > 26))) AND (test.v1 > 26)) AND ((test.v1 > 43) AND (test.v2 < 7)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=53 AND v2<=79) OR (v1>50 AND v2>26)) AND (v1>26) AND (v1>43 AND v2<7);",
				Expected: []sql.Row{{54, 50, 0}, {53, 49, 0}, {51, 47, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 27 AND 84) OR (v1<98 AND v2>38)) OR (v1<>30));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 27 AND 84) OR ((test.v1 < 98) AND (test.v2 > 38))) OR (NOT((test.v1 = 30))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 27 AND 84) OR (v1<98 AND v2>38)) OR (v1<>30));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=45) OR (v1=28));",
				Expected: []sql.Row{{"Filter((test.v1 = 45) OR (test.v1 = 28))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=45) OR (v1=28));",
				Expected: []sql.Row{{49, 45, 86}, {47, 45, 31}, {46, 45, 22}, {30, 28, 83}, {29, 28, 24}, {48, 45, 63}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 11 AND 18) AND (v1>31 AND v2 BETWEEN 38 AND 88);",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 11 AND 18) AND ((test.v1 > 31) AND (test.v2 BETWEEN 38 AND 88)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 11 AND 18) AND (v1>31 AND v2 BETWEEN 38 AND 88);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>95 AND v2>5) OR (v1>16 AND v2>=38));",
				Expected: []sql.Row{{"Filter(((test.v1 > 95) AND (test.v2 > 5)) OR ((test.v1 > 16) AND (test.v2 >= 38)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>95 AND v2>5) OR (v1>16 AND v2>=38));",
				Expected: []sql.Row{{61, 57, 49}, {72, 65, 80}, {49, 45, 86}, {50, 46, 46}, {92, 86, 88}, {91, 86, 56}, {66, 59, 54}, {79, 76, 39}, {21, 19, 48}, {57, 54, 38}, {93, 87, 51}, {45, 44, 67}, {30, 28, 83}, {73, 65, 97}, {90, 84, 45}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {23, 19, 97}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {22, 19, 75}, {44, 44, 48}, {71, 63, 69}, {34, 34, 91}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=23) OR (v1=47 AND v2>23));",
				Expected: []sql.Row{{"Filter((test.v1 >= 23) OR ((test.v1 = 47) AND (test.v2 > 23)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=23) OR (v1=47 AND v2>23));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=30) OR (v1<>67));",
				Expected: []sql.Row{{"Filter((test.v1 = 30) OR (NOT((test.v1 = 67))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=30) OR (v1<>67));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=30 AND v2>=67) OR (v1<=52));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 30) AND (test.v2 >= 67)) OR (test.v1 <= 52))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=30 AND v2>=67) OR (v1<=52));",
				Expected: []sql.Row{{19, 16, 95}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {21, 19, 48}, {46, 45, 22}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {73, 65, 97}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 48 AND 86 AND v2>=29) OR (v1<>82 AND v2<=93)) OR (v1 BETWEEN 79 AND 87 AND v2 BETWEEN 13 AND 69));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 48 AND 86) AND (test.v2 >= 29)) OR ((NOT((test.v1 = 82))) AND (test.v2 <= 93))) OR ((test.v1 BETWEEN 79 AND 87) AND (test.v2 BETWEEN 13 AND 69)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 48 AND 86 AND v2>=29) OR (v1<>82 AND v2<=93)) OR (v1 BETWEEN 79 AND 87 AND v2 BETWEEN 13 AND 69));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 3 AND 95 AND v2>=36) OR (v1>=40 AND v2<13)) OR (v1 BETWEEN 4 AND 8 AND v2=50));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 3 AND 95) AND (test.v2 >= 36)) OR ((test.v1 >= 40) AND (test.v2 < 13))) OR ((test.v1 BETWEEN 4 AND 8) AND (test.v2 = 50)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 3 AND 95 AND v2>=36) OR (v1>=40 AND v2<13)) OR (v1 BETWEEN 4 AND 8 AND v2=50));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {54, 50, 0}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {79, 76, 39}, {21, 19, 48}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {45, 44, 67}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {10, 6, 73}, {11, 9, 44}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {13, 13, 44}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {23, 19, 97}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {80, 78, 0}, {98, 98, 0}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {44, 44, 48}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<11 AND v2<>32) OR (v1 BETWEEN 35 AND 41)) OR (v1>=76));",
				Expected: []sql.Row{{"Filter((((test.v1 < 11) AND (NOT((test.v2 = 32)))) OR (test.v1 BETWEEN 35 AND 41)) OR (test.v1 >= 76))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<11 AND v2<>32) OR (v1 BETWEEN 35 AND 41)) OR (v1>=76));",
				Expected: []sql.Row{{85, 81, 4}, {3, 2, 10}, {5, 5, 36}, {9, 6, 60}, {92, 86, 88}, {87, 83, 30}, {91, 86, 56}, {79, 76, 39}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {12, 9, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {89, 84, 9}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {38, 39, 55}, {40, 40, 97}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {36, 38, 20}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=15 AND v2=8) AND (v1>2) OR (v1 BETWEEN 50 AND 97));",
				Expected: []sql.Row{{"Filter((((test.v1 = 15) AND (test.v2 = 8)) AND (test.v1 > 2)) OR (test.v1 BETWEEN 50 AND 97))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=15 AND v2=8) AND (v1>2) OR (v1 BETWEEN 50 AND 97));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {62, 58, 12}, {92, 86, 88}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {65, 59, 45}, {95, 93, 19}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {63, 58, 32}, {83, 80, 61}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {75, 68, 11}, {84, 80, 88}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<67 AND v2<>39) OR (v1>36));",
				Expected: []sql.Row{{"Filter(((test.v1 < 67) AND (NOT((test.v2 = 39)))) OR (test.v1 > 36))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<67 AND v2<>39) OR (v1>36));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>66) OR (v1<50));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 66))) OR (test.v1 < 50))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>66) OR (v1<50));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 5 AND 19) OR (v1<>50 AND v2>=51)) OR (v1>55));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 5 AND 19) OR ((NOT((test.v1 = 50))) AND (test.v2 >= 51))) OR (test.v1 > 55))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 5 AND 19) OR (v1<>50 AND v2>=51)) OR (v1>55));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {68, 61, 3}, {93, 87, 51}, {7, 6, 1}, {45, 44, 67}, {12, 9, 97}, {30, 28, 83}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 16 AND 65) OR (v1<>18 AND v2>=81)) OR (v1 BETWEEN 6 AND 48));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 16 AND 65) OR ((NOT((test.v1 = 18))) AND (test.v2 >= 81))) OR (test.v1 BETWEEN 6 AND 48))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 16 AND 65) OR (v1<>18 AND v2>=81)) OR (v1 BETWEEN 6 AND 48));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {49, 45, 86}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {84, 80, 88}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=31 AND v2>=55) OR (v1 BETWEEN 1 AND 28)) OR (v1 BETWEEN 26 AND 41 AND v2<=15));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 31) AND (test.v2 >= 55)) OR (test.v1 BETWEEN 1 AND 28)) OR ((test.v1 BETWEEN 26 AND 41) AND (test.v2 <= 15)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=31 AND v2>=55) OR (v1 BETWEEN 1 AND 28)) OR (v1 BETWEEN 26 AND 41 AND v2<=15));",
				Expected: []sql.Row{{19, 16, 95}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {92, 86, 88}, {15, 14, 57}, {91, 86, 56}, {16, 14, 98}, {21, 19, 48}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {73, 65, 97}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {100, 98, 61}, {13, 13, 44}, {59, 56, 60}, {67, 60, 66}, {24, 24, 60}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {25, 25, 14}, {27, 27, 9}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=77 AND v2 BETWEEN 4 AND 26) OR (v1<=1 AND v2<>20)) OR (v1>8 AND v2>40));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 77) AND (test.v2 BETWEEN 4 AND 26)) OR ((test.v1 <= 1) AND (NOT((test.v2 = 20))))) OR ((test.v1 > 8) AND (test.v2 > 40)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=77 AND v2 BETWEEN 4 AND 26) OR (v1<=1 AND v2<>20)) OR (v1>8 AND v2>40));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {55, 50, 14}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {21, 19, 48}, {46, 45, 22}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {73, 65, 97}, {90, 84, 45}, {0, 0, 48}, {11, 9, 44}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {1, 0, 52}, {13, 13, 44}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {25, 25, 14}, {27, 27, 9}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1=37 AND v2>32) OR (v1>13 AND v2>51)) AND (v1 BETWEEN 8 AND 19) OR (v1<>4)) OR (v1<=58 AND v2<>70)) OR (v1<87 AND v2>=24));",
				Expected: []sql.Row{{"Filter(((((((test.v1 = 37) AND (test.v2 > 32)) OR ((test.v1 > 13) AND (test.v2 > 51))) AND (test.v1 BETWEEN 8 AND 19)) OR (NOT((test.v1 = 4)))) OR ((test.v1 <= 58) AND (NOT((test.v2 = 70))))) OR ((test.v1 < 87) AND (test.v2 >= 24)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1=37 AND v2>32) OR (v1>13 AND v2>51)) AND (v1 BETWEEN 8 AND 19) OR (v1<>4)) OR (v1<=58 AND v2<>70)) OR (v1<87 AND v2>=24));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>50) OR (v1<=88)) OR (v1>=28 AND v2 BETWEEN 30 AND 85));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 50))) OR (test.v1 <= 88)) OR ((test.v1 >= 28) AND (test.v2 BETWEEN 30 AND 85)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>50) OR (v1<=88)) OR (v1>=28 AND v2 BETWEEN 30 AND 85));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=94) OR (v1<=87));",
				Expected: []sql.Row{{"Filter((test.v1 <= 94) OR (test.v1 <= 87))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=94) OR (v1<=87));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>56 AND v2<93) OR (v1<73 AND v2<=70));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 56))) AND (test.v2 < 93)) OR ((test.v1 < 73) AND (test.v2 <= 70)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>56 AND v2<93) OR (v1<73 AND v2<=70));",
				Expected: []sql.Row{{58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=85) OR (v1=91)) OR (v1<88 AND v2<42)) OR (v1<>42 AND v2<=10));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 85) OR (test.v1 = 91)) OR ((test.v1 < 88) AND (test.v2 < 42))) OR ((NOT((test.v1 = 42))) AND (test.v2 <= 10)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=85) OR (v1=91)) OR (v1<88 AND v2<42)) OR (v1<>42 AND v2<=10));",
				Expected: []sql.Row{{58, 56, 0}, {85, 81, 4}, {3, 2, 10}, {5, 5, 36}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {76, 69, 34}, {79, 76, 39}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {52, 48, 22}, {2, 2, 4}, {53, 49, 0}, {69, 61, 34}, {82, 79, 36}, {20, 18, 31}, {41, 42, 0}, {100, 98, 61}, {95, 93, 19}, {56, 51, 35}, {89, 84, 9}, {33, 34, 22}, {63, 58, 32}, {17, 16, 19}, {26, 25, 31}, {29, 28, 24}, {28, 27, 24}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {99, 98, 51}, {31, 31, 14}, {60, 57, 29}, {70, 63, 19}, {36, 38, 20}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>42 AND v2<=13) OR (v1=7));",
				Expected: []sql.Row{{"Filter(((test.v1 > 42) AND (test.v2 <= 13)) OR (test.v1 = 7))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>42 AND v2<=13) OR (v1=7));",
				Expected: []sql.Row{{58, 56, 0}, {85, 81, 4}, {62, 58, 12}, {54, 50, 0}, {68, 61, 3}, {53, 49, 0}, {89, 84, 9}, {51, 47, 5}, {80, 78, 0}, {98, 98, 0}, {75, 68, 11}, {94, 89, 3}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=63) OR (v1 BETWEEN 55 AND 82 AND v2 BETWEEN 0 AND 6)) OR (v1=46));",
				Expected: []sql.Row{{"Filter(((test.v1 = 63) OR ((test.v1 BETWEEN 55 AND 82) AND (test.v2 BETWEEN 0 AND 6))) OR (test.v1 = 46))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=63) OR (v1 BETWEEN 55 AND 82 AND v2 BETWEEN 0 AND 6)) OR (v1=46));",
				Expected: []sql.Row{{58, 56, 0}, {85, 81, 4}, {50, 46, 46}, {68, 61, 3}, {80, 78, 0}, {70, 63, 19}, {71, 63, 69}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 20 AND 77 AND v2>=49) OR (v1<13));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 20 AND 77) AND (test.v2 >= 49)) OR (test.v1 < 13))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 20 AND 77 AND v2>=49) OR (v1<13));",
				Expected: []sql.Row{{61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {66, 59, 54}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {73, 65, 97}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {43, 43, 63}, {1, 0, 52}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {35, 35, 89}, {39, 39, 86}, {8, 6, 51}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {37, 38, 66}, {48, 45, 63}, {6, 5, 60}, {71, 63, 69}, {34, 34, 91}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=72) OR (v1<49 AND v2<>36)) OR (v1>=10 AND v2<1));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 72) OR ((test.v1 < 49) AND (NOT((test.v2 = 36))))) OR ((test.v1 >= 10) AND (test.v2 < 1)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=72) OR (v1<49 AND v2<>36)) OR (v1>=10 AND v2<1));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {9, 6, 60}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 18 AND 87) OR (v1>=42 AND v2>44)) OR (v1<26 AND v2<=55)) AND (v1<=21);",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 18 AND 87) OR ((test.v1 >= 42) AND (test.v2 > 44))) OR ((test.v1 < 26) AND (test.v2 <= 55))) AND (test.v1 <= 21))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 18 AND 87) OR (v1>=42 AND v2>44)) OR (v1<26 AND v2<=55)) AND (v1<=21);",
				Expected: []sql.Row{{3, 2, 10}, {5, 5, 36}, {21, 19, 48}, {4, 3, 35}, {7, 6, 1}, {2, 2, 4}, {0, 0, 48}, {11, 9, 44}, {20, 18, 31}, {1, 0, 52}, {13, 13, 44}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {22, 19, 75}, {18, 16, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>98 AND v2<75) OR (v1=47));",
				Expected: []sql.Row{{"Filter(((test.v1 > 98) AND (test.v2 < 75)) OR (test.v1 = 47))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>98 AND v2<75) OR (v1=47));",
				Expected: []sql.Row{{51, 47, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=57 AND v2>=43) OR (v1<27 AND v2<>3));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 57) AND (test.v2 >= 43)) OR ((test.v1 < 27) AND (NOT((test.v2 = 3)))))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=57 AND v2>=43) OR (v1<27 AND v2<>3));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {15, 14, 57}, {16, 14, 98}, {21, 19, 48}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {43, 43, 63}, {1, 0, 52}, {13, 13, 44}, {59, 56, 60}, {24, 24, 60}, {35, 35, 89}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {38, 39, 55}, {40, 40, 97}, {37, 38, 66}, {48, 45, 63}, {25, 25, 14}, {6, 5, 60}, {22, 19, 75}, {44, 44, 48}, {18, 16, 53}, {34, 34, 91}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 16 AND 45 AND v2=22) OR (v1>=87 AND v2=48));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 16 AND 45) AND (test.v2 = 22)) OR ((test.v1 >= 87) AND (test.v2 = 48)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 16 AND 45 AND v2=22) OR (v1>=87 AND v2=48));",
				Expected: []sql.Row{{46, 45, 22}, {33, 34, 22}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 45 AND 74 AND v2<=74) OR (v1<>48 AND v2>58));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 45 AND 74) AND (test.v2 <= 74)) OR ((NOT((test.v1 = 48))) AND (test.v2 > 58)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 45 AND 74 AND v2<=74) OR (v1<>48 AND v2>58));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {49, 45, 86}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {45, 44, 67}, {52, 48, 22}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {10, 6, 73}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {23, 19, 97}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {34, 34, 91}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<32 AND v2>=79) OR (v1<=28)) OR (v1 BETWEEN 46 AND 72)) OR (v1>16));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 32) AND (test.v2 >= 79)) OR (test.v1 <= 28)) OR (test.v1 BETWEEN 46 AND 72)) OR (test.v1 > 16))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<32 AND v2>=79) OR (v1<=28)) OR (v1 BETWEEN 46 AND 72)) OR (v1>16));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<10) OR (v1<89));",
				Expected: []sql.Row{{"Filter((test.v1 < 10) OR (test.v1 < 89))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<10) OR (v1<89));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=64 AND v2>=69) OR (v1>=2));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 64) AND (test.v2 >= 69)) OR (test.v1 >= 2))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=64 AND v2>=69) OR (v1>=2));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {85, 81, 4}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {93, 87, 51}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {95, 93, 19}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {89, 84, 9}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {80, 78, 0}, {86, 82, 16}, {96, 93, 21}, {98, 98, 0}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {75, 68, 11}, {84, 80, 88}, {99, 98, 51}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}, {94, 89, 3}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=65) OR (v1<64));",
				Expected: []sql.Row{{"Filter((test.v1 <= 65) OR (test.v1 < 64))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=65) OR (v1<64));",
				Expected: []sql.Row{{19, 16, 95}, {58, 56, 0}, {61, 57, 49}, {72, 65, 80}, {3, 2, 10}, {49, 45, 86}, {5, 5, 36}, {9, 6, 60}, {50, 46, 46}, {62, 58, 12}, {15, 14, 57}, {47, 45, 31}, {54, 50, 0}, {55, 50, 14}, {16, 14, 98}, {66, 59, 54}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {68, 61, 3}, {4, 3, 35}, {7, 6, 1}, {45, 44, 67}, {52, 48, 22}, {2, 2, 4}, {12, 9, 97}, {30, 28, 83}, {53, 49, 0}, {69, 61, 34}, {73, 65, 97}, {0, 0, 48}, {10, 6, 73}, {11, 9, 44}, {20, 18, 31}, {41, 42, 0}, {43, 43, 63}, {65, 59, 45}, {1, 0, 52}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {39, 39, 86}, {8, 6, 51}, {14, 14, 53}, {17, 16, 19}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {51, 47, 5}, {64, 59, 29}, {25, 25, 14}, {27, 27, 9}, {32, 33, 39}, {6, 5, 60}, {22, 19, 75}, {31, 31, 14}, {44, 44, 48}, {60, 57, 29}, {70, 63, 19}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {36, 38, 20}, {42, 42, 82}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=46) OR (v1>9 AND v2>=22));",
				Expected: []sql.Row{{"Filter((test.v1 = 46) OR ((test.v1 > 9) AND (test.v2 >= 22)))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=46) OR (v1>9 AND v2>=22));",
				Expected: []sql.Row{{19, 16, 95}, {61, 57, 49}, {72, 65, 80}, {49, 45, 86}, {50, 46, 46}, {92, 86, 88}, {15, 14, 57}, {47, 45, 31}, {87, 83, 30}, {91, 86, 56}, {16, 14, 98}, {66, 59, 54}, {76, 69, 34}, {79, 76, 39}, {21, 19, 48}, {46, 45, 22}, {57, 54, 38}, {93, 87, 51}, {45, 44, 67}, {52, 48, 22}, {30, 28, 83}, {69, 61, 34}, {73, 65, 97}, {90, 84, 45}, {82, 79, 36}, {20, 18, 31}, {43, 43, 63}, {65, 59, 45}, {100, 98, 61}, {13, 13, 44}, {56, 51, 35}, {59, 56, 60}, {67, 60, 66}, {77, 72, 52}, {24, 24, 60}, {33, 34, 22}, {35, 35, 89}, {63, 58, 32}, {83, 80, 61}, {39, 39, 86}, {14, 14, 53}, {23, 19, 97}, {26, 25, 31}, {29, 28, 24}, {38, 39, 55}, {40, 40, 97}, {74, 67, 95}, {78, 74, 81}, {81, 78, 90}, {88, 83, 74}, {28, 27, 24}, {37, 38, 66}, {48, 45, 63}, {64, 59, 29}, {32, 33, 39}, {84, 80, 88}, {99, 98, 51}, {22, 19, 75}, {44, 44, 48}, {60, 57, 29}, {71, 63, 69}, {18, 16, 53}, {34, 34, 91}, {42, 42, 82}, {97, 93, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 21 AND 33 AND v2>25) OR (v1<0));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 21 AND 33) AND (test.v2 > 25)) OR (test.v1 < 0))"}, {" └─ Projected table access on [pk v1 v2]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 21 AND 33 AND v2>25) OR (v1<0));",
				Expected: []sql.Row{{30, 28, 83}, {24, 24, 60}, {26, 25, 31}, {32, 33, 39}},
			},
		},
	},
	{
		Name: "Three column index",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, v2 BIGINT, v3 BIGINT, INDEX (v1, v2, v3));",
			`INSERT INTO test VALUES (0,0,3,16),(1,2,65,9),(2,3,38,37),(3,3,99,99),(4,5,17,42),(5,6,6,76),(6,6,81,33),
(7,7,33,51),(8,7,37,42),(9,8,9,21),(10,8,37,90),(11,9,39,20),(12,9,71,82),(13,10,16,21),(14,10,32,46),(15,10,47,36),
(16,12,44,84),(17,12,66,40),(18,13,47,30),(19,13,56,41),(20,14,38,24),(21,14,91,1),(22,15,2,69),(23,16,40,36),
(24,20,29,93),(25,21,9,89),(26,21,42,76),(27,23,13,53),(28,23,28,68),(29,23,28,90),(30,23,30,44),(31,24,20,8),
(32,25,49,88),(33,26,15,28),(34,27,35,12),(35,28,39,84),(36,29,7,38),(37,29,21,74),(38,29,27,48),(39,29,77,46),
(40,31,47,21),(41,31,47,91),(42,32,40,76),(43,33,70,50),(44,34,27,58),(45,35,32,36),(46,36,4,36),(47,36,84,75),
(48,37,27,32),(49,38,88,68),(50,41,17,68),(51,41,77,26),(52,42,80,85),(53,45,1,57),(54,46,58,8),(55,49,26,11),
(56,50,49,20),(57,50,86,6),(58,54,13,78),(59,54,57,83),(60,55,45,46),(61,55,81,80),(62,56,0,97),(63,56,8,78),
(64,56,58,4),(65,56,66,33),(66,57,7,52),(67,59,77,53),(68,60,8,70),(69,61,11,25),(70,63,85,23),(71,65,17,9),
(72,66,46,46),(73,66,73,4),(74,67,55,27),(75,70,8,54),(76,70,58,33),(77,71,39,15),(78,72,65,64),(79,74,78,26),
(80,75,91,35),(81,76,40,52),(82,76,44,87),(83,81,32,4),(84,82,11,6),(85,82,46,32),(86,84,40,8),(87,84,93,37),
(88,85,53,50),(89,86,63,79),(90,87,22,34),(91,87,57,62),(92,88,88,42),(93,90,30,67),(94,91,15,15),(95,93,7,26),
(96,94,92,38),(97,95,89,66),(98,97,63,19),(99,98,31,21),(100,98,42,22);`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>87 AND v2 BETWEEN 8 AND 33) OR (v1 BETWEEN 39 AND 69 AND v3<4));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 87))) AND (test.v2 BETWEEN 8 AND 33)) OR ((test.v1 BETWEEN 39 AND 69) AND (test.v3 < 4)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>87 AND v2 BETWEEN 8 AND 33) OR (v1 BETWEEN 39 AND 69 AND v3<4));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {84, 82, 11, 6}, {94, 91, 15, 15}, {27, 23, 13, 53}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {13, 10, 16, 21}, {25, 21, 9, 89}, {4, 5, 17, 42}, {29, 23, 28, 90}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {55, 49, 26, 11}, {99, 98, 31, 21}, {33, 26, 15, 28}, {58, 54, 13, 78}, {93, 90, 30, 67}, {9, 8, 9, 21}, {24, 20, 29, 93}, {30, 23, 30, 44}, {69, 61, 11, 25}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=55 AND v2>=72 AND v3=63) AND (v1<>54 AND v2 BETWEEN 3 AND 80) OR (v1=15)) AND (v1<>50);",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 55) AND (test.v2 >= 72)) AND (test.v3 = 63)) AND ((NOT((test.v1 = 54))) AND (test.v2 BETWEEN 3 AND 80))) OR (test.v1 = 15)) AND (NOT((test.v1 = 50))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=55 AND v2>=72 AND v3=63) AND (v1<>54 AND v2 BETWEEN 3 AND 80) OR (v1=15)) AND (v1<>50);",
				Expected: []sql.Row{{22, 15, 2, 69}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<93 AND v2<39 AND v3 BETWEEN 30 AND 97) OR (v1>54)) OR (v1<66));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 93) AND (test.v2 < 39)) AND (test.v3 BETWEEN 30 AND 97)) OR (test.v1 > 54)) OR (test.v1 < 66))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<93 AND v2<39 AND v3 BETWEEN 30 AND 97) OR (v1>54)) OR (v1<66));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>59 AND v2<=15) OR (v1 BETWEEN 2 AND 51)) OR (v1>15 AND v2 BETWEEN 31 AND 81));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 59))) AND (test.v2 <= 15)) OR (test.v1 BETWEEN 2 AND 51)) OR ((test.v1 > 15) AND (test.v2 BETWEEN 31 AND 81)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>59 AND v2<=15) OR (v1 BETWEEN 2 AND 51)) OR (v1>15 AND v2 BETWEEN 31 AND 81));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {85, 82, 46, 32}, {20, 14, 38, 24}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<3 AND v2<>23 AND v3<>11) OR (v1<>49)) AND (v1<=41 AND v2>40);",
				Expected: []sql.Row{{"Filter(((((test.v1 < 3) AND (NOT((test.v2 = 23)))) AND (NOT((test.v3 = 11)))) OR (NOT((test.v1 = 49)))) AND ((test.v1 <= 41) AND (test.v2 > 40)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<3 AND v2<>23 AND v3<>11) OR (v1<>49)) AND (v1<=41 AND v2>40);",
				Expected: []sql.Row{{32, 25, 49, 88}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {47, 36, 84, 75}, {51, 41, 77, 26}, {1, 2, 65, 9}, {6, 6, 81, 33}, {16, 12, 44, 84}, {49, 38, 88, 68}, {18, 13, 47, 30}, {17, 12, 66, 40}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {21, 14, 91, 1}, {39, 29, 77, 46}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 28 AND 38 AND v3<33) OR (v1 BETWEEN 75 AND 85)) AND (v1>=60) OR (v1>=53 AND v2 BETWEEN 36 AND 53 AND v3>48));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 28 AND 38) AND (test.v3 < 33)) OR (test.v1 BETWEEN 75 AND 85)) AND (test.v1 >= 60)) OR (((test.v1 >= 53) AND (test.v2 BETWEEN 36 AND 53)) AND (test.v3 > 48)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 28 AND 38 AND v3<33) OR (v1 BETWEEN 75 AND 85)) AND (v1>=60) OR (v1>=53 AND v2 BETWEEN 36 AND 53 AND v3>48));",
				Expected: []sql.Row{{88, 85, 53, 50}, {84, 82, 11, 6}, {80, 75, 91, 35}, {81, 76, 40, 52}, {82, 76, 44, 87}, {85, 82, 46, 32}, {87, 84, 93, 37}, {86, 84, 40, 8}, {83, 81, 32, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<6 AND v2<>44) OR (v1 BETWEEN 27 AND 96)) OR (v1>22 AND v2<>30 AND v3<49));",
				Expected: []sql.Row{{"Filter((((test.v1 < 6) AND (NOT((test.v2 = 44)))) OR (test.v1 BETWEEN 27 AND 96)) OR (((test.v1 > 22) AND (NOT((test.v2 = 30)))) AND (test.v3 < 49)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<6 AND v2<>44) OR (v1 BETWEEN 27 AND 96)) OR (v1>22 AND v2<>30 AND v3<49));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>29 AND v2=40) OR (v1<=74)) OR (v1<13 AND v2 BETWEEN 27 AND 82 AND v3<82));",
				Expected: []sql.Row{{"Filter((((test.v1 > 29) AND (test.v2 = 40)) OR (test.v1 <= 74)) OR (((test.v1 < 13) AND (test.v2 BETWEEN 27 AND 82)) AND (test.v3 < 82)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>29 AND v2=40) OR (v1<=74)) OR (v1<13 AND v2 BETWEEN 27 AND 82 AND v3<82));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>6 AND v2 BETWEEN 0 AND 97) OR (v1<>40 AND v3<10 AND v2<>10));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 6))) AND (test.v2 BETWEEN 0 AND 97)) OR (((NOT((test.v1 = 40))) AND (test.v3 < 10)) AND (NOT((test.v2 = 10)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>6 AND v2 BETWEEN 0 AND 97) OR (v1<>40 AND v3<10 AND v2<>10));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=35) OR (v1=86)) OR (v1>41 AND v2>=92)) OR (v1<>28));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 35) OR (test.v1 = 86)) OR ((test.v1 > 41) AND (test.v2 >= 92))) OR (NOT((test.v1 = 28))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=35) OR (v1=86)) OR (v1>41 AND v2>=92)) OR (v1<>28));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<16 AND v3=63 AND v2>=20) OR (v1<>41)) OR (v1<=74 AND v3 BETWEEN 14 AND 74 AND v2<>13));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 16) AND (test.v3 = 63)) AND (test.v2 >= 20)) OR (NOT((test.v1 = 41)))) OR (((test.v1 <= 74) AND (test.v3 BETWEEN 14 AND 74)) AND (NOT((test.v2 = 13)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<16 AND v3=63 AND v2>=20) OR (v1<>41)) OR (v1<=74 AND v3 BETWEEN 14 AND 74 AND v2<>13));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 1 AND 11) OR (v1>2 AND v3<=93 AND v2 BETWEEN 28 AND 84)) OR (v1 BETWEEN 34 AND 52 AND v2=73)) OR (v1<>80 AND v2<=32 AND v3 BETWEEN 3 AND 7));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 1 AND 11) OR (((test.v1 > 2) AND (test.v3 <= 93)) AND (test.v2 BETWEEN 28 AND 84))) OR ((test.v1 BETWEEN 34 AND 52) AND (test.v2 = 73))) OR (((NOT((test.v1 = 80))) AND (test.v2 <= 32)) AND (test.v3 BETWEEN 3 AND 7)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 1 AND 11) OR (v1>2 AND v3<=93 AND v2 BETWEEN 28 AND 84)) OR (v1 BETWEEN 34 AND 52 AND v2=73)) OR (v1<>80 AND v2<=32 AND v3 BETWEEN 3 AND 7));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {3, 3, 99, 99}, {47, 36, 84, 75}, {7, 7, 33, 51}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {52, 42, 80, 85}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {85, 82, 46, 32}, {20, 14, 38, 24}, {86, 84, 40, 8}, {28, 23, 28, 68}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<45) OR (v1<>72)) OR (v1 BETWEEN 10 AND 86 AND v2=92)) OR (v1 BETWEEN 32 AND 81 AND v2>59));",
				Expected: []sql.Row{{"Filter((((test.v1 < 45) OR (NOT((test.v1 = 72)))) OR ((test.v1 BETWEEN 10 AND 86) AND (test.v2 = 92))) OR ((test.v1 BETWEEN 32 AND 81) AND (test.v2 > 59)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<45) OR (v1<>72)) OR (v1 BETWEEN 10 AND 86 AND v2=92)) OR (v1 BETWEEN 32 AND 81 AND v2>59));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=11 AND v2>50 AND v3 BETWEEN 5 AND 67) AND (v1>74 AND v2 BETWEEN 6 AND 63 AND v3<=1) OR (v1>=53 AND v2>69 AND v3>54));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 11) AND (test.v2 > 50)) AND (test.v3 BETWEEN 5 AND 67)) AND (((test.v1 > 74) AND (test.v2 BETWEEN 6 AND 63)) AND (test.v3 <= 1))) OR (((test.v1 >= 53) AND (test.v2 > 69)) AND (test.v3 > 54)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=11 AND v2>50 AND v3 BETWEEN 5 AND 67) AND (v1>74 AND v2 BETWEEN 6 AND 63 AND v3<=1) OR (v1>=53 AND v2>69 AND v3>54));",
				Expected: []sql.Row{{97, 95, 89, 66}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>9) OR (v1>14 AND v2>10));",
				Expected: []sql.Row{{"Filter((test.v1 > 9) OR ((test.v1 > 14) AND (test.v2 > 10)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>9) OR (v1>14 AND v2>10));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=39 AND v2 BETWEEN 17 AND 34) OR (v1=89 AND v3>49 AND v2>58)) OR (v1>97));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 39) AND (test.v2 BETWEEN 17 AND 34)) OR (((test.v1 = 89) AND (test.v3 > 49)) AND (test.v2 > 58))) OR (test.v1 > 97))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=39 AND v2 BETWEEN 17 AND 34) OR (v1=89 AND v3>49 AND v2>58)) OR (v1>97));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {7, 7, 33, 51}, {38, 29, 27, 48}, {4, 5, 17, 42}, {29, 23, 28, 90}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {99, 98, 31, 21}, {24, 20, 29, 93}, {30, 23, 30, 44}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<7 AND v2<>43) OR (v1<>5 AND v3<0 AND v2<1));",
				Expected: []sql.Row{{"Filter(((test.v1 < 7) AND (NOT((test.v2 = 43)))) OR (((NOT((test.v1 = 5))) AND (test.v3 < 0)) AND (test.v2 < 1)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<7 AND v2<>43) OR (v1<>5 AND v3<0 AND v2<1));",
				Expected: []sql.Row{{2, 3, 38, 37}, {3, 3, 99, 99}, {1, 2, 65, 9}, {6, 6, 81, 33}, {4, 5, 17, 42}, {5, 6, 6, 76}, {0, 0, 3, 16}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>30 AND v2 BETWEEN 23 AND 60 AND v3=58) OR (v1<=3 AND v2 BETWEEN 68 AND 72)) OR (v1<=17)) OR (v1>6 AND v2>=24)) AND (v1<89 AND v2=73);",
				Expected: []sql.Row{{"Filter(((((((test.v1 > 30) AND (test.v2 BETWEEN 23 AND 60)) AND (test.v3 = 58)) OR ((test.v1 <= 3) AND (test.v2 BETWEEN 68 AND 72))) OR (test.v1 <= 17)) OR ((test.v1 > 6) AND (test.v2 >= 24))) AND ((test.v1 < 89) AND (test.v2 = 73)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>30 AND v2 BETWEEN 23 AND 60 AND v3=58) OR (v1<=3 AND v2 BETWEEN 68 AND 72)) OR (v1<=17)) OR (v1>6 AND v2>=24)) AND (v1<89 AND v2=73);",
				Expected: []sql.Row{{73, 66, 73, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>27) OR (v1>=22 AND v2>99 AND v3>=43));",
				Expected: []sql.Row{{"Filter((test.v1 > 27) OR (((test.v1 >= 22) AND (test.v2 > 99)) AND (test.v3 >= 43)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>27) OR (v1>=22 AND v2>99 AND v3>=43));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>25 AND v2 BETWEEN 1 AND 82) OR (v1>31 AND v2=86));",
				Expected: []sql.Row{{"Filter(((test.v1 > 25) AND (test.v2 BETWEEN 1 AND 82)) OR ((test.v1 > 31) AND (test.v2 = 86)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>25 AND v2 BETWEEN 1 AND 82) OR (v1>31 AND v2=86));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {60, 55, 45, 46}, {89, 86, 63, 79}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {93, 90, 30, 67}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {85, 82, 46, 32}, {90, 87, 22, 34}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>12 AND v2<60 AND v3=91) OR (v1>63 AND v2>=8 AND v3<>32)) OR (v1>35 AND v3>=98));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 12))) AND (test.v2 < 60)) AND (test.v3 = 91)) OR (((test.v1 > 63) AND (test.v2 >= 8)) AND (NOT((test.v3 = 32))))) OR ((test.v1 > 35) AND (test.v3 >= 98)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>12 AND v2<60 AND v3=91) OR (v1>63 AND v2>=8 AND v3<>32)) OR (v1>35 AND v3>=98));",
				Expected: []sql.Row{{88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {71, 65, 17, 9}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {74, 67, 55, 27}, {82, 76, 44, 87}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {41, 31, 47, 91}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {73, 66, 73, 4}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {86, 84, 40, 8}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>27 AND v3=10) OR (v1>=25 AND v2<26)) AND (v1>=62 AND v2<=96 AND v3>28);",
				Expected: []sql.Row{{"Filter((((test.v1 > 27) AND (test.v3 = 10)) OR ((test.v1 >= 25) AND (test.v2 < 26))) AND (((test.v1 >= 62) AND (test.v2 <= 96)) AND (test.v3 > 28)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>27 AND v3=10) OR (v1>=25 AND v2<26)) AND (v1>=62 AND v2<=96 AND v3>28);",
				Expected: []sql.Row{{90, 87, 22, 34}, {75, 70, 8, 54}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>30 AND v2=40 AND v3 BETWEEN 35 AND 35) OR (v1 BETWEEN 20 AND 77 AND v2>=56 AND v3>62));",
				Expected: []sql.Row{{"Filter((((test.v1 > 30) AND (test.v2 = 40)) AND (test.v3 BETWEEN 35 AND 35)) OR (((test.v1 BETWEEN 20 AND 77) AND (test.v2 >= 56)) AND (test.v3 > 62)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>30 AND v2=40 AND v3 BETWEEN 35 AND 35) OR (v1 BETWEEN 20 AND 77 AND v2>=56 AND v3>62));",
				Expected: []sql.Row{{47, 36, 84, 75}, {78, 72, 65, 64}, {49, 38, 88, 68}, {52, 42, 80, 85}, {59, 54, 57, 83}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<=92 AND v3=0 AND v2>=9) OR (v1 BETWEEN 48 AND 79)) OR (v1>70 AND v2<=26 AND v3 BETWEEN 14 AND 82)) OR (v1>=29 AND v2<>21 AND v3 BETWEEN 37 AND 55)) OR (v1>=6 AND v3<=47));",
				Expected: []sql.Row{{"Filter(((((((test.v1 <= 92) AND (test.v3 = 0)) AND (test.v2 >= 9)) OR (test.v1 BETWEEN 48 AND 79)) OR (((test.v1 > 70) AND (test.v2 <= 26)) AND (test.v3 BETWEEN 14 AND 82))) OR (((test.v1 >= 29) AND (NOT((test.v2 = 21)))) AND (test.v3 BETWEEN 37 AND 55))) OR ((test.v1 >= 6) AND (test.v3 <= 47)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<=92 AND v3=0 AND v2>=9) OR (v1 BETWEEN 48 AND 79)) OR (v1>70 AND v2<=26 AND v3 BETWEEN 14 AND 82)) OR (v1>=29 AND v2<>21 AND v3 BETWEEN 37 AND 55)) OR (v1>=6 AND v3<=47));",
				Expected: []sql.Row{{14, 10, 32, 46}, {64, 56, 58, 4}, {88, 85, 53, 50}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {46, 36, 4, 36}, {60, 55, 45, 46}, {18, 13, 47, 30}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {9, 8, 9, 21}, {8, 7, 37, 42}, {30, 23, 30, 44}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=15 AND v2>28) OR (v1<=84 AND v2<>91));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 15) AND (test.v2 > 28)) OR ((test.v1 <= 84) AND (NOT((test.v2 = 91)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=15 AND v2>28) OR (v1<=84 AND v2<>91));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=49 AND v2<=52 AND v3 BETWEEN 23 AND 38) OR (v1 BETWEEN 30 AND 84 AND v2=94));",
				Expected: []sql.Row{{"Filter((((test.v1 = 49) AND (test.v2 <= 52)) AND (test.v3 BETWEEN 23 AND 38)) OR ((test.v1 BETWEEN 30 AND 84) AND (test.v2 = 94)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=49 AND v2<=52 AND v3 BETWEEN 23 AND 38) OR (v1 BETWEEN 30 AND 84 AND v2=94));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 8 AND 18) OR (v1=27 AND v2<=4 AND v3<14));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 8 AND 18) OR (((test.v1 = 27) AND (test.v2 <= 4)) AND (test.v3 < 14)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 8 AND 18) OR (v1=27 AND v2<=4 AND v3<14));",
				Expected: []sql.Row{{14, 10, 32, 46}, {11, 9, 39, 20}, {12, 9, 71, 82}, {22, 15, 2, 69}, {13, 10, 16, 21}, {16, 12, 44, 84}, {18, 13, 47, 30}, {17, 12, 66, 40}, {19, 13, 56, 41}, {15, 10, 47, 36}, {9, 8, 9, 21}, {10, 8, 37, 90}, {21, 14, 91, 1}, {23, 16, 40, 36}, {20, 14, 38, 24}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=4) OR (v1=0 AND v2<=63));",
				Expected: []sql.Row{{"Filter((test.v1 >= 4) OR ((test.v1 = 0) AND (test.v2 <= 63)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=4) OR (v1=0 AND v2<=63));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<=99 AND v2<>86) AND (v1>=21 AND v2>36);",
				Expected: []sql.Row{{"Filter(((test.v1 <= 99) AND (NOT((test.v2 = 86)))) AND ((test.v1 >= 21) AND (test.v2 > 36)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<=99 AND v2<>86) AND (v1>=21 AND v2>36);",
				Expected: []sql.Row{{32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {47, 36, 84, 75}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {77, 71, 39, 15}, {98, 97, 63, 19}, {26, 21, 42, 76}, {52, 42, 80, 85}, {92, 88, 88, 42}, {35, 28, 39, 84}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {87, 84, 93, 37}, {86, 84, 40, 8}, {56, 50, 49, 20}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>43) OR (v1=14));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 43))) OR (test.v1 = 14))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>43) OR (v1=14));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 21 AND 44 AND v2 BETWEEN 18 AND 88 AND v3=42) AND (v1>=52 AND v2>37 AND v3 BETWEEN 26 AND 91);",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 21 AND 44) AND (test.v2 BETWEEN 18 AND 88)) AND (test.v3 = 42)) AND (((test.v1 >= 52) AND (test.v2 > 37)) AND (test.v3 BETWEEN 26 AND 91)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 21 AND 44 AND v2 BETWEEN 18 AND 88 AND v3=42) AND (v1>=52 AND v2>37 AND v3 BETWEEN 26 AND 91);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>29 AND v2>93 AND v3<64) OR (v1<>54 AND v2>35));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 29))) AND (test.v2 > 93)) AND (test.v3 < 64)) OR ((NOT((test.v1 = 54))) AND (test.v2 > 35)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>29 AND v2>93 AND v3<64) OR (v1<>54 AND v2>35));",
				Expected: []sql.Row{{32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {47, 36, 84, 75}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {98, 97, 63, 19}, {26, 21, 42, 76}, {52, 42, 80, 85}, {92, 88, 88, 42}, {8, 7, 37, 42}, {10, 8, 37, 90}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {56, 50, 49, 20}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<88) OR (v1<>45 AND v2<89)) AND (v1=98 AND v2<=81 AND v3 BETWEEN 34 AND 77);",
				Expected: []sql.Row{{"Filter(((test.v1 < 88) OR ((NOT((test.v1 = 45))) AND (test.v2 < 89))) AND (((test.v1 = 98) AND (test.v2 <= 81)) AND (test.v3 BETWEEN 34 AND 77)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<88) OR (v1<>45 AND v2<89)) AND (v1=98 AND v2<=81 AND v3 BETWEEN 34 AND 77);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>65 AND v2<>86 AND v3<=2) OR (v1<>37 AND v2<=96));",
				Expected: []sql.Row{{"Filter((((test.v1 > 65) AND (NOT((test.v2 = 86)))) AND (test.v3 <= 2)) OR ((NOT((test.v1 = 37))) AND (test.v2 <= 96)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>65 AND v2<>86 AND v3<=2) OR (v1<>37 AND v2<=96));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>79) OR (v1>66)) AND (v1<>81 AND v2<34 AND v3>=25) AND (v1<42) OR (v1<>12 AND v2<>17 AND v3<=23));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 79))) OR (test.v1 > 66)) AND (((NOT((test.v1 = 81))) AND (test.v2 < 34)) AND (test.v3 >= 25))) AND (test.v1 < 42)) OR (((NOT((test.v1 = 12))) AND (NOT((test.v2 = 17)))) AND (test.v3 <= 23)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>79) OR (v1>66)) AND (v1<>81 AND v2<34 AND v3>=25) AND (v1<42) OR (v1<>12 AND v2<>17 AND v3<=23));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {64, 56, 58, 4}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {27, 23, 13, 53}, {7, 7, 33, 51}, {38, 29, 27, 48}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {34, 27, 35, 12}, {13, 10, 16, 21}, {25, 21, 9, 89}, {46, 36, 4, 36}, {4, 5, 17, 42}, {29, 23, 28, 90}, {36, 29, 7, 38}, {50, 41, 17, 68}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {55, 49, 26, 11}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {9, 8, 9, 21}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {70, 63, 85, 23}, {57, 50, 86, 6}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<81 AND v2>=28) OR (v1=19 AND v2 BETWEEN 9 AND 57));",
				Expected: []sql.Row{{"Filter(((test.v1 < 81) AND (test.v2 >= 28)) OR ((test.v1 = 19) AND (test.v2 BETWEEN 9 AND 57)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<81 AND v2>=28) OR (v1=19 AND v2 BETWEEN 9 AND 57));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {47, 36, 84, 75}, {80, 75, 91, 35}, {7, 7, 33, 51}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {18, 13, 47, 30}, {29, 23, 28, 90}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {52, 42, 80, 85}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<32) OR (v1>=52)) OR (v1>=98));",
				Expected: []sql.Row{{"Filter(((test.v1 < 32) OR (test.v1 >= 52)) OR (test.v1 >= 98))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<32) OR (v1>=52)) OR (v1>=98));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>47) OR (v1<>25));",
				Expected: []sql.Row{{"Filter((test.v1 > 47) OR (NOT((test.v1 = 25))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>47) OR (v1<>25));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>27 AND v2<=80 AND v3 BETWEEN 11 AND 37) AND (v1=87 AND v2<54) AND (v1>29);",
				Expected: []sql.Row{{"Filter(((((test.v1 > 27) AND (test.v2 <= 80)) AND (test.v3 BETWEEN 11 AND 37)) AND ((test.v1 = 87) AND (test.v2 < 54))) AND (test.v1 > 29))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>27 AND v2<=80 AND v3 BETWEEN 11 AND 37) AND (v1=87 AND v2<54) AND (v1>29);",
				Expected: []sql.Row{{90, 87, 22, 34}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>65 AND v2>=52) OR (v1<=85)) OR (v1<=64 AND v3=9 AND v2>=36));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 65))) AND (test.v2 >= 52)) OR (test.v1 <= 85)) OR (((test.v1 <= 64) AND (test.v3 = 9)) AND (test.v2 >= 36)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>65 AND v2>=52) OR (v1<=85)) OR (v1<=64 AND v3=9 AND v2>=36));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=12 AND v2>=65) OR (v1=11 AND v2<1));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 12) AND (test.v2 >= 65)) OR ((test.v1 = 11) AND (test.v2 < 1)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=12 AND v2>=65) OR (v1=11 AND v2<1));",
				Expected: []sql.Row{{97, 95, 89, 66}, {47, 36, 84, 75}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {65, 56, 66, 33}, {67, 59, 77, 53}, {49, 38, 88, 68}, {79, 74, 78, 26}, {17, 12, 66, 40}, {43, 33, 70, 50}, {52, 42, 80, 85}, {92, 88, 88, 42}, {73, 66, 73, 4}, {21, 14, 91, 1}, {39, 29, 77, 46}, {70, 63, 85, 23}, {87, 84, 93, 37}, {57, 50, 86, 6}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=92 AND v2<=42) OR (v1>=58));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 92) AND (test.v2 <= 42)) OR (test.v1 >= 58))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=92 AND v2<=42) OR (v1>=58));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {25, 21, 9, 89}, {46, 36, 4, 36}, {89, 86, 63, 79}, {4, 5, 17, 42}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {23, 16, 40, 36}, {42, 32, 40, 76}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>0) OR (v1<81 AND v2>=70)) OR (v1>=52));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 0))) OR ((test.v1 < 81) AND (test.v2 >= 70))) OR (test.v1 >= 52))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>0) OR (v1<81 AND v2>=70)) OR (v1>=52));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>5 AND v3<=32) OR (v1 BETWEEN 77 AND 85 AND v3 BETWEEN 16 AND 21 AND v2 BETWEEN 10 AND 42));",
				Expected: []sql.Row{{"Filter(((test.v1 > 5) AND (test.v3 <= 32)) OR (((test.v1 BETWEEN 77 AND 85) AND (test.v3 BETWEEN 16 AND 21)) AND (test.v2 BETWEEN 10 AND 42)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>5 AND v3<=32) OR (v1 BETWEEN 77 AND 85 AND v3 BETWEEN 16 AND 21 AND v2 BETWEEN 10 AND 42));",
				Expected: []sql.Row{{64, 56, 58, 4}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {51, 41, 77, 26}, {54, 46, 58, 8}, {34, 27, 35, 12}, {74, 67, 55, 27}, {13, 10, 16, 21}, {18, 13, 47, 30}, {79, 74, 78, 26}, {100, 98, 42, 22}, {31, 24, 20, 8}, {55, 49, 26, 11}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {9, 8, 9, 21}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {57, 50, 86, 6}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>43 AND v2<53 AND v3<=20) OR (v1<7 AND v2<>79));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 43))) AND (test.v2 < 53)) AND (test.v3 <= 20)) OR ((test.v1 < 7) AND (NOT((test.v2 = 79)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>43 AND v2<53 AND v3<=20) OR (v1<7 AND v2<>79));",
				Expected: []sql.Row{{2, 3, 38, 37}, {11, 9, 39, 20}, {84, 82, 11, 6}, {94, 91, 15, 15}, {3, 3, 99, 99}, {71, 65, 17, 9}, {1, 2, 65, 9}, {6, 6, 81, 33}, {34, 27, 35, 12}, {4, 5, 17, 42}, {31, 24, 20, 8}, {55, 49, 26, 11}, {77, 71, 39, 15}, {5, 6, 6, 76}, {0, 0, 3, 16}, {86, 84, 40, 8}, {56, 50, 49, 20}, {83, 81, 32, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=17 AND v2 BETWEEN 17 AND 78 AND v3=10) AND (v1<=67) AND (v1>=81 AND v2<=88 AND v3>=70);",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 17) AND (test.v2 BETWEEN 17 AND 78)) AND (test.v3 = 10)) AND (test.v1 <= 67)) AND (((test.v1 >= 81) AND (test.v2 <= 88)) AND (test.v3 >= 70)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=17 AND v2 BETWEEN 17 AND 78 AND v3=10) AND (v1<=67) AND (v1>=81 AND v2<=88 AND v3>=70);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<77 AND v2<35 AND v3=73) OR (v1=85 AND v2>0 AND v3<65)) AND (v1>=20 AND v3<23 AND v2<=81) OR (v1<34 AND v2<=21 AND v3<=45));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 77) AND (test.v2 < 35)) AND (test.v3 = 73)) OR (((test.v1 = 85) AND (test.v2 > 0)) AND (test.v3 < 65))) AND (((test.v1 >= 20) AND (test.v3 < 23)) AND (test.v2 <= 81))) OR (((test.v1 < 34) AND (test.v2 <= 21)) AND (test.v3 <= 45)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<77 AND v2<35 AND v3=73) OR (v1=85 AND v2>0 AND v3<65)) AND (v1>=20 AND v3<23 AND v2<=81) OR (v1<34 AND v2<=21 AND v3<=45));",
				Expected: []sql.Row{{13, 10, 16, 21}, {4, 5, 17, 42}, {36, 29, 7, 38}, {31, 24, 20, 8}, {33, 26, 15, 28}, {9, 8, 9, 21}, {0, 0, 3, 16}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<=69) AND (v1>=60 AND v2<18 AND v3=15) OR (v1<=75)) OR (v1>=52 AND v2<10)) OR (v1<37 AND v2<=64)) OR (v1>38 AND v2=27));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 69) AND (((test.v1 >= 60) AND (test.v2 < 18)) AND (test.v3 = 15))) OR (test.v1 <= 75)) OR ((test.v1 >= 52) AND (test.v2 < 10))) OR ((test.v1 < 37) AND (test.v2 <= 64))) OR ((test.v1 > 38) AND (test.v2 = 27)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<=69) AND (v1>=60 AND v2<18 AND v3=15) OR (v1<=75)) OR (v1>=52 AND v2<10)) OR (v1<37 AND v2<=64)) OR (v1>38 AND v2=27));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {57, 50, 86, 6}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<=76) AND (v1<=94);",
				Expected: []sql.Row{{"Filter((test.v1 <= 76) AND (test.v1 <= 94))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<=76) AND (v1<=94);",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {57, 50, 86, 6}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>40 AND v2>1) OR (v1>3 AND v2<=42)) OR (v1=99 AND v2>62)) OR (v1<17 AND v2<>75 AND v3=6));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 40))) AND (test.v2 > 1)) OR ((test.v1 > 3) AND (test.v2 <= 42))) OR ((test.v1 = 99) AND (test.v2 > 62))) OR (((test.v1 < 17) AND (NOT((test.v2 = 75)))) AND (test.v3 = 6)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>40 AND v2>1) OR (v1>3 AND v2<=42)) OR (v1=99 AND v2>62)) OR (v1<17 AND v2<>75 AND v3=6));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=39) OR (v1=40 AND v2<>49)) OR (v1<>35 AND v2>4 AND v3>26)) OR (v1=32 AND v2<>55));",
				Expected: []sql.Row{{"Filter((((test.v1 = 39) OR ((test.v1 = 40) AND (NOT((test.v2 = 49))))) OR (((NOT((test.v1 = 35))) AND (test.v2 > 4)) AND (test.v3 > 26))) OR ((test.v1 = 32) AND (NOT((test.v2 = 55)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=39) OR (v1=40 AND v2<>49)) OR (v1<>35 AND v2>4 AND v3>26)) OR (v1=32 AND v2<>55));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {12, 9, 71, 82}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {6, 6, 81, 33}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {25, 21, 9, 89}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=16 AND v2<>25 AND v3<>3) OR (v1>=4 AND v2 BETWEEN 4 AND 93 AND v3>39));",
				Expected: []sql.Row{{"Filter((((test.v1 = 16) AND (NOT((test.v2 = 25)))) AND (NOT((test.v3 = 3)))) OR (((test.v1 >= 4) AND (test.v2 BETWEEN 4 AND 93)) AND (test.v3 > 39)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=16 AND v2<>25 AND v3<>3) OR (v1>=4 AND v2 BETWEEN 4 AND 93 AND v3>39));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {88, 85, 53, 50}, {97, 95, 89, 66}, {12, 9, 71, 82}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {81, 76, 40, 52}, {67, 59, 77, 53}, {82, 76, 44, 87}, {16, 12, 44, 84}, {25, 21, 9, 89}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {29, 23, 28, 90}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {26, 21, 42, 76}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {75, 70, 8, 54}, {28, 23, 28, 68}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=51 AND v2<83) OR (v1>=15 AND v2>=3)) OR (v1<=49)) OR (v1<69));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 51) AND (test.v2 < 83)) OR ((test.v1 >= 15) AND (test.v2 >= 3))) OR (test.v1 <= 49)) OR (test.v1 < 69))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=51 AND v2<83) OR (v1>=15 AND v2>=3)) OR (v1<=49)) OR (v1<69));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<>43 AND v2>10) AND (v1>30 AND v2 BETWEEN 18 AND 78 AND v3 BETWEEN 75 AND 81);",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 43))) AND (test.v2 > 10)) AND (((test.v1 > 30) AND (test.v2 BETWEEN 18 AND 78)) AND (test.v3 BETWEEN 75 AND 81)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<>43 AND v2>10) AND (v1>30 AND v2 BETWEEN 18 AND 78 AND v3 BETWEEN 75 AND 81);",
				Expected: []sql.Row{{89, 86, 63, 79}, {42, 32, 40, 76}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>1) OR (v1<34 AND v2>=57 AND v3 BETWEEN 15 AND 67));",
				Expected: []sql.Row{{"Filter((test.v1 > 1) OR (((test.v1 < 34) AND (test.v2 >= 57)) AND (test.v3 BETWEEN 15 AND 67)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>1) OR (v1<34 AND v2>=57 AND v3 BETWEEN 15 AND 67));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>3 AND v2>32) OR (v1<=26 AND v3>=27 AND v2>=5));",
				Expected: []sql.Row{{"Filter(((test.v1 > 3) AND (test.v2 > 32)) OR (((test.v1 <= 26) AND (test.v3 >= 27)) AND (test.v2 >= 5)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>3 AND v2>32) OR (v1<=26 AND v3>=27 AND v2>=5));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {80, 75, 91, 35}, {7, 7, 33, 51}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {25, 21, 9, 89}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {92, 88, 88, 42}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {28, 23, 28, 68}, {56, 50, 49, 20}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>25 AND v2<>70 AND v3<=51) OR (v1<=71 AND v2>59));",
				Expected: []sql.Row{{"Filter((((test.v1 > 25) AND (NOT((test.v2 = 70)))) AND (test.v3 <= 51)) OR ((test.v1 <= 71) AND (test.v2 > 59)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>25 AND v2<>70 AND v3<=51) OR (v1<=71 AND v2>59));",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {47, 36, 84, 75}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {52, 42, 80, 85}, {92, 88, 88, 42}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {39, 29, 77, 46}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 0 AND 61 AND v2<0) OR (v1 BETWEEN 0 AND 38 AND v2>34)) OR (v1>=13 AND v2>=41));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 0 AND 61) AND (test.v2 < 0)) OR ((test.v1 BETWEEN 0 AND 38) AND (test.v2 > 34))) OR ((test.v1 >= 13) AND (test.v2 >= 41)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 0 AND 61 AND v2<0) OR (v1 BETWEEN 0 AND 38 AND v2>34)) OR (v1>=13 AND v2>=41));",
				Expected: []sql.Row{{32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {47, 36, 84, 75}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {15, 10, 47, 36}, {98, 97, 63, 19}, {26, 21, 42, 76}, {52, 42, 80, 85}, {92, 88, 88, 42}, {8, 7, 37, 42}, {10, 8, 37, 90}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {56, 50, 49, 20}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>68 AND v2<=57) AND (v1<>84 AND v3 BETWEEN 24 AND 98 AND v2 BETWEEN 28 AND 45) OR (v1>0 AND v2<>47 AND v3>=69)) OR (v1>=44));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 68))) AND (test.v2 <= 57)) AND (((NOT((test.v1 = 84))) AND (test.v3 BETWEEN 24 AND 98)) AND (test.v2 BETWEEN 28 AND 45))) OR (((test.v1 > 0) AND (NOT((test.v2 = 47)))) AND (test.v3 >= 69))) OR (test.v1 >= 44))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>68 AND v2<=57) AND (v1<>84 AND v3 BETWEEN 24 AND 98 AND v2 BETWEEN 28 AND 45) OR (v1>0 AND v2<>47 AND v3>=69)) OR (v1>=44));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {12, 9, 71, 82}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {25, 21, 9, 89}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {53, 45, 1, 57}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {37, 29, 21, 74}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {23, 16, 40, 36}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=48 AND v2 BETWEEN 33 AND 66) OR (v1>=91));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 48) AND (test.v2 BETWEEN 33 AND 66)) OR (test.v1 >= 91))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=48 AND v2 BETWEEN 33 AND 66) OR (v1>=91));",
				Expected: []sql.Row{{32, 25, 49, 88}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {94, 91, 15, 15}, {95, 93, 7, 26}, {7, 7, 33, 51}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {34, 27, 35, 12}, {16, 12, 44, 84}, {18, 13, 47, 30}, {17, 12, 66, 40}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {8, 7, 37, 42}, {10, 8, 37, 90}, {35, 28, 39, 84}, {23, 16, 40, 36}, {42, 32, 40, 76}, {20, 14, 38, 24}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 17 AND 52 AND v2<96) OR (v1<=12 AND v2<>4 AND v3>53)) OR (v1<98 AND v3<94 AND v2=5));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 17 AND 52) AND (test.v2 < 96)) OR (((test.v1 <= 12) AND (NOT((test.v2 = 4)))) AND (test.v3 > 53))) OR (((test.v1 < 98) AND (test.v3 < 94)) AND (test.v2 = 5)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 17 AND 52 AND v2<96) OR (v1<=12 AND v2<>4 AND v3>53)) OR (v1<98 AND v3<94 AND v2=5));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {38, 29, 27, 48}, {51, 41, 77, 26}, {54, 46, 58, 8}, {34, 27, 35, 12}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {39, 29, 77, 46}, {42, 32, 40, 76}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>26 AND v2 BETWEEN 66 AND 79 AND v3<=94) OR (v1 BETWEEN 16 AND 55));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 26))) AND (test.v2 BETWEEN 66 AND 79)) AND (test.v3 <= 94)) OR (test.v1 BETWEEN 16 AND 55))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>26 AND v2 BETWEEN 66 AND 79 AND v3<=94) OR (v1 BETWEEN 16 AND 55));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {12, 9, 71, 82}, {40, 31, 47, 21}, {27, 23, 13, 53}, {47, 36, 84, 75}, {38, 29, 27, 48}, {51, 41, 77, 26}, {54, 46, 58, 8}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 36 AND 67 AND v3<74 AND v2=26) AND (v1 BETWEEN 9 AND 10 AND v2=96) AND (v1<=11 AND v2<>63 AND v3>=62);",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 36 AND 67) AND (test.v3 < 74)) AND (test.v2 = 26)) AND ((test.v1 BETWEEN 9 AND 10) AND (test.v2 = 96))) AND (((test.v1 <= 11) AND (NOT((test.v2 = 63)))) AND (test.v3 >= 62)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 36 AND 67 AND v3<74 AND v2=26) AND (v1 BETWEEN 9 AND 10 AND v2=96) AND (v1<=11 AND v2<>63 AND v3>=62);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 28 AND 49 AND v2<47) OR (v1>37 AND v2 BETWEEN 45 AND 61 AND v3<73));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 28 AND 49) AND (test.v2 < 47)) OR (((test.v1 > 37) AND (test.v2 BETWEEN 45 AND 61)) AND (test.v3 < 73)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 28 AND 49 AND v2<47) OR (v1>37 AND v2 BETWEEN 45 AND 61 AND v3<73));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {38, 29, 27, 48}, {54, 46, 58, 8}, {74, 67, 55, 27}, {46, 36, 4, 36}, {60, 55, 45, 46}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {76, 70, 58, 33}, {37, 29, 21, 74}, {55, 49, 26, 11}, {72, 66, 46, 46}, {35, 28, 39, 84}, {42, 32, 40, 76}, {85, 82, 46, 32}, {48, 37, 27, 32}, {56, 50, 49, 20}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<37 AND v2>=26 AND v3<=14) OR (v1<64)) OR (v1 BETWEEN 31 AND 53 AND v2>55 AND v3<=55));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 37) AND (test.v2 >= 26)) AND (test.v3 <= 14)) OR (test.v1 < 64)) OR (((test.v1 BETWEEN 31 AND 53) AND (test.v2 > 55)) AND (test.v3 <= 55)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<37 AND v2>=26 AND v3<=14) OR (v1<64)) OR (v1 BETWEEN 31 AND 53 AND v2>55 AND v3<=55));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=77) OR (v1<50)) AND (v1<=53 AND v2>35 AND v3<>98);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 77) OR (test.v1 < 50)) AND (((test.v1 <= 53) AND (test.v2 > 35)) AND (NOT((test.v3 = 98)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=77) OR (v1<50)) AND (v1<=53 AND v2>35 AND v3<>98);",
				Expected: []sql.Row{{32, 25, 49, 88}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {47, 36, 84, 75}, {51, 41, 77, 26}, {1, 2, 65, 9}, {54, 46, 58, 8}, {6, 6, 81, 33}, {16, 12, 44, 84}, {49, 38, 88, 68}, {18, 13, 47, 30}, {17, 12, 66, 40}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {52, 42, 80, 85}, {8, 7, 37, 42}, {10, 8, 37, 90}, {35, 28, 39, 84}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=2 AND v2=40 AND v3 BETWEEN 18 AND 67) OR (v1=14 AND v2<=24 AND v3<=87)) OR (v1 BETWEEN 8 AND 31 AND v2>86)) OR (v1>30));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 2) AND (test.v2 = 40)) AND (test.v3 BETWEEN 18 AND 67)) OR (((test.v1 = 14) AND (test.v2 <= 24)) AND (test.v3 <= 87))) OR ((test.v1 BETWEEN 8 AND 31) AND (test.v2 > 86))) OR (test.v1 > 30))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=2 AND v2=40 AND v3 BETWEEN 18 AND 67) OR (v1=14 AND v2<=24 AND v3<=87)) OR (v1 BETWEEN 8 AND 31 AND v2>86)) OR (v1>30));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>46 AND v2<>49 AND v3<=44) OR (v1 BETWEEN 64 AND 80 AND v2=41 AND v3<=68));",
				Expected: []sql.Row{{"Filter((((test.v1 > 46) AND (NOT((test.v2 = 49)))) AND (test.v3 <= 44)) OR (((test.v1 BETWEEN 64 AND 80) AND (test.v2 = 41)) AND (test.v3 <= 68)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>46 AND v2<>49 AND v3<=44) OR (v1 BETWEEN 64 AND 80 AND v2=41 AND v3<=68));",
				Expected: []sql.Row{{64, 56, 58, 4}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {80, 75, 91, 35}, {96, 94, 92, 38}, {65, 56, 66, 33}, {74, 67, 55, 27}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {55, 49, 26, 11}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {69, 61, 11, 25}, {73, 66, 73, 4}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {83, 81, 32, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=95 AND v3<47 AND v2>=97) OR (v1 BETWEEN 11 AND 36 AND v2<=83));",
				Expected: []sql.Row{{"Filter((((test.v1 = 95) AND (test.v3 < 47)) AND (test.v2 >= 97)) OR ((test.v1 BETWEEN 11 AND 36) AND (test.v2 <= 83)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=95 AND v3<47 AND v2>=97) OR (v1 BETWEEN 11 AND 36 AND v2<=83));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {40, 31, 47, 21}, {27, 23, 13, 53}, {38, 29, 27, 48}, {22, 15, 2, 69}, {34, 27, 35, 12}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {26, 21, 42, 76}, {33, 26, 15, 28}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=65 AND v2=39 AND v3 BETWEEN 49 AND 67) OR (v1<57 AND v2>35));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 65) AND (test.v2 = 39)) AND (test.v3 BETWEEN 49 AND 67)) OR ((test.v1 < 57) AND (test.v2 > 35)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=65 AND v2=39 AND v3 BETWEEN 49 AND 67) OR (v1<57 AND v2>35));",
				Expected: []sql.Row{{32, 25, 49, 88}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {47, 36, 84, 75}, {51, 41, 77, 26}, {1, 2, 65, 9}, {54, 46, 58, 8}, {6, 6, 81, 33}, {65, 56, 66, 33}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {18, 13, 47, 30}, {17, 12, 66, 40}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {52, 42, 80, 85}, {8, 7, 37, 42}, {10, 8, 37, 90}, {35, 28, 39, 84}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {20, 14, 38, 24}, {57, 50, 86, 6}, {56, 50, 49, 20}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>71 AND v2=33) OR (v1<>85 AND v2<>50 AND v3 BETWEEN 34 AND 67)) OR (v1 BETWEEN 5 AND 47 AND v3 BETWEEN 13 AND 76 AND v2=4)) OR (v1=16 AND v2>=29 AND v3<>80));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 71) AND (test.v2 = 33)) OR (((NOT((test.v1 = 85))) AND (NOT((test.v2 = 50)))) AND (test.v3 BETWEEN 34 AND 67))) OR (((test.v1 BETWEEN 5 AND 47) AND (test.v3 BETWEEN 13 AND 76)) AND (test.v2 = 4))) OR (((test.v1 = 16) AND (test.v2 >= 29)) AND (NOT((test.v3 = 80)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>71 AND v2=33) OR (v1<>85 AND v2<>50 AND v3 BETWEEN 34 AND 67)) OR (v1 BETWEEN 5 AND 47 AND v3 BETWEEN 13 AND 76 AND v2=4)) OR (v1=16 AND v2>=29 AND v3<>80));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {97, 95, 89, 66}, {2, 3, 38, 37}, {27, 23, 13, 53}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {67, 59, 77, 53}, {46, 36, 4, 36}, {60, 55, 45, 46}, {4, 5, 17, 42}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {19, 13, 56, 41}, {43, 33, 70, 50}, {72, 66, 46, 46}, {15, 10, 47, 36}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {8, 7, 37, 42}, {30, 23, 30, 44}, {23, 16, 40, 36}, {39, 29, 77, 46}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=17 AND v2>38) AND (v1>=79) OR (v1<>38));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 17) AND (test.v2 > 38)) AND (test.v1 >= 79)) OR (NOT((test.v1 = 38))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=17 AND v2>38) AND (v1>=79) OR (v1<>38));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=4 AND v2=26) OR (v1>21 AND v2 BETWEEN 14 AND 64));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 4) AND (test.v2 = 26)) OR ((test.v1 > 21) AND (test.v2 BETWEEN 14 AND 64)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=4 AND v2=26) OR (v1>21 AND v2 BETWEEN 14 AND 64));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {40, 31, 47, 21}, {94, 91, 15, 15}, {71, 65, 17, 9}, {38, 29, 27, 48}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {93, 90, 30, 67}, {30, 23, 30, 44}, {35, 28, 39, 84}, {42, 32, 40, 76}, {59, 54, 57, 83}, {85, 82, 46, 32}, {90, 87, 22, 34}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>50) OR (v1<=58 AND v2<=95)) OR (v1=10));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 50))) OR ((test.v1 <= 58) AND (test.v2 <= 95))) OR (test.v1 = 10))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>50) OR (v1<=58 AND v2<=95)) OR (v1=10));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=21 AND v2<>95) OR (v1<>23 AND v2 BETWEEN 15 AND 22)) OR (v1<=53 AND v2>=6)) OR (v1<=13 AND v2<>93 AND v3<15));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 21) AND (NOT((test.v2 = 95)))) OR ((NOT((test.v1 = 23))) AND (test.v2 BETWEEN 15 AND 22))) OR ((test.v1 <= 53) AND (test.v2 >= 6))) OR (((test.v1 <= 13) AND (NOT((test.v2 = 93)))) AND (test.v3 < 15)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=21 AND v2<>95) OR (v1<>23 AND v2 BETWEEN 15 AND 22)) OR (v1<=53 AND v2>=6)) OR (v1<=13 AND v2<>93 AND v3<15));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {94, 91, 15, 15}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {90, 87, 22, 34}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<64 AND v2>=90 AND v3>41) AND (v1>=14 AND v2 BETWEEN 30 AND 70 AND v3>=25);",
				Expected: []sql.Row{{"Filter((((test.v1 < 64) AND (test.v2 >= 90)) AND (test.v3 > 41)) AND (((test.v1 >= 14) AND (test.v2 BETWEEN 30 AND 70)) AND (test.v3 >= 25)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<64 AND v2>=90 AND v3>41) AND (v1>=14 AND v2 BETWEEN 30 AND 70 AND v3>=25);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<27 AND v2<=43) OR (v1<62 AND v2<=99)) OR (v1<>48 AND v2<29 AND v3<>69));",
				Expected: []sql.Row{{"Filter((((test.v1 < 27) AND (test.v2 <= 43)) OR ((test.v1 < 62) AND (test.v2 <= 99))) OR (((NOT((test.v1 = 48))) AND (test.v2 < 29)) AND (NOT((test.v3 = 69)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<27 AND v2<=43) OR (v1<62 AND v2<=99)) OR (v1<>48 AND v2<29 AND v3<>69));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {20, 14, 38, 24}, {90, 87, 22, 34}, {57, 50, 86, 6}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<11 AND v2<70 AND v3>27) OR (v1>=80 AND v2<31 AND v3<65)) OR (v1>=98 AND v2 BETWEEN 30 AND 85 AND v3>=30));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 11) AND (test.v2 < 70)) AND (test.v3 > 27)) OR (((test.v1 >= 80) AND (test.v2 < 31)) AND (test.v3 < 65))) OR (((test.v1 >= 98) AND (test.v2 BETWEEN 30 AND 85)) AND (test.v3 >= 30)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<11 AND v2<70 AND v3>27) OR (v1>=80 AND v2<31 AND v3<65)) OR (v1>=98 AND v2 BETWEEN 30 AND 85 AND v3>=30));",
				Expected: []sql.Row{{14, 10, 32, 46}, {2, 3, 38, 37}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {7, 7, 33, 51}, {4, 5, 17, 42}, {15, 10, 47, 36}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {90, 87, 22, 34}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<>44 AND v2>=10) AND (v1=47 AND v2=14 AND v3<30);",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 44))) AND (test.v2 >= 10)) AND (((test.v1 = 47) AND (test.v2 = 14)) AND (test.v3 < 30)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<>44 AND v2>=10) AND (v1=47 AND v2=14 AND v3<30);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>6 AND v2=50) OR (v1>=16));",
				Expected: []sql.Row{{"Filter(((test.v1 > 6) AND (test.v2 = 50)) OR (test.v1 >= 16))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>6 AND v2=50) OR (v1>=16));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=31) OR (v1>53 AND v2<>11 AND v3<>94)) OR (v1>48 AND v2 BETWEEN 11 AND 29 AND v3 BETWEEN 68 AND 72));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 31) OR (((test.v1 > 53) AND (NOT((test.v2 = 11)))) AND (NOT((test.v3 = 94))))) OR (((test.v1 > 48) AND (test.v2 BETWEEN 11 AND 29)) AND (test.v3 BETWEEN 68 AND 72)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=31) OR (v1>53 AND v2<>11 AND v3<>94)) OR (v1>48 AND v2 BETWEEN 11 AND 29 AND v3 BETWEEN 68 AND 72));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {69, 61, 11, 25}, {73, 66, 73, 4}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 55 AND 59) OR (v1<=10 AND v2>=24)) AND (v1>93 AND v3<70 AND v2 BETWEEN 44 AND 79) AND (v1>=22 AND v2=27);",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 55 AND 59) OR ((test.v1 <= 10) AND (test.v2 >= 24))) AND (((test.v1 > 93) AND (test.v3 < 70)) AND (test.v2 BETWEEN 44 AND 79))) AND ((test.v1 >= 22) AND (test.v2 = 27)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 55 AND 59) OR (v1<=10 AND v2>=24)) AND (v1>93 AND v3<70 AND v2 BETWEEN 44 AND 79) AND (v1>=22 AND v2=27);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=43 AND v2<28 AND v3<>24) OR (v1<36 AND v2=14 AND v3 BETWEEN 16 AND 55));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 43) AND (test.v2 < 28)) AND (NOT((test.v3 = 24)))) OR (((test.v1 < 36) AND (test.v2 = 14)) AND (test.v3 BETWEEN 16 AND 55)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=43 AND v2<28 AND v3<>24) OR (v1<36 AND v2=14 AND v3 BETWEEN 16 AND 55));",
				Expected: []sql.Row{{84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {62, 56, 0, 97}, {53, 45, 1, 57}, {55, 49, 26, 11}, {58, 54, 13, 78}, {66, 57, 7, 52}, {69, 61, 11, 25}, {90, 87, 22, 34}, {75, 70, 8, 54}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>48 AND v2<=80) OR (v1=72 AND v3 BETWEEN 45 AND 52 AND v2=98));",
				Expected: []sql.Row{{"Filter(((test.v1 > 48) AND (test.v2 <= 80)) OR (((test.v1 = 72) AND (test.v3 BETWEEN 45 AND 52)) AND (test.v2 = 98)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>48 AND v2<=80) OR (v1=72 AND v3 BETWEEN 45 AND 52 AND v2=98));",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {78, 72, 65, 64}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {58, 54, 13, 78}, {66, 57, 7, 52}, {93, 90, 30, 67}, {69, 61, 11, 25}, {73, 66, 73, 4}, {59, 54, 57, 83}, {85, 82, 46, 32}, {90, 87, 22, 34}, {75, 70, 8, 54}, {86, 84, 40, 8}, {56, 50, 49, 20}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=98 AND v2=51) AND (v1>34);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 98) AND (test.v2 = 51)) AND (test.v1 > 34))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=98 AND v2=51) AND (v1>34);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>2) OR (v1<=30)) OR (v1<>35 AND v2 BETWEEN 6 AND 61 AND v3>=16));",
				Expected: []sql.Row{{"Filter(((test.v1 > 2) OR (test.v1 <= 30)) OR (((NOT((test.v1 = 35))) AND (test.v2 BETWEEN 6 AND 61)) AND (test.v3 >= 16)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>2) OR (v1<=30)) OR (v1<>35 AND v2 BETWEEN 6 AND 61 AND v3>=16));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>19) OR (v1<>48));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 19))) OR (NOT((test.v1 = 48))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>19) OR (v1<>48));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 12 AND 42 AND v2<=12) OR (v1<34 AND v2 BETWEEN 30 AND 47 AND v3<>50));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 12 AND 42) AND (test.v2 <= 12)) OR (((test.v1 < 34) AND (test.v2 BETWEEN 30 AND 47)) AND (NOT((test.v3 = 50)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 12 AND 42 AND v2<=12) OR (v1<34 AND v2 BETWEEN 30 AND 47 AND v3<>50));",
				Expected: []sql.Row{{14, 10, 32, 46}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {7, 7, 33, 51}, {22, 15, 2, 69}, {34, 27, 35, 12}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {18, 13, 47, 30}, {36, 29, 7, 38}, {41, 31, 47, 91}, {15, 10, 47, 36}, {26, 21, 42, 76}, {8, 7, 37, 42}, {10, 8, 37, 90}, {30, 23, 30, 44}, {35, 28, 39, 84}, {23, 16, 40, 36}, {42, 32, 40, 76}, {20, 14, 38, 24}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1>=6) OR (v1>7)) OR (v1<88 AND v2<=34 AND v3<=47)) OR (v1>=10)) OR (v1=10));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 6) OR (test.v1 > 7)) OR (((test.v1 < 88) AND (test.v2 <= 34)) AND (test.v3 <= 47))) OR (test.v1 >= 10)) OR (test.v1 = 10))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1>=6) OR (v1>7)) OR (v1<88 AND v2<=34 AND v3<=47)) OR (v1>=10)) OR (v1=10));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=74) OR (v1>=1)) OR (v1=54 AND v2>=38 AND v3>2)) AND (v1>5);",
				Expected: []sql.Row{{"Filter((((test.v1 >= 74) OR (test.v1 >= 1)) OR (((test.v1 = 54) AND (test.v2 >= 38)) AND (test.v3 > 2))) AND (test.v1 > 5))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=74) OR (v1>=1)) OR (v1=54 AND v2>=38 AND v3>2)) AND (v1>5);",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=45 AND v2>18) OR (v1<64 AND v2=25 AND v3>97));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 45) AND (test.v2 > 18)) OR (((test.v1 < 64) AND (test.v2 = 25)) AND (test.v3 > 97)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=45 AND v2>18) OR (v1<64 AND v2=25 AND v3>97));",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {73, 66, 73, 4}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<37 AND v3>77) OR (v1>38 AND v3<>57 AND v2=87));",
				Expected: []sql.Row{{"Filter(((test.v1 < 37) AND (test.v3 > 77)) OR (((test.v1 > 38) AND (NOT((test.v3 = 57)))) AND (test.v2 = 87)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<37 AND v3>77) OR (v1>38 AND v3<>57 AND v2=87));",
				Expected: []sql.Row{{32, 25, 49, 88}, {12, 9, 71, 82}, {3, 3, 99, 99}, {16, 12, 44, 84}, {25, 21, 9, 89}, {29, 23, 28, 90}, {41, 31, 47, 91}, {10, 8, 37, 90}, {24, 20, 29, 93}, {35, 28, 39, 84}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<96 AND v2>11 AND v3<76) OR (v1<=14 AND v2=23)) OR (v1<=15 AND v2<21 AND v3<91)) OR (v1=45 AND v2<11 AND v3=1));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 96) AND (test.v2 > 11)) AND (test.v3 < 76)) OR ((test.v1 <= 14) AND (test.v2 = 23))) OR (((test.v1 <= 15) AND (test.v2 < 21)) AND (test.v3 < 91))) OR (((test.v1 = 45) AND (test.v2 < 11)) AND (test.v3 = 1)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<96 AND v2>11 AND v3<76) OR (v1<=14 AND v2=23)) OR (v1<=15 AND v2<21 AND v3<91)) OR (v1=45 AND v2<11 AND v3=1));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {94, 91, 15, 15}, {27, 23, 13, 53}, {47, 36, 84, 75}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {13, 10, 16, 21}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {33, 26, 15, 28}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {5, 6, 6, 76}, {30, 23, 30, 44}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>23 AND v3<=52) OR (v1<>19 AND v2=25));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 23))) AND (test.v3 <= 52)) OR ((NOT((test.v1 = 19))) AND (test.v2 = 25)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>23 AND v3<=52) OR (v1<>19 AND v2=25));",
				Expected: []sql.Row{{14, 10, 32, 46}, {64, 56, 58, 4}, {88, 85, 53, 50}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {74, 67, 55, 27}, {13, 10, 16, 21}, {46, 36, 4, 36}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {66, 57, 7, 52}, {92, 88, 88, 42}, {9, 8, 9, 21}, {8, 7, 37, 42}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<=12 AND v2>=65) AND (v1<6 AND v2>=92);",
				Expected: []sql.Row{{"Filter(((test.v1 <= 12) AND (test.v2 >= 65)) AND ((test.v1 < 6) AND (test.v2 >= 92)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<=12 AND v2>=65) AND (v1<6 AND v2>=92);",
				Expected: []sql.Row{{3, 3, 99, 99}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=62 AND v2<>32) OR (v1>=55 AND v2=41 AND v3>73));",
				Expected: []sql.Row{{"Filter(((test.v1 = 62) AND (NOT((test.v2 = 32)))) OR (((test.v1 >= 55) AND (test.v2 = 41)) AND (test.v3 > 73)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=62 AND v2<>32) OR (v1>=55 AND v2=41 AND v3>73));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>34 AND v2<=62) OR (v1>5 AND v2 BETWEEN 59 AND 98 AND v3<69)) OR (v1>34));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 34))) AND (test.v2 <= 62)) OR (((test.v1 > 5) AND (test.v2 BETWEEN 59 AND 98)) AND (test.v3 < 69))) OR (test.v1 > 34))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>34 AND v2<=62) OR (v1>5 AND v2 BETWEEN 59 AND 98 AND v3<69)) OR (v1>34));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=61 AND v2 BETWEEN 10 AND 22 AND v3<34) OR (v1=68)) OR (v1<=97 AND v3 BETWEEN 7 AND 63 AND v2<67));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 61) AND (test.v2 BETWEEN 10 AND 22)) AND (test.v3 < 34)) OR (test.v1 = 68)) OR (((test.v1 <= 97) AND (test.v3 BETWEEN 7 AND 63)) AND (test.v2 < 67)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=61 AND v2 BETWEEN 10 AND 22 AND v3<34) OR (v1=68)) OR (v1<=97 AND v3 BETWEEN 7 AND 63 AND v2<67));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {88, 85, 53, 50}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {65, 56, 66, 33}, {74, 67, 55, 27}, {13, 10, 16, 21}, {46, 36, 4, 36}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {98, 97, 63, 19}, {33, 26, 15, 28}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {30, 23, 30, 44}, {69, 61, 11, 25}, {0, 0, 3, 16}, {23, 16, 40, 36}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=42) OR (v1 BETWEEN 13 AND 30 AND v2<50));",
				Expected: []sql.Row{{"Filter((test.v1 <= 42) OR ((test.v1 BETWEEN 13 AND 30) AND (test.v2 < 50)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=42) OR (v1 BETWEEN 13 AND 30 AND v2<50));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 16 AND 49) OR (v1<=69 AND v2>9 AND v3<=8));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 16 AND 49) OR (((test.v1 <= 69) AND (test.v2 > 9)) AND (test.v3 <= 8)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 16 AND 49) OR (v1<=69 AND v2>9 AND v3<=8));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {40, 31, 47, 21}, {27, 23, 13, 53}, {47, 36, 84, 75}, {38, 29, 27, 48}, {51, 41, 77, 26}, {54, 46, 58, 8}, {34, 27, 35, 12}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>71 AND v2>44) OR (v1<76 AND v2>=10)) OR (v1>=44 AND v2=66));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 71))) AND (test.v2 > 44)) OR ((test.v1 < 76) AND (test.v2 >= 10))) OR ((test.v1 >= 44) AND (test.v2 = 66)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>71 AND v2>44) OR (v1<76 AND v2>=10)) OR (v1>=44 AND v2=66));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {13, 10, 16, 21}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {92, 88, 88, 42}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((((v1>=26) OR (v1>=13 AND v2 BETWEEN 35 AND 95 AND v3>=29)) OR (v1<>54 AND v2 BETWEEN 0 AND 54)) OR (v1 BETWEEN 17 AND 17 AND v2<=71)) OR (v1>50 AND v3>=42)) OR (v1<>0));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 26) OR (((test.v1 >= 13) AND (test.v2 BETWEEN 35 AND 95)) AND (test.v3 >= 29))) OR ((NOT((test.v1 = 54))) AND (test.v2 BETWEEN 0 AND 54))) OR ((test.v1 BETWEEN 17 AND 17) AND (test.v2 <= 71))) OR ((test.v1 > 50) AND (test.v3 >= 42))) OR (NOT((test.v1 = 0))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((((v1>=26) OR (v1>=13 AND v2 BETWEEN 35 AND 95 AND v3>=29)) OR (v1<>54 AND v2 BETWEEN 0 AND 54)) OR (v1 BETWEEN 17 AND 17 AND v2<=71)) OR (v1>50 AND v3>=42)) OR (v1<>0));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=99 AND v2<66) OR (v1 BETWEEN 1 AND 47)) OR (v1<>2 AND v2<30));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 99) AND (test.v2 < 66)) OR (test.v1 BETWEEN 1 AND 47)) OR ((NOT((test.v1 = 2))) AND (test.v2 < 30)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=99 AND v2<66) OR (v1 BETWEEN 1 AND 47)) OR (v1<>2 AND v2<30));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {90, 87, 22, 34}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>9 AND v2<74) AND (v1<=63 AND v2=18) OR (v1<46));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 9))) AND (test.v2 < 74)) AND ((test.v1 <= 63) AND (test.v2 = 18))) OR (test.v1 < 46))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>9 AND v2<74) AND (v1<=63 AND v2=18) OR (v1<46));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=20 AND v2<=62) OR (v1>45 AND v2=33 AND v3<=4)) OR (v1>29));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 20) AND (test.v2 <= 62)) OR (((test.v1 > 45) AND (test.v2 = 33)) AND (test.v3 <= 4))) OR (test.v1 > 29))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=20 AND v2<=62) OR (v1>45 AND v2=33 AND v3<=4)) OR (v1>29));",
				Expected: []sql.Row{{14, 10, 32, 46}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {23, 16, 40, 36}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=55 AND v2 BETWEEN 82 AND 96 AND v3>=13) OR (v1>=89 AND v2<18 AND v3<19)) OR (v1=98 AND v3>=40)) OR (v1 BETWEEN 7 AND 74 AND v2<=73));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 55) AND (test.v2 BETWEEN 82 AND 96)) AND (test.v3 >= 13)) OR (((test.v1 >= 89) AND (test.v2 < 18)) AND (test.v3 < 19))) OR ((test.v1 = 98) AND (test.v3 >= 40))) OR ((test.v1 BETWEEN 7 AND 74) AND (test.v2 <= 73)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=55 AND v2 BETWEEN 82 AND 96 AND v3>=13) OR (v1>=89 AND v2<18 AND v3<19)) OR (v1=98 AND v3>=40)) OR (v1 BETWEEN 7 AND 74 AND v2<=73));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {94, 91, 15, 15}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {22, 15, 2, 69}, {54, 46, 58, 8}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {74, 67, 55, 27}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {23, 16, 40, 36}, {42, 32, 40, 76}, {59, 54, 57, 83}, {20, 14, 38, 24}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=26 AND v2 BETWEEN 6 AND 80) AND (v1=47 AND v2<67 AND v3<7) OR (v1>63));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 26) AND (test.v2 BETWEEN 6 AND 80)) AND (((test.v1 = 47) AND (test.v2 < 67)) AND (test.v3 < 7))) OR (test.v1 > 63))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=26 AND v2 BETWEEN 6 AND 80) AND (v1=47 AND v2<67 AND v3<7) OR (v1>63));",
				Expected: []sql.Row{{88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {74, 67, 55, 27}, {82, 76, 44, 87}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {73, 66, 73, 4}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {86, 84, 40, 8}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<11) OR (v1<>33));",
				Expected: []sql.Row{{"Filter((test.v1 < 11) OR (NOT((test.v1 = 33))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<11) OR (v1<>33));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=35) AND (v1=44 AND v2<78 AND v3>=40) OR (v1<>88 AND v2=8)) AND (v1>=99 AND v2=62) OR (v1<=94)) OR (v1 BETWEEN 22 AND 23 AND v2 BETWEEN 14 AND 46));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 35) AND (((test.v1 = 44) AND (test.v2 < 78)) AND (test.v3 >= 40))) OR ((NOT((test.v1 = 88))) AND (test.v2 = 8))) AND ((test.v1 >= 99) AND (test.v2 = 62))) OR (test.v1 <= 94)) OR ((test.v1 BETWEEN 22 AND 23) AND (test.v2 BETWEEN 14 AND 46)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=35) AND (v1=44 AND v2<78 AND v3>=40) OR (v1<>88 AND v2=8)) AND (v1>=99 AND v2=62) OR (v1<=94)) OR (v1 BETWEEN 22 AND 23 AND v2 BETWEEN 14 AND 46));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<9 AND v2=94 AND v3>8) OR (v1>=63));",
				Expected: []sql.Row{{"Filter((((test.v1 < 9) AND (test.v2 = 94)) AND (test.v3 > 8)) OR (test.v1 >= 63))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<9 AND v2=94 AND v3>8) OR (v1>=63));",
				Expected: []sql.Row{{88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {74, 67, 55, 27}, {82, 76, 44, 87}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {73, 66, 73, 4}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {86, 84, 40, 8}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<43) OR (v1 BETWEEN 40 AND 49 AND v2>26 AND v3 BETWEEN 22 AND 80));",
				Expected: []sql.Row{{"Filter((test.v1 < 43) OR (((test.v1 BETWEEN 40 AND 49) AND (test.v2 > 26)) AND (test.v3 BETWEEN 22 AND 80)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<43) OR (v1 BETWEEN 40 AND 49 AND v2>26 AND v3 BETWEEN 22 AND 80));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 4 AND 85 AND v2<>45 AND v3<=41) OR (v1>67 AND v2<25));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 4 AND 85) AND (NOT((test.v2 = 45)))) AND (test.v3 <= 41)) OR ((test.v1 > 67) AND (test.v2 < 25)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 4 AND 85 AND v2<>45 AND v3<=41) OR (v1>67 AND v2<25));",
				Expected: []sql.Row{{64, 56, 58, 4}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {80, 75, 91, 35}, {51, 41, 77, 26}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {74, 67, 55, 27}, {13, 10, 16, 21}, {46, 36, 4, 36}, {18, 13, 47, 30}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {55, 49, 26, 11}, {77, 71, 39, 15}, {15, 10, 47, 36}, {33, 26, 15, 28}, {9, 8, 9, 21}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>77) OR (v1<=54 AND v2<=71 AND v3>=49)) OR (v1>54 AND v2<30 AND v3=6));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 77))) OR (((test.v1 <= 54) AND (test.v2 <= 71)) AND (test.v3 >= 49))) OR (((test.v1 > 54) AND (test.v2 < 30)) AND (test.v3 = 6)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>77) OR (v1<=54 AND v2<=71 AND v3>=49)) OR (v1>54 AND v2<30 AND v3=6));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 21 AND 53 AND v2=0 AND v3>32) OR (v1=93 AND v2>=94 AND v3<1)) OR (v1<26)) OR (v1<>11 AND v2<>32 AND v3=6)) AND (v1>=45);",
				Expected: []sql.Row{{"Filter(((((((test.v1 BETWEEN 21 AND 53) AND (test.v2 = 0)) AND (test.v3 > 32)) OR (((test.v1 = 93) AND (test.v2 >= 94)) AND (test.v3 < 1))) OR (test.v1 < 26)) OR (((NOT((test.v1 = 11))) AND (NOT((test.v2 = 32)))) AND (test.v3 = 6))) AND (test.v1 >= 45))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 21 AND 53 AND v2=0 AND v3>32) OR (v1=93 AND v2>=94 AND v3<1)) OR (v1<26)) OR (v1<>11 AND v2<>32 AND v3=6)) AND (v1>=45);",
				Expected: []sql.Row{{84, 82, 11, 6}, {57, 50, 86, 6}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>50) OR (v1<=71));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 50))) OR (test.v1 <= 71))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>50) OR (v1<=71));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=41) OR (v1>29 AND v2<>31));",
				Expected: []sql.Row{{"Filter((test.v1 = 41) OR ((test.v1 > 29) AND (NOT((test.v2 = 31)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=41) OR (v1>29 AND v2<>31));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {69, 61, 11, 25}, {73, 66, 73, 4}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<88 AND v2<91 AND v3>9) AND (v1>=5 AND v2 BETWEEN 21 AND 29 AND v3>18) OR (v1>=40));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 88) AND (test.v2 < 91)) AND (test.v3 > 9)) AND (((test.v1 >= 5) AND (test.v2 BETWEEN 21 AND 29)) AND (test.v3 > 18))) OR (test.v1 >= 40))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<88 AND v2<91 AND v3>9) AND (v1>=5 AND v2 BETWEEN 21 AND 29 AND v3>18) OR (v1>=40));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {37, 29, 21, 74}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {24, 20, 29, 93}, {69, 61, 11, 25}, {73, 66, 73, 4}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>2 AND v2<76 AND v3<=35) OR (v1<=12 AND v3 BETWEEN 25 AND 30));",
				Expected: []sql.Row{{"Filter((((test.v1 > 2) AND (test.v2 < 76)) AND (test.v3 <= 35)) OR ((test.v1 <= 12) AND (test.v3 BETWEEN 25 AND 30)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>2 AND v2<76 AND v3<=35) OR (v1<=12 AND v3 BETWEEN 25 AND 30));",
				Expected: []sql.Row{{64, 56, 58, 4}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {71, 65, 17, 9}, {54, 46, 58, 8}, {34, 27, 35, 12}, {65, 56, 66, 33}, {74, 67, 55, 27}, {13, 10, 16, 21}, {18, 13, 47, 30}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {55, 49, 26, 11}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {9, 8, 9, 21}, {69, 61, 11, 25}, {73, 66, 73, 4}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 25 AND 84 AND v2<=94) OR (v1>66 AND v2>4 AND v3>=57)) OR (v1=78 AND v2>66 AND v3=19)) OR (v1<>48));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 25 AND 84) AND (test.v2 <= 94)) OR (((test.v1 > 66) AND (test.v2 > 4)) AND (test.v3 >= 57))) OR (((test.v1 = 78) AND (test.v2 > 66)) AND (test.v3 = 19))) OR (NOT((test.v1 = 48))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 25 AND 84 AND v2<=94) OR (v1>66 AND v2>4 AND v3>=57)) OR (v1=78 AND v2>66 AND v3=19)) OR (v1<>48));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=24) OR (v1>=47 AND v2<=75 AND v3<=52));",
				Expected: []sql.Row{{"Filter((test.v1 >= 24) OR (((test.v1 >= 47) AND (test.v2 <= 75)) AND (test.v3 <= 52)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=24) OR (v1>=47 AND v2<=75 AND v3<=52));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=21 AND v2<>70) OR (v1<=77 AND v2>4)) OR (v1<28 AND v2<=3 AND v3<>21));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 21) AND (NOT((test.v2 = 70)))) OR ((test.v1 <= 77) AND (test.v2 > 4))) OR (((test.v1 < 28) AND (test.v2 <= 3)) AND (NOT((test.v3 = 21)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=21 AND v2<>70) OR (v1<=77 AND v2>4)) OR (v1<28 AND v2<=3 AND v3<>21));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=60 AND v2>91) OR (v1<=10));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 60) AND (test.v2 > 91)) OR (test.v1 <= 10))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=60 AND v2>91) OR (v1<=10));",
				Expected: []sql.Row{{14, 10, 32, 46}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {3, 3, 99, 99}, {7, 7, 33, 51}, {96, 94, 92, 38}, {1, 2, 65, 9}, {6, 6, 81, 33}, {13, 10, 16, 21}, {4, 5, 17, 42}, {15, 10, 47, 36}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {0, 0, 3, 16}, {87, 84, 93, 37}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>98 AND v2<52) OR (v1 BETWEEN 65 AND 67)) OR (v1 BETWEEN 18 AND 54)) AND (v1>=14 AND v2=27);",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 98))) AND (test.v2 < 52)) OR (test.v1 BETWEEN 65 AND 67)) OR (test.v1 BETWEEN 18 AND 54)) AND ((test.v1 >= 14) AND (test.v2 = 27)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>98 AND v2<52) OR (v1 BETWEEN 65 AND 67)) OR (v1 BETWEEN 18 AND 54)) AND (v1>=14 AND v2=27);",
				Expected: []sql.Row{{44, 34, 27, 58}, {38, 29, 27, 48}, {48, 37, 27, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=43 AND v2<>39) AND (v1<=32 AND v2<=15 AND v3>=54) OR (v1<>68 AND v2 BETWEEN 42 AND 46));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 43) AND (NOT((test.v2 = 39)))) AND (((test.v1 <= 32) AND (test.v2 <= 15)) AND (test.v3 >= 54))) OR ((NOT((test.v1 = 68))) AND (test.v2 BETWEEN 42 AND 46)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=43 AND v2<>39) AND (v1<=32 AND v2<=15 AND v3>=54) OR (v1<>68 AND v2 BETWEEN 42 AND 46));",
				Expected: []sql.Row{{82, 76, 44, 87}, {16, 12, 44, 84}, {60, 55, 45, 46}, {100, 98, 42, 22}, {72, 66, 46, 46}, {26, 21, 42, 76}, {85, 82, 46, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=19 AND v2<2) AND (v1<4 AND v3>23 AND v2<>53);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 19) AND (test.v2 < 2)) AND (((test.v1 < 4) AND (test.v3 > 23)) AND (NOT((test.v2 = 53)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=19 AND v2<2) AND (v1<4 AND v3>23 AND v2<>53);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 34 AND 40) OR (v1<=80 AND v2<>53)) AND (v1=81 AND v2=17 AND v3<>12);",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 34 AND 40) OR ((test.v1 <= 80) AND (NOT((test.v2 = 53))))) AND (((test.v1 = 81) AND (test.v2 = 17)) AND (NOT((test.v3 = 12)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 34 AND 40) OR (v1<=80 AND v2<>53)) AND (v1=81 AND v2=17 AND v3<>12);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>34 AND v2 BETWEEN 18 AND 67 AND v3<67) OR (v1>21));",
				Expected: []sql.Row{{"Filter((((test.v1 > 34) AND (test.v2 BETWEEN 18 AND 67)) AND (test.v3 < 67)) OR (test.v1 > 21))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>34 AND v2 BETWEEN 18 AND 67 AND v3<67) OR (v1>21));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>45) OR (v1>=91 AND v2>=8 AND v3<=38)) OR (v1<>58 AND v3<=32 AND v2<>45));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 45))) OR (((test.v1 >= 91) AND (test.v2 >= 8)) AND (test.v3 <= 38))) OR (((NOT((test.v1 = 58))) AND (test.v3 <= 32)) AND (NOT((test.v2 = 45)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>45) OR (v1>=91 AND v2>=8 AND v3<=38)) OR (v1<>58 AND v3<=32 AND v2<>45));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=48) OR (v1<38 AND v2>=26)) AND (v1<=45 AND v2>21) AND (v1=83 AND v2=20);",
				Expected: []sql.Row{{"Filter((((test.v1 <= 48) OR ((test.v1 < 38) AND (test.v2 >= 26))) AND ((test.v1 <= 45) AND (test.v2 > 21))) AND ((test.v1 = 83) AND (test.v2 = 20)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=48) OR (v1<38 AND v2>=26)) AND (v1<=45 AND v2>21) AND (v1=83 AND v2=20);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>25) OR (v1<53));",
				Expected: []sql.Row{{"Filter((test.v1 > 25) OR (test.v1 < 53))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>25) OR (v1<53));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<95 AND v2>=12) OR (v1 BETWEEN 41 AND 55 AND v2<=81 AND v3<46));",
				Expected: []sql.Row{{"Filter(((test.v1 < 95) AND (test.v2 >= 12)) OR (((test.v1 BETWEEN 41 AND 55) AND (test.v2 <= 81)) AND (test.v3 < 46)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<95 AND v2>=12) OR (v1 BETWEEN 41 AND 55 AND v2<=81 AND v3<46));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {94, 91, 15, 15}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {92, 88, 88, 42}, {93, 90, 30, 67}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>39 AND v2 BETWEEN 53 AND 73 AND v3<=11) OR (v1<=31 AND v2=68 AND v3>=71)) OR (v1<>18 AND v2<=51));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 39) AND (test.v2 BETWEEN 53 AND 73)) AND (test.v3 <= 11)) OR (((test.v1 <= 31) AND (test.v2 = 68)) AND (test.v3 >= 71))) OR ((NOT((test.v1 = 18))) AND (test.v2 <= 51)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>39 AND v2 BETWEEN 53 AND 73 AND v3<=11) OR (v1<=31 AND v2=68 AND v3>=71)) OR (v1<>18 AND v2<=51));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {26, 21, 42, 76}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {23, 16, 40, 36}, {42, 32, 40, 76}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>4) AND (v1=3 AND v2 BETWEEN 4 AND 34 AND v3<=40);",
				Expected: []sql.Row{{"Filter((test.v1 > 4) AND (((test.v1 = 3) AND (test.v2 BETWEEN 4 AND 34)) AND (test.v3 <= 40)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>4) AND (v1=3 AND v2 BETWEEN 4 AND 34 AND v3<=40);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>36 AND v2>82) OR (v1 BETWEEN 22 AND 59));",
				Expected: []sql.Row{{"Filter(((test.v1 > 36) AND (test.v2 > 82)) OR (test.v1 BETWEEN 22 AND 59))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>36 AND v2>82) OR (v1 BETWEEN 22 AND 59));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {97, 95, 89, 66}, {40, 31, 47, 21}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {96, 94, 92, 38}, {54, 46, 58, 8}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {30, 23, 30, 44}, {35, 28, 39, 84}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {87, 84, 93, 37}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=0) OR (v1 BETWEEN 17 AND 45));",
				Expected: []sql.Row{{"Filter((test.v1 <= 0) OR (test.v1 BETWEEN 17 AND 45))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=0) OR (v1 BETWEEN 17 AND 45));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {40, 31, 47, 21}, {27, 23, 13, 53}, {47, 36, 84, 75}, {38, 29, 27, 48}, {51, 41, 77, 26}, {34, 27, 35, 12}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {39, 29, 77, 46}, {42, 32, 40, 76}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<1 AND v3<=34) OR (v1 BETWEEN 2 AND 57 AND v2<>70));",
				Expected: []sql.Row{{"Filter(((test.v1 < 1) AND (test.v3 <= 34)) OR ((test.v1 BETWEEN 2 AND 57) AND (NOT((test.v2 = 70)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<1 AND v3<=34) OR (v1 BETWEEN 2 AND 57 AND v2<>70));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>4) AND (v1 BETWEEN 8 AND 35 AND v2>=94 AND v3=32) AND (v1>=12);",
				Expected: []sql.Row{{"Filter(((test.v1 > 4) AND (((test.v1 BETWEEN 8 AND 35) AND (test.v2 >= 94)) AND (test.v3 = 32))) AND (test.v1 >= 12))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>4) AND (v1 BETWEEN 8 AND 35 AND v2>=94 AND v3=32) AND (v1>=12);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=93 AND v3<>47) OR (v1>=93 AND v2 BETWEEN 15 AND 42 AND v3<=6)) OR (v1>15)) OR (v1 BETWEEN 0 AND 1 AND v2>33));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 93) AND (NOT((test.v3 = 47)))) OR (((test.v1 >= 93) AND (test.v2 BETWEEN 15 AND 42)) AND (test.v3 <= 6))) OR (test.v1 > 15)) OR ((test.v1 BETWEEN 0 AND 1) AND (test.v2 > 33)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=93 AND v3<>47) OR (v1>=93 AND v2 BETWEEN 15 AND 42 AND v3<=6)) OR (v1>15)) OR (v1 BETWEEN 0 AND 1 AND v2>33));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>12) OR (v1>=26 AND v2 BETWEEN 77 AND 87 AND v3<19)) OR (v1<=89));",
				Expected: []sql.Row{{"Filter(((test.v1 > 12) OR (((test.v1 >= 26) AND (test.v2 BETWEEN 77 AND 87)) AND (test.v3 < 19))) OR (test.v1 <= 89))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>12) OR (v1>=26 AND v2 BETWEEN 77 AND 87 AND v3<19)) OR (v1<=89));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=27 AND v2=16 AND v3>=8) OR (v1<20 AND v2>=1 AND v3 BETWEEN 28 AND 47)) OR (v1 BETWEEN 15 AND 43 AND v2>30));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 27) AND (test.v2 = 16)) AND (test.v3 >= 8)) OR (((test.v1 < 20) AND (test.v2 >= 1)) AND (test.v3 BETWEEN 28 AND 47))) OR ((test.v1 BETWEEN 15 AND 43) AND (test.v2 > 30)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=27 AND v2=16 AND v3>=8) OR (v1<20 AND v2>=1 AND v3 BETWEEN 28 AND 47)) OR (v1 BETWEEN 15 AND 43 AND v2>30));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {2, 3, 38, 37}, {40, 31, 47, 21}, {47, 36, 84, 75}, {51, 41, 77, 26}, {6, 6, 81, 33}, {34, 27, 35, 12}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {17, 12, 66, 40}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {52, 42, 80, 85}, {8, 7, 37, 42}, {35, 28, 39, 84}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=67 AND v2<>69) OR (v1<28 AND v2<62 AND v3>=99));",
				Expected: []sql.Row{{"Filter(((test.v1 = 67) AND (NOT((test.v2 = 69)))) OR (((test.v1 < 28) AND (test.v2 < 62)) AND (test.v3 >= 99)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=67 AND v2<>69) OR (v1<28 AND v2<62 AND v3>=99));",
				Expected: []sql.Row{{74, 67, 55, 27}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<45 AND v2>5 AND v3>20) OR (v1<17));",
				Expected: []sql.Row{{"Filter((((test.v1 < 45) AND (test.v2 > 5)) AND (test.v3 > 20)) OR (test.v1 < 17))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<45 AND v2>5 AND v3>20) OR (v1<17));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {6, 6, 81, 33}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=40 AND v2<>18) OR (v1<>97 AND v2<>17 AND v3<>48));",
				Expected: []sql.Row{{"Filter(((test.v1 = 40) AND (NOT((test.v2 = 18)))) OR (((NOT((test.v1 = 97))) AND (NOT((test.v2 = 17)))) AND (NOT((test.v3 = 48)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=40 AND v2<>18) OR (v1<>97 AND v2<>17 AND v3<>48));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {80, 75, 91, 35}, {7, 7, 33, 51}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>63) AND (v1<=44 AND v2<>43 AND v3=29) OR (v1=38 AND v2>45));",
				Expected: []sql.Row{{"Filter(((test.v1 > 63) AND (((test.v1 <= 44) AND (NOT((test.v2 = 43)))) AND (test.v3 = 29))) OR ((test.v1 = 38) AND (test.v2 > 45)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>63) AND (v1<=44 AND v2<>43 AND v3=29) OR (v1=38 AND v2>45));",
				Expected: []sql.Row{{49, 38, 88, 68}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=6) OR (v1>0 AND v2 BETWEEN 3 AND 50));",
				Expected: []sql.Row{{"Filter((test.v1 <= 6) OR ((test.v1 > 0) AND (test.v2 BETWEEN 3 AND 50)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=6) OR (v1>0 AND v2 BETWEEN 3 AND 50));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {1, 2, 65, 9}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {50, 41, 17, 68}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {26, 21, 42, 76}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {0, 0, 3, 16}, {23, 16, 40, 36}, {42, 32, 40, 76}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 5 AND 35 AND v2<=3 AND v3<>14) OR (v1>11));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 5 AND 35) AND (test.v2 <= 3)) AND (NOT((test.v3 = 14)))) OR (test.v1 > 11))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 5 AND 35 AND v2<=3 AND v3<>14) OR (v1>11));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<50) AND (v1<19 AND v2>=10) OR (v1<36 AND v2>10 AND v3<>65));",
				Expected: []sql.Row{{"Filter(((test.v1 < 50) AND ((test.v1 < 19) AND (test.v2 >= 10))) OR (((test.v1 < 36) AND (test.v2 > 10)) AND (NOT((test.v3 = 65)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<50) AND (v1<19 AND v2>=10) OR (v1<36 AND v2>10 AND v3<>65));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {7, 7, 33, 51}, {38, 29, 27, 48}, {1, 2, 65, 9}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {17, 12, 66, 40}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=56 AND v3<=4 AND v2=46) OR (v1 BETWEEN 21 AND 53 AND v2<>63)) OR (v1 BETWEEN 10 AND 62 AND v2>=62)) OR (v1>31));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 56) AND (test.v3 <= 4)) AND (test.v2 = 46)) OR ((test.v1 BETWEEN 21 AND 53) AND (NOT((test.v2 = 63))))) OR ((test.v1 BETWEEN 10 AND 62) AND (test.v2 >= 62))) OR (test.v1 > 31))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=56 AND v3<=4 AND v2=46) OR (v1 BETWEEN 21 AND 53 AND v2<>63)) OR (v1 BETWEEN 10 AND 62 AND v2>=62)) OR (v1>31));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<20 AND v2>=1 AND v3=26) OR (v1=12));",
				Expected: []sql.Row{{"Filter((((test.v1 < 20) AND (test.v2 >= 1)) AND (test.v3 = 26)) OR (test.v1 = 12))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<20 AND v2>=1 AND v3=26) OR (v1=12));",
				Expected: []sql.Row{{16, 12, 44, 84}, {17, 12, 66, 40}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>51) AND (v1<>4 AND v2<47 AND v3>=77) OR (v1>41 AND v3>62));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 51))) AND (((NOT((test.v1 = 4))) AND (test.v2 < 47)) AND (test.v3 >= 77))) OR ((test.v1 > 41) AND (test.v3 > 62)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>51) AND (v1<>4 AND v2<47 AND v3>=77) OR (v1>41 AND v3>62));",
				Expected: []sql.Row{{97, 95, 89, 66}, {63, 56, 8, 78}, {68, 60, 8, 70}, {78, 72, 65, 64}, {62, 56, 0, 97}, {82, 76, 44, 87}, {16, 12, 44, 84}, {25, 21, 9, 89}, {89, 86, 63, 79}, {29, 23, 28, 90}, {52, 42, 80, 85}, {58, 54, 13, 78}, {93, 90, 30, 67}, {10, 8, 37, 90}, {24, 20, 29, 93}, {35, 28, 39, 84}, {59, 54, 57, 83}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<35) OR (v1>=58 AND v2>=0));",
				Expected: []sql.Row{{"Filter((test.v1 < 35) OR ((test.v1 >= 58) AND (test.v2 >= 0)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<35) OR (v1>=58 AND v2>=0));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>28 AND v2<95) OR (v1<91));",
				Expected: []sql.Row{{"Filter(((test.v1 > 28) AND (test.v2 < 95)) OR (test.v1 < 91))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>28 AND v2<95) OR (v1<91));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1=99 AND v2<=41 AND v3>=61) AND (v1=34 AND v2>68 AND v3<=42);",
				Expected: []sql.Row{{"Filter((((test.v1 = 99) AND (test.v2 <= 41)) AND (test.v3 >= 61)) AND (((test.v1 = 34) AND (test.v2 > 68)) AND (test.v3 <= 42)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1=99 AND v2<=41 AND v3>=61) AND (v1=34 AND v2>68 AND v3<=42);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=74 AND v2<=18) OR (v1>=72)) AND (v1=95 AND v2=31 AND v3 BETWEEN 5 AND 19);",
				Expected: []sql.Row{{"Filter((((test.v1 >= 74) AND (test.v2 <= 18)) OR (test.v1 >= 72)) AND (((test.v1 = 95) AND (test.v2 = 31)) AND (test.v3 BETWEEN 5 AND 19)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=74 AND v2<=18) OR (v1>=72)) AND (v1=95 AND v2=31 AND v3 BETWEEN 5 AND 19);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=64) OR (v1>=49 AND v2<9 AND v3<=49));",
				Expected: []sql.Row{{"Filter((test.v1 = 64) OR (((test.v1 >= 49) AND (test.v2 < 9)) AND (test.v3 <= 49)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=64) OR (v1>=49 AND v2<9 AND v3<=49));",
				Expected: []sql.Row{{95, 93, 7, 26}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=46) AND (v1<22 AND v2<>42 AND v3<>54) OR (v1>=55 AND v2 BETWEEN 11 AND 84));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 46) AND (((test.v1 < 22) AND (NOT((test.v2 = 42)))) AND (NOT((test.v3 = 54))))) OR ((test.v1 >= 55) AND (test.v2 BETWEEN 11 AND 84)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=46) AND (v1<22 AND v2<>42 AND v3<>54) OR (v1>=55 AND v2 BETWEEN 11 AND 84));",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {84, 82, 11, 6}, {94, 91, 15, 15}, {71, 65, 17, 9}, {78, 72, 65, 64}, {81, 76, 40, 52}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {93, 90, 30, 67}, {69, 61, 11, 25}, {73, 66, 73, 4}, {85, 82, 46, 32}, {90, 87, 22, 34}, {86, 84, 40, 8}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=7) OR (v1<54));",
				Expected: []sql.Row{{"Filter((test.v1 <= 7) OR (test.v1 < 54))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=7) OR (v1<54));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=95 AND v2=55 AND v3>34) OR (v1=19));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 95) AND (test.v2 = 55)) AND (test.v3 > 34)) OR (test.v1 = 19))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=95 AND v2=55 AND v3>34) OR (v1=19));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=51 AND v2<=9) OR (v1<>50)) OR (v1<>4 AND v2>56)) OR (v1 BETWEEN 3 AND 18 AND v2>10 AND v3=12));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 51) AND (test.v2 <= 9)) OR (NOT((test.v1 = 50)))) OR ((NOT((test.v1 = 4))) AND (test.v2 > 56))) OR (((test.v1 BETWEEN 3 AND 18) AND (test.v2 > 10)) AND (test.v3 = 12)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=51 AND v2<=9) OR (v1<>50)) OR (v1<>4 AND v2>56)) OR (v1 BETWEEN 3 AND 18 AND v2>10 AND v3=12));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=90 AND v2<=17) OR (v1=2)) OR (v1<>70 AND v2>=84 AND v3<>42)) OR (v1<11 AND v2<>47 AND v3<55));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 90) AND (test.v2 <= 17)) OR (test.v1 = 2)) OR (((NOT((test.v1 = 70))) AND (test.v2 >= 84)) AND (NOT((test.v3 = 42))))) OR (((test.v1 < 11) AND (NOT((test.v2 = 47)))) AND (test.v3 < 55)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=90 AND v2<=17) OR (v1=2)) OR (v1<>70 AND v2>=84 AND v3<>42)) OR (v1<11 AND v2<>47 AND v3<55));",
				Expected: []sql.Row{{14, 10, 32, 46}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {84, 82, 11, 6}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {6, 6, 81, 33}, {62, 56, 0, 97}, {13, 10, 16, 21}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {5, 6, 6, 76}, {69, 61, 11, 25}, {0, 0, 3, 16}, {21, 14, 91, 1}, {70, 63, 85, 23}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 50 AND 59) OR (v1>=23 AND v3>=87 AND v2<>46));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 50 AND 59) OR (((test.v1 >= 23) AND (test.v3 >= 87)) AND (NOT((test.v2 = 46)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 50 AND 59) OR (v1>=23 AND v3>=87 AND v2<>46));",
				Expected: []sql.Row{{32, 25, 49, 88}, {64, 56, 58, 4}, {63, 56, 8, 78}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {82, 76, 44, 87}, {60, 55, 45, 46}, {29, 23, 28, 90}, {41, 31, 47, 91}, {58, 54, 13, 78}, {66, 57, 7, 52}, {59, 54, 57, 83}, {57, 50, 86, 6}, {56, 50, 49, 20}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<53) OR (v1<=3));",
				Expected: []sql.Row{{"Filter((test.v1 < 53) OR (test.v1 <= 3))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<53) OR (v1<=3));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=16 AND v2 BETWEEN 66 AND 94) OR (v1>70 AND v2<=3)) AND (v1<>91) OR (v1=17 AND v2>=7));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 16) AND (test.v2 BETWEEN 66 AND 94)) OR ((test.v1 > 70) AND (test.v2 <= 3))) AND (NOT((test.v1 = 91)))) OR ((test.v1 = 17) AND (test.v2 >= 7)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=16 AND v2 BETWEEN 66 AND 94) OR (v1>70 AND v2<=3)) AND (v1<>91) OR (v1=17 AND v2>=7));",
				Expected: []sql.Row{{97, 95, 89, 66}, {47, 36, 84, 75}, {80, 75, 91, 35}, {51, 41, 77, 26}, {96, 94, 92, 38}, {65, 56, 66, 33}, {67, 59, 77, 53}, {49, 38, 88, 68}, {79, 74, 78, 26}, {43, 33, 70, 50}, {52, 42, 80, 85}, {92, 88, 88, 42}, {73, 66, 73, 4}, {39, 29, 77, 46}, {70, 63, 85, 23}, {87, 84, 93, 37}, {57, 50, 86, 6}, {61, 55, 81, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<29 AND v3>=33 AND v2=43) OR (v1<59));",
				Expected: []sql.Row{{"Filter((((test.v1 < 29) AND (test.v3 >= 33)) AND (test.v2 = 43)) OR (test.v1 < 59))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<29 AND v3>=33 AND v2=43) OR (v1<59));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>19 AND v2>84 AND v3>94) OR (v1>=42 AND v3=41));",
				Expected: []sql.Row{{"Filter((((test.v1 > 19) AND (test.v2 > 84)) AND (test.v3 > 94)) OR ((test.v1 >= 42) AND (test.v3 = 41)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>19 AND v2>84 AND v3>94) OR (v1>=42 AND v3=41));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=8 AND v2<=97 AND v3>=77) OR (v1<>4)) OR (v1<=41));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 8) AND (test.v2 <= 97)) AND (test.v3 >= 77)) OR (NOT((test.v1 = 4)))) OR (test.v1 <= 41))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=8 AND v2<=97 AND v3>=77) OR (v1<>4)) OR (v1<=41));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>33) OR (v1<=28)) OR (v1<>68));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 33))) OR (test.v1 <= 28)) OR (NOT((test.v1 = 68))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>33) OR (v1<=28)) OR (v1<>68));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>15 AND v2>=22 AND v3<=51) OR (v1<>40 AND v2>26 AND v3<95));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 15))) AND (test.v2 >= 22)) AND (test.v3 <= 51)) OR (((NOT((test.v1 = 40))) AND (test.v2 > 26)) AND (test.v3 < 95)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>15 AND v2>=22 AND v3<=51) OR (v1<>40 AND v2>26 AND v3<95));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {47, 36, 84, 75}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {29, 23, 28, 90}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {52, 42, 80, 85}, {92, 88, 88, 42}, {93, 90, 30, 67}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>6) OR (v1<=67 AND v2<>67 AND v3>=88));",
				Expected: []sql.Row{{"Filter((test.v1 > 6) OR (((test.v1 <= 67) AND (NOT((test.v2 = 67)))) AND (test.v3 >= 88)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>6) OR (v1<=67 AND v2<>67 AND v3>=88));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=0) OR (v1<=53)) OR (v1<=38));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 0) OR (test.v1 <= 53)) OR (test.v1 <= 38))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=0) OR (v1<=53)) OR (v1<=38));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {57, 50, 86, 6}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=60 AND v3 BETWEEN 2 AND 13 AND v2 BETWEEN 10 AND 69) OR (v1 BETWEEN 1 AND 49)) OR (v1=8 AND v2<26));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 60) AND (test.v3 BETWEEN 2 AND 13)) AND (test.v2 BETWEEN 10 AND 69)) OR (test.v1 BETWEEN 1 AND 49)) OR ((test.v1 = 8) AND (test.v2 < 26)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=60 AND v3 BETWEEN 2 AND 13 AND v2 BETWEEN 10 AND 69) OR (v1 BETWEEN 1 AND 49)) OR (v1=8 AND v2<26));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {48, 37, 27, 32}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 14 AND 20 AND v2<>70) OR (v1>78 AND v2 BETWEEN 31 AND 52 AND v3>16)) OR (v1 BETWEEN 77 AND 78));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 14 AND 20) AND (NOT((test.v2 = 70)))) OR (((test.v1 > 78) AND (test.v2 BETWEEN 31 AND 52)) AND (test.v3 > 16))) OR (test.v1 BETWEEN 77 AND 78))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 14 AND 20 AND v2<>70) OR (v1>78 AND v2 BETWEEN 31 AND 52 AND v3>16)) OR (v1 BETWEEN 77 AND 78));",
				Expected: []sql.Row{{22, 15, 2, 69}, {100, 98, 42, 22}, {99, 98, 31, 21}, {24, 20, 29, 93}, {21, 14, 91, 1}, {23, 16, 40, 36}, {85, 82, 46, 32}, {20, 14, 38, 24}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<80 AND v2 BETWEEN 41 AND 74) OR (v1>=36 AND v2=32));",
				Expected: []sql.Row{{"Filter(((test.v1 < 80) AND (test.v2 BETWEEN 41 AND 74)) OR ((test.v1 >= 36) AND (test.v2 = 32)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<80 AND v2 BETWEEN 41 AND 74) OR (v1>=36 AND v2=32));",
				Expected: []sql.Row{{32, 25, 49, 88}, {64, 56, 58, 4}, {12, 9, 71, 82}, {40, 31, 47, 21}, {78, 72, 65, 64}, {1, 2, 65, 9}, {54, 46, 58, 8}, {65, 56, 66, 33}, {74, 67, 55, 27}, {82, 76, 44, 87}, {16, 12, 44, 84}, {60, 55, 45, 46}, {18, 13, 47, 30}, {17, 12, 66, 40}, {76, 70, 58, 33}, {19, 13, 56, 41}, {41, 31, 47, 91}, {43, 33, 70, 50}, {72, 66, 46, 46}, {15, 10, 47, 36}, {26, 21, 42, 76}, {73, 66, 73, 4}, {59, 54, 57, 83}, {56, 50, 49, 20}, {83, 81, 32, 4}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=24 AND v2=62) OR (v1<=24 AND v3<>22 AND v2 BETWEEN 12 AND 25)) OR (v1 BETWEEN 48 AND 49 AND v3>=90)) AND (v1<15 AND v2<>55 AND v3=51);",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 24) AND (test.v2 = 62)) OR (((test.v1 <= 24) AND (NOT((test.v3 = 22)))) AND (test.v2 BETWEEN 12 AND 25))) OR ((test.v1 BETWEEN 48 AND 49) AND (test.v3 >= 90))) AND (((test.v1 < 15) AND (NOT((test.v2 = 55)))) AND (test.v3 = 51)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=24 AND v2=62) OR (v1<=24 AND v3<>22 AND v2 BETWEEN 12 AND 25)) OR (v1 BETWEEN 48 AND 49 AND v3>=90)) AND (v1<15 AND v2<>55 AND v3=51);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<66 AND v2>=11 AND v3<90) OR (v1<>90)) OR (v1<=7 AND v2=52));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 66) AND (test.v2 >= 11)) AND (test.v3 < 90)) OR (NOT((test.v1 = 90)))) OR ((test.v1 <= 7) AND (test.v2 = 52)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<66 AND v2>=11 AND v3<90) OR (v1<>90)) OR (v1<=7 AND v2=52));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 6 AND 74 AND v2=52) OR (v1>44 AND v3>=15 AND v2 BETWEEN 17 AND 94)) OR (v1>84));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 6 AND 74) AND (test.v2 = 52)) OR (((test.v1 > 44) AND (test.v3 >= 15)) AND (test.v2 BETWEEN 17 AND 94))) OR (test.v1 > 84))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 6 AND 74 AND v2=52) OR (v1>44 AND v3>=15 AND v2 BETWEEN 17 AND 94)) OR (v1>84));",
				Expected: []sql.Row{{88, 85, 53, 50}, {97, 95, 89, 66}, {94, 91, 15, 15}, {95, 93, 7, 26}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {56, 50, 49, 20}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=38) OR (v1=13)) OR (v1=25 AND v2<=32 AND v3 BETWEEN 12 AND 92));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 38) OR (test.v1 = 13)) OR (((test.v1 = 25) AND (test.v2 <= 32)) AND (test.v3 BETWEEN 12 AND 92)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=38) OR (v1=13)) OR (v1=25 AND v2<=32 AND v3 BETWEEN 12 AND 92));",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {18, 13, 47, 30}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {69, 61, 11, 25}, {73, 66, 73, 4}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=84) OR (v1=41)) OR (v1<83 AND v2=13 AND v3=58));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 84) OR (test.v1 = 41)) OR (((test.v1 < 83) AND (test.v2 = 13)) AND (test.v3 = 58)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=84) OR (v1=41)) OR (v1<83 AND v2=13 AND v3=58));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<36 AND v2<=79 AND v3>47) OR (v1 BETWEEN 24 AND 89 AND v2<29));",
				Expected: []sql.Row{{"Filter((((test.v1 < 36) AND (test.v2 <= 79)) AND (test.v3 > 47)) OR ((test.v1 BETWEEN 24 AND 89) AND (test.v2 < 29)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<36 AND v2<=79 AND v3>47) OR (v1 BETWEEN 24 AND 89 AND v2<29));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {12, 9, 71, 82}, {84, 82, 11, 6}, {27, 23, 13, 53}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {22, 15, 2, 69}, {62, 56, 0, 97}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {26, 21, 42, 76}, {33, 26, 15, 28}, {58, 54, 13, 78}, {66, 57, 7, 52}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {35, 28, 39, 84}, {69, 61, 11, 25}, {42, 32, 40, 76}, {90, 87, 22, 34}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 3 AND 19 AND v2<=57 AND v3>61) OR (v1<=58 AND v2>=36 AND v3=31)) AND (v1>94);",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 3 AND 19) AND (test.v2 <= 57)) AND (test.v3 > 61)) OR (((test.v1 <= 58) AND (test.v2 >= 36)) AND (test.v3 = 31))) AND (test.v1 > 94))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 3 AND 19 AND v2<=57 AND v3>61) OR (v1<=58 AND v2>=36 AND v3=31)) AND (v1>94);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<78 AND v2 BETWEEN 55 AND 64 AND v3>=0) OR (v1<74));",
				Expected: []sql.Row{{"Filter((((test.v1 < 78) AND (test.v2 BETWEEN 55 AND 64)) AND (test.v3 >= 0)) OR (test.v1 < 74))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<78 AND v2 BETWEEN 55 AND 64 AND v3>=0) OR (v1<74));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {57, 50, 86, 6}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>1 AND v2=88 AND v3<33) OR (v1<=38)) OR (v1>74 AND v3<>55 AND v2>=9));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 1))) AND (test.v2 = 88)) AND (test.v3 < 33)) OR (test.v1 <= 38)) OR (((test.v1 > 74) AND (NOT((test.v3 = 55)))) AND (test.v2 >= 9)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>1 AND v2=88 AND v3<33) OR (v1<=38)) OR (v1>74 AND v3<>55 AND v2>=9));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 15 AND 96 AND v2<>73) OR (v1>=16));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 15 AND 96) AND (NOT((test.v2 = 73)))) OR (test.v1 >= 16))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 15 AND 96 AND v2<>73) OR (v1>=16));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=72 AND v2<>19 AND v3 BETWEEN 9 AND 12) OR (v1<=77 AND v2=30 AND v3<=10));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 72) AND (NOT((test.v2 = 19)))) AND (test.v3 BETWEEN 9 AND 12)) OR (((test.v1 <= 77) AND (test.v2 = 30)) AND (test.v3 <= 10)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=72 AND v2<>19 AND v3 BETWEEN 9 AND 12) OR (v1<=77 AND v2=30 AND v3<=10));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>28 AND v2>=73 AND v3=79) AND (v1<=70 AND v2 BETWEEN 5 AND 36) OR (v1<=31)) OR (v1<36)) OR (v1=47 AND v2 BETWEEN 0 AND 92 AND v3<=43));",
				Expected: []sql.Row{{"Filter(((((((test.v1 > 28) AND (test.v2 >= 73)) AND (test.v3 = 79)) AND ((test.v1 <= 70) AND (test.v2 BETWEEN 5 AND 36))) OR (test.v1 <= 31)) OR (test.v1 < 36)) OR (((test.v1 = 47) AND (test.v2 BETWEEN 0 AND 92)) AND (test.v3 <= 43)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>28 AND v2>=73 AND v3=79) AND (v1<=70 AND v2 BETWEEN 5 AND 36) OR (v1<=31)) OR (v1<36)) OR (v1=47 AND v2 BETWEEN 0 AND 92 AND v3<=43));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {7, 7, 33, 51}, {38, 29, 27, 48}, {1, 2, 65, 9}, {22, 15, 2, 69}, {6, 6, 81, 33}, {34, 27, 35, 12}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {17, 12, 66, 40}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {15, 10, 47, 36}, {26, 21, 42, 76}, {33, 26, 15, 28}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {20, 14, 38, 24}, {28, 23, 28, 68}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>24) AND (v1>68 AND v2 BETWEEN 1 AND 79 AND v3 BETWEEN 23 AND 44) OR (v1>78));",
				Expected: []sql.Row{{"Filter(((test.v1 > 24) AND (((test.v1 > 68) AND (test.v2 BETWEEN 1 AND 79)) AND (test.v3 BETWEEN 23 AND 44))) OR (test.v1 > 78))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>24) AND (v1>68 AND v2 BETWEEN 1 AND 79 AND v3 BETWEEN 23 AND 44) OR (v1>78));",
				Expected: []sql.Row{{88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {96, 94, 92, 38}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {86, 84, 40, 8}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=47 AND v2=7) OR (v1>=7 AND v2<>87)) OR (v1<>6 AND v2<=84));",
				Expected: []sql.Row{{"Filter((((test.v1 = 47) AND (test.v2 = 7)) OR ((test.v1 >= 7) AND (NOT((test.v2 = 87))))) OR ((NOT((test.v1 = 6))) AND (test.v2 <= 84)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=47 AND v2=7) OR (v1>=7 AND v2<>87)) OR (v1<>6 AND v2<=84));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=49 AND v2>53 AND v3<>12) OR (v1=95 AND v2<1 AND v3<>89)) OR (v1=62 AND v3>=37 AND v2<=22)) OR (v1>30 AND v2>=66));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 49) AND (test.v2 > 53)) AND (NOT((test.v3 = 12)))) OR (((test.v1 = 95) AND (test.v2 < 1)) AND (NOT((test.v3 = 89))))) OR (((test.v1 = 62) AND (test.v3 >= 37)) AND (test.v2 <= 22))) OR ((test.v1 > 30) AND (test.v2 >= 66)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=49 AND v2>53 AND v3<>12) OR (v1=95 AND v2<1 AND v3<>89)) OR (v1=62 AND v3>=37 AND v2<=22)) OR (v1>30 AND v2>=66));",
				Expected: []sql.Row{{64, 56, 58, 4}, {97, 95, 89, 66}, {47, 36, 84, 75}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {49, 38, 88, 68}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {43, 33, 70, 50}, {98, 97, 63, 19}, {52, 42, 80, 85}, {92, 88, 88, 42}, {73, 66, 73, 4}, {59, 54, 57, 83}, {70, 63, 85, 23}, {87, 84, 93, 37}, {57, 50, 86, 6}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=24 AND v2<81) OR (v1<=22 AND v2>34 AND v3<55)) OR (v1=45 AND v2>=94 AND v3>17));",
				Expected: []sql.Row{{"Filter((((test.v1 = 24) AND (test.v2 < 81)) OR (((test.v1 <= 22) AND (test.v2 > 34)) AND (test.v3 < 55))) OR (((test.v1 = 45) AND (test.v2 >= 94)) AND (test.v3 > 17)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=24 AND v2<81) OR (v1<=22 AND v2>34 AND v3<55)) OR (v1=45 AND v2>=94 AND v3>17));",
				Expected: []sql.Row{{2, 3, 38, 37}, {11, 9, 39, 20}, {1, 2, 65, 9}, {6, 6, 81, 33}, {18, 13, 47, 30}, {17, 12, 66, 40}, {19, 13, 56, 41}, {31, 24, 20, 8}, {15, 10, 47, 36}, {8, 7, 37, 42}, {21, 14, 91, 1}, {23, 16, 40, 36}, {20, 14, 38, 24}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>38) OR (v1<51 AND v2>=28 AND v3=44)) OR (v1 BETWEEN 23 AND 61 AND v2 BETWEEN 54 AND 75 AND v3<>44)) OR (v1>72));",
				Expected: []sql.Row{{"Filter((((test.v1 > 38) OR (((test.v1 < 51) AND (test.v2 >= 28)) AND (test.v3 = 44))) OR (((test.v1 BETWEEN 23 AND 61) AND (test.v2 BETWEEN 54 AND 75)) AND (NOT((test.v3 = 44))))) OR (test.v1 > 72))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>38) OR (v1<51 AND v2>=28 AND v3=44)) OR (v1 BETWEEN 23 AND 61 AND v2 BETWEEN 54 AND 75 AND v3<>44)) OR (v1>72));",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {30, 23, 30, 44}, {69, 61, 11, 25}, {73, 66, 73, 4}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>40 AND v2 BETWEEN 26 AND 30) OR (v1<3 AND v2>=62 AND v3<=8)) OR (v1<>57)) OR (v1=16 AND v2>92 AND v3<=74));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 40) AND (test.v2 BETWEEN 26 AND 30)) OR (((test.v1 < 3) AND (test.v2 >= 62)) AND (test.v3 <= 8))) OR (NOT((test.v1 = 57)))) OR (((test.v1 = 16) AND (test.v2 > 92)) AND (test.v3 <= 74)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>40 AND v2 BETWEEN 26 AND 30) OR (v1<3 AND v2>=62 AND v3<=8)) OR (v1<>57)) OR (v1=16 AND v2>92 AND v3<=74));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=34 AND v2 BETWEEN 29 AND 35 AND v3>=64) OR (v1<>47)) AND (v1>=11) OR (v1<>46 AND v2 BETWEEN 4 AND 26));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 34) AND (test.v2 BETWEEN 29 AND 35)) AND (test.v3 >= 64)) OR (NOT((test.v1 = 47)))) AND (test.v1 >= 11)) OR ((NOT((test.v1 = 46))) AND (test.v2 BETWEEN 4 AND 26)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=34 AND v2 BETWEEN 29 AND 35 AND v3>=64) OR (v1<>47)) AND (v1>=11) OR (v1<>46 AND v2 BETWEEN 4 AND 26));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 41 AND 98 AND v2>54) OR (v1<29)) OR (v1<32));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 41 AND 98) AND (test.v2 > 54)) OR (test.v1 < 29)) OR (test.v1 < 32))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 41 AND 98 AND v2>54) OR (v1<29)) OR (v1<32));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {64, 56, 58, 4}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {3, 3, 99, 99}, {27, 23, 13, 53}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {6, 6, 81, 33}, {34, 27, 35, 12}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {79, 74, 78, 26}, {17, 12, 66, 40}, {76, 70, 58, 33}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {15, 10, 47, 36}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {92, 88, 88, 42}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {59, 54, 57, 83}, {70, 63, 85, 23}, {20, 14, 38, 24}, {87, 84, 93, 37}, {57, 50, 86, 6}, {28, 23, 28, 68}, {61, 55, 81, 80}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=79 AND v3 BETWEEN 9 AND 95) OR (v1 BETWEEN 50 AND 50 AND v2 BETWEEN 16 AND 38 AND v3<>94));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 79) AND (test.v3 BETWEEN 9 AND 95)) OR (((test.v1 BETWEEN 50 AND 50) AND (test.v2 BETWEEN 16 AND 38)) AND (NOT((test.v3 = 94)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=79 AND v3 BETWEEN 9 AND 95) OR (v1 BETWEEN 50 AND 50 AND v2 BETWEEN 16 AND 38 AND v3<>94));",
				Expected: []sql.Row{{88, 85, 53, 50}, {97, 95, 89, 66}, {94, 91, 15, 15}, {95, 93, 7, 26}, {96, 94, 92, 38}, {89, 86, 63, 79}, {100, 98, 42, 22}, {99, 98, 31, 21}, {98, 97, 63, 19}, {92, 88, 88, 42}, {93, 90, 30, 67}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<>79) OR (v1 BETWEEN 9 AND 11 AND v2<48 AND v3<=73)) OR (v1<=46)) OR (v1 BETWEEN 66 AND 67)) OR (v1<=86 AND v2<4));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 79))) OR (((test.v1 BETWEEN 9 AND 11) AND (test.v2 < 48)) AND (test.v3 <= 73))) OR (test.v1 <= 46)) OR (test.v1 BETWEEN 66 AND 67)) OR ((test.v1 <= 86) AND (test.v2 < 4)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<>79) OR (v1 BETWEEN 9 AND 11 AND v2<48 AND v3<=73)) OR (v1<=46)) OR (v1 BETWEEN 66 AND 67)) OR (v1<=86 AND v2<4));",
				Expected: []sql.Row{{14, 10, 32, 46}, {32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {2, 3, 38, 37}, {11, 9, 39, 20}, {12, 9, 71, 82}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {3, 3, 99, 99}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {7, 7, 33, 51}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {1, 2, 65, 9}, {22, 15, 2, 69}, {54, 46, 58, 8}, {81, 76, 40, 52}, {6, 6, 81, 33}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {13, 10, 16, 21}, {16, 12, 44, 84}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {4, 5, 17, 42}, {18, 13, 47, 30}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {17, 12, 66, 40}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {19, 13, 56, 41}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {15, 10, 47, 36}, {99, 98, 31, 21}, {98, 97, 63, 19}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {9, 8, 9, 21}, {8, 7, 37, 42}, {10, 8, 37, 90}, {5, 6, 6, 76}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {0, 0, 3, 16}, {21, 14, 91, 1}, {23, 16, 40, 36}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {20, 14, 38, 24}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=2 AND v2 BETWEEN 32 AND 59 AND v3 BETWEEN 50 AND 52) OR (v1<26)) OR (v1<>2 AND v2>11)) AND (v1>32 AND v2<=92) AND (v1>45 AND v2<>5 AND v3<>49);",
				Expected: []sql.Row{{"Filter(((((((test.v1 >= 2) AND (test.v2 BETWEEN 32 AND 59)) AND (test.v3 BETWEEN 50 AND 52)) OR (test.v1 < 26)) OR ((NOT((test.v1 = 2))) AND (test.v2 > 11))) AND ((test.v1 > 32) AND (test.v2 <= 92))) AND (((test.v1 > 45) AND (NOT((test.v2 = 5)))) AND (NOT((test.v3 = 49)))))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=2 AND v2 BETWEEN 32 AND 59 AND v3 BETWEEN 50 AND 52) OR (v1<26)) OR (v1<>2 AND v2>11)) AND (v1>32 AND v2<=92) AND (v1>45 AND v2<>5 AND v3<>49);",
				Expected: []sql.Row{{64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {94, 91, 15, 15}, {71, 65, 17, 9}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {60, 55, 45, 46}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {58, 54, 13, 78}, {92, 88, 88, 42}, {93, 90, 30, 67}, {73, 66, 73, 4}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {57, 50, 86, 6}, {86, 84, 40, 8}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=19) AND (v1<=73) OR (v1=9 AND v2=5 AND v3<=5));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 19) AND (test.v1 <= 73)) OR (((test.v1 = 9) AND (test.v2 = 5)) AND (test.v3 <= 5)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=19) AND (v1<=73) OR (v1=9 AND v2=5 AND v3<=5));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {40, 31, 47, 21}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {54, 46, 58, 8}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {25, 21, 9, 89}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {76, 70, 58, 33}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {26, 21, 42, 76}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {24, 20, 29, 93}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {57, 50, 86, 6}, {75, 70, 8, 54}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<62) AND (v1<=57 AND v2>51 AND v3 BETWEEN 29 AND 30) OR (v1>=28 AND v2<=62 AND v3<>76)) OR (v1>=94));",
				Expected: []sql.Row{{"Filter((((test.v1 < 62) AND (((test.v1 <= 57) AND (test.v2 > 51)) AND (test.v3 BETWEEN 29 AND 30))) OR (((test.v1 >= 28) AND (test.v2 <= 62)) AND (NOT((test.v3 = 76))))) OR (test.v1 >= 94))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<62) AND (v1<=57 AND v2>51 AND v3 BETWEEN 29 AND 30) OR (v1>=28 AND v2<=62 AND v3<>76)) OR (v1>=94));",
				Expected: []sql.Row{{44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {38, 29, 27, 48}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {62, 56, 0, 97}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {60, 55, 45, 46}, {36, 29, 7, 38}, {53, 45, 1, 57}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {37, 29, 21, 74}, {41, 31, 47, 91}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {58, 54, 13, 78}, {66, 57, 7, 52}, {93, 90, 30, 67}, {35, 28, 39, 84}, {69, 61, 11, 25}, {59, 54, 57, 83}, {85, 82, 46, 32}, {90, 87, 22, 34}, {75, 70, 8, 54}, {86, 84, 40, 8}, {48, 37, 27, 32}, {56, 50, 49, 20}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>21) OR (v1>=86 AND v2>2 AND v3>=67));",
				Expected: []sql.Row{{"Filter((test.v1 > 21) OR (((test.v1 >= 86) AND (test.v2 > 2)) AND (test.v3 >= 67)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>21) OR (v1>=86 AND v2>2 AND v3>=67));",
				Expected: []sql.Row{{32, 25, 49, 88}, {44, 34, 27, 58}, {64, 56, 58, 4}, {88, 85, 53, 50}, {97, 95, 89, 66}, {40, 31, 47, 21}, {84, 82, 11, 6}, {94, 91, 15, 15}, {95, 93, 7, 26}, {27, 23, 13, 53}, {47, 36, 84, 75}, {63, 56, 8, 78}, {68, 60, 8, 70}, {71, 65, 17, 9}, {80, 75, 91, 35}, {38, 29, 27, 48}, {51, 41, 77, 26}, {78, 72, 65, 64}, {96, 94, 92, 38}, {54, 46, 58, 8}, {81, 76, 40, 52}, {34, 27, 35, 12}, {62, 56, 0, 97}, {65, 56, 66, 33}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {46, 36, 4, 36}, {49, 38, 88, 68}, {60, 55, 45, 46}, {89, 86, 63, 79}, {29, 23, 28, 90}, {36, 29, 7, 38}, {53, 45, 1, 57}, {79, 74, 78, 26}, {50, 41, 17, 68}, {76, 70, 58, 33}, {100, 98, 42, 22}, {31, 24, 20, 8}, {37, 29, 21, 74}, {41, 31, 47, 91}, {43, 33, 70, 50}, {55, 49, 26, 11}, {72, 66, 46, 46}, {77, 71, 39, 15}, {99, 98, 31, 21}, {98, 97, 63, 19}, {33, 26, 15, 28}, {52, 42, 80, 85}, {58, 54, 13, 78}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {30, 23, 30, 44}, {35, 28, 39, 84}, {69, 61, 11, 25}, {73, 66, 73, 4}, {39, 29, 77, 46}, {42, 32, 40, 76}, {59, 54, 57, 83}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {57, 50, 86, 6}, {75, 70, 8, 54}, {86, 84, 40, 8}, {28, 23, 28, 68}, {48, 37, 27, 32}, {56, 50, 49, 20}, {61, 55, 81, 80}, {83, 81, 32, 4}, {91, 87, 57, 62}, {45, 35, 32, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=94) OR (v1>=57 AND v2<>53 AND v3>22));",
				Expected: []sql.Row{{"Filter((test.v1 >= 94) OR (((test.v1 >= 57) AND (NOT((test.v2 = 53)))) AND (test.v3 > 22)))"}, {" └─ Projected table access on [pk v1 v2 v3]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=94) OR (v1>=57 AND v2<>53 AND v3>22));",
				Expected: []sql.Row{{97, 95, 89, 66}, {95, 93, 7, 26}, {68, 60, 8, 70}, {80, 75, 91, 35}, {78, 72, 65, 64}, {96, 94, 92, 38}, {81, 76, 40, 52}, {67, 59, 77, 53}, {74, 67, 55, 27}, {82, 76, 44, 87}, {89, 86, 63, 79}, {79, 74, 78, 26}, {76, 70, 58, 33}, {100, 98, 42, 22}, {72, 66, 46, 46}, {99, 98, 31, 21}, {98, 97, 63, 19}, {66, 57, 7, 52}, {92, 88, 88, 42}, {93, 90, 30, 67}, {69, 61, 11, 25}, {70, 63, 85, 23}, {85, 82, 46, 32}, {90, 87, 22, 34}, {87, 84, 93, 37}, {75, 70, 8, 54}, {91, 87, 57, 62}},
			},
		},
	},
	{
		Name: "Four column index",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, v2 BIGINT, v3 BIGINT, v4 BIGINT, INDEX (v1, v2, v3, v4));",
			`INSERT INTO test VALUES (0,0,33,2,67),(1,0,55,14,32),(2,1,43,13,36),(3,1,72,29,21),(4,2,27,1,75),
(5,3,31,22,81),(6,4,6,67,80),(7,4,10,53,69),(8,4,27,77,5),(9,5,17,52,13),(10,5,32,30,48),(11,5,76,70,46),(12,7,7,66,62),
(13,7,21,75,70),(14,7,76,26,47),(15,8,54,46,87),(16,8,99,43,1),(17,9,7,74,92),(18,9,19,38,35),(19,10,36,27,5),
(20,12,0,33,62),(21,12,42,15,31),(22,12,46,43,23),(23,15,42,17,60),(24,17,49,14,7),(25,17,75,86,18),(26,20,30,34,71),
(27,21,21,32,8),(28,22,21,28,78),(29,22,98,22,21),(30,23,43,13,11),(31,24,26,69,25),(32,24,45,96,0),(33,29,72,97,93),
(34,32,16,97,29),(35,33,29,69,6),(36,33,53,56,88),(37,33,86,12,22),(38,34,55,37,34),(39,34,87,13,51),(40,34,89,27,90),
(41,35,6,86,74),(42,36,7,40,16),(43,37,35,6,44),(44,37,41,36,10),(45,38,71,22,37),(46,39,45,75,55),(47,41,1,85,9),
(48,41,21,82,54),(49,43,23,15,0),(50,43,66,85,66),(51,45,9,76,9),(52,47,94,56,21),(53,48,3,11,18),(54,50,26,23,71),
(55,50,36,73,58),(56,50,39,26,37),(57,50,79,10,12),(58,50,97,0,79),(59,51,97,39,36),(60,52,72,44,2),(61,53,6,53,89),
(62,53,48,19,36),(63,55,31,29,92),(64,57,25,97,65),(65,63,50,20,43),(66,64,23,33,5),(67,64,26,77,97),(68,64,41,74,85),
(69,64,77,41,17),(70,66,97,6,39),(71,67,39,87,15),(72,69,81,70,37),(73,70,40,19,5),(74,70,56,21,22),(75,71,3,49,55),
(76,71,48,89,99),(77,73,10,2,0),(78,73,91,56,0),(79,74,22,42,16),(80,74,35,72,97),(81,76,74,97,18),(82,82,29,66,71),
(83,82,31,22,99),(84,82,70,5,47),(85,83,37,36,16),(86,83,41,53,57),(87,84,56,78,18),(88,85,2,3,88),(89,86,7,57,96),
(90,87,23,16,63),(91,87,66,8,22),(92,88,57,12,88),(93,89,1,27,50),(94,89,91,7,45),(95,90,25,0,17),(96,91,23,2,9),
(97,93,56,71,53),(98,94,43,71,43),(99,94,79,53,73),(100,96,73,38,38);`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<40 AND v2=9) OR (v1<11 AND v2=15 AND v3<>55 AND v4<>95));",
				Expected: []sql.Row{{"Filter(((test.v1 < 40) AND (test.v2 = 9)) OR ((((test.v1 < 11) AND (test.v2 = 15)) AND (NOT((test.v3 = 55)))) AND (NOT((test.v4 = 95)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<40 AND v2=9) OR (v1<11 AND v2=15 AND v3<>55 AND v4<>95));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=82 AND v2=74 AND v3=98) OR (v1=27 AND v2 BETWEEN 16 AND 46 AND v3<>27)) OR (v1>=80 AND v2<>42 AND v3>=47));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 82) AND (test.v2 = 74)) AND (test.v3 = 98)) OR (((test.v1 = 27) AND (test.v2 BETWEEN 16 AND 46)) AND (NOT((test.v3 = 27))))) OR (((test.v1 >= 80) AND (NOT((test.v2 = 42)))) AND (test.v3 >= 47)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=82 AND v2=74 AND v3=98) OR (v1=27 AND v2 BETWEEN 16 AND 46 AND v3<>27)) OR (v1>=80 AND v2<>42 AND v3>=47));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {87, 84, 56, 78, 18}, {82, 82, 29, 66, 71}, {86, 83, 41, 53, 57}, {89, 86, 7, 57, 96}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=47 AND v2<=37 AND v3<90 AND v4=25) OR (v1<42 AND v2>=96 AND v3=38)) OR (v1>26)) OR (v1>=80));",
				Expected: []sql.Row{{"Filter(((((((test.v1 >= 47) AND (test.v2 <= 37)) AND (test.v3 < 90)) AND (test.v4 = 25)) OR (((test.v1 < 42) AND (test.v2 >= 96)) AND (test.v3 = 38))) OR (test.v1 > 26)) OR (test.v1 >= 80))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=47 AND v2<=37 AND v3<90 AND v4=25) OR (v1<42 AND v2>=96 AND v3=38)) OR (v1>26)) OR (v1>=80));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>33 AND v2>=16) OR (v1>=24));",
				Expected: []sql.Row{{"Filter(((test.v1 > 33) AND (test.v2 >= 16)) OR (test.v1 >= 24))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>33 AND v2>=16) OR (v1>=24));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=51 AND v4 BETWEEN 36 AND 55 AND v2>62 AND v3<43) OR (v1 BETWEEN 5 AND 60 AND v2<1)) OR (v1=51 AND v2>=98 AND v3>=94));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 51) AND (test.v4 BETWEEN 36 AND 55)) AND (test.v2 > 62)) AND (test.v3 < 43)) OR ((test.v1 BETWEEN 5 AND 60) AND (test.v2 < 1))) OR (((test.v1 = 51) AND (test.v2 >= 98)) AND (test.v3 >= 94)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=51 AND v4 BETWEEN 36 AND 55 AND v2>62 AND v3<43) OR (v1 BETWEEN 5 AND 60 AND v2<1)) OR (v1=51 AND v2>=98 AND v3>=94));",
				Expected: []sql.Row{{20, 12, 0, 33, 62}, {59, 51, 97, 39, 36}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=6 AND v4<95 AND v2<41 AND v3<=4) AND (v1>=81 AND v4>44 AND v2 BETWEEN 6 AND 11) OR (v1<=98));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 6) AND (test.v4 < 95)) AND (test.v2 < 41)) AND (test.v3 <= 4)) AND (((test.v1 >= 81) AND (test.v4 > 44)) AND (test.v2 BETWEEN 6 AND 11))) OR (test.v1 <= 98))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=6 AND v4<95 AND v2<41 AND v3<=4) AND (v1>=81 AND v4>44 AND v2 BETWEEN 6 AND 11) OR (v1<=98));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=12 AND v2<=78 AND v3 BETWEEN 28 AND 63 AND v4 BETWEEN 46 AND 95) OR (v1=87 AND v2<=44)) OR (v1<14 AND v2<>37 AND v3 BETWEEN 6 AND 32));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 12) AND (test.v2 <= 78)) AND (test.v3 BETWEEN 28 AND 63)) AND (test.v4 BETWEEN 46 AND 95)) OR ((test.v1 = 87) AND (test.v2 <= 44))) OR (((test.v1 < 14) AND (NOT((test.v2 = 37)))) AND (test.v3 BETWEEN 6 AND 32)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=12 AND v2<=78 AND v3 BETWEEN 28 AND 63 AND v4 BETWEEN 46 AND 95) OR (v1=87 AND v2<=44)) OR (v1<14 AND v2<>37 AND v3 BETWEEN 6 AND 32));",
				Expected: []sql.Row{{20, 12, 0, 33, 62}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {21, 12, 42, 15, 31}, {10, 5, 32, 30, 48}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {19, 10, 36, 27, 5}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=80 AND v2=72 AND v3>19) OR (v1<>38 AND v2>=86 AND v3=7)) OR (v1<=52 AND v2=25 AND v3 BETWEEN 7 AND 32 AND v4<=31));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 80) AND (test.v2 = 72)) AND (test.v3 > 19)) OR (((NOT((test.v1 = 38))) AND (test.v2 >= 86)) AND (test.v3 = 7))) OR ((((test.v1 <= 52) AND (test.v2 = 25)) AND (test.v3 BETWEEN 7 AND 32)) AND (test.v4 <= 31)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=80 AND v2=72 AND v3>19) OR (v1<>38 AND v2>=86 AND v3=7)) OR (v1<=52 AND v2=25 AND v3 BETWEEN 7 AND 32 AND v4<=31));",
				Expected: []sql.Row{{94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {60, 52, 72, 44, 2}, {33, 29, 72, 97, 93}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=70) OR (v1>=38 AND v3 BETWEEN 25 AND 30));",
				Expected: []sql.Row{{"Filter((test.v1 = 70) OR ((test.v1 >= 38) AND (test.v3 BETWEEN 25 AND 30)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=70) OR (v1>=38 AND v3 BETWEEN 25 AND 30));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {93, 89, 1, 27, 50}, {74, 70, 56, 21, 22}, {73, 70, 40, 19, 5}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=33) OR (v1<=31 AND v4<>35 AND v2=38));",
				Expected: []sql.Row{{"Filter((test.v1 <= 33) OR (((test.v1 <= 31) AND (NOT((test.v4 = 35)))) AND (test.v2 = 38)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=33) OR (v1<=31 AND v4<>35 AND v2=38));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>14 AND v2<51 AND v3 BETWEEN 67 AND 78 AND v4=8) OR (v1>=44 AND v2<>35 AND v3<35 AND v4>=12)) OR (v1>=63 AND v2<=3));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 14) AND (test.v2 < 51)) AND (test.v3 BETWEEN 67 AND 78)) AND (test.v4 = 8)) OR ((((test.v1 >= 44) AND (NOT((test.v2 = 35)))) AND (test.v3 < 35)) AND (test.v4 >= 12))) OR ((test.v1 >= 63) AND (test.v2 <= 3)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>14 AND v2<51 AND v3 BETWEEN 67 AND 78 AND v4=8) OR (v1>=44 AND v2<>35 AND v3<35 AND v4>=12)) OR (v1>=63 AND v2<=3));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {58, 50, 97, 0, 79}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=6 AND v2<=25 AND v3>39) OR (v1 BETWEEN 17 AND 94 AND v2>96));",
				Expected: []sql.Row{{"Filter((((test.v1 = 6) AND (test.v2 <= 25)) AND (test.v3 > 39)) OR ((test.v1 BETWEEN 17 AND 94) AND (test.v2 > 96)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=6 AND v2<=25 AND v3>39) OR (v1 BETWEEN 17 AND 94 AND v2>96));",
				Expected: []sql.Row{{59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {29, 22, 98, 22, 21}, {58, 50, 97, 0, 79}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1>=91 AND v4<=47 AND v2>=43) OR (v1=75)) OR (v1<41 AND v4>=64 AND v2>83)) OR (v1 BETWEEN 72 AND 88 AND v2=48 AND v3<=10)) OR (v1<=44));",
				Expected: []sql.Row{{"Filter(((((((test.v1 >= 91) AND (test.v4 <= 47)) AND (test.v2 >= 43)) OR (test.v1 = 75)) OR (((test.v1 < 41) AND (test.v4 >= 64)) AND (test.v2 > 83))) OR (((test.v1 BETWEEN 72 AND 88) AND (test.v2 = 48)) AND (test.v3 <= 10))) OR (test.v1 <= 44))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1>=91 AND v4<=47 AND v2>=43) OR (v1=75)) OR (v1<41 AND v4>=64 AND v2>83)) OR (v1 BETWEEN 72 AND 88 AND v2=48 AND v3<=10)) OR (v1<=44));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=31) OR (v1<84 AND v2<=73 AND v3<>2 AND v4<=51));",
				Expected: []sql.Row{{"Filter((test.v1 = 31) OR ((((test.v1 < 84) AND (test.v2 <= 73)) AND (NOT((test.v3 = 2)))) AND (test.v4 <= 51)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=31) OR (v1<84 AND v2<=73 AND v3<>2 AND v4<=51));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {56, 50, 39, 26, 37}, {35, 33, 29, 69, 6}, {65, 63, 50, 20, 43}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {85, 83, 37, 36, 16}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {2, 1, 43, 13, 36}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=20 AND v2<=29 AND v3<52 AND v4<>34) OR (v1<>46 AND v2<>98));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 20) AND (test.v2 <= 29)) AND (test.v3 < 52)) AND (NOT((test.v4 = 34)))) OR ((NOT((test.v1 = 46))) AND (NOT((test.v2 = 98)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=20 AND v2<=29 AND v3<52 AND v4<>34) OR (v1<>46 AND v2<>98));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<52 AND v3 BETWEEN 39 AND 57 AND v4 BETWEEN 13 AND 13 AND v2 BETWEEN 76 AND 99) OR (v1>44)) OR (v1<71 AND v4>7 AND v2<98)) OR (v1<>5 AND v2 BETWEEN 35 AND 40 AND v3<=10));",
				Expected: []sql.Row{{"Filter(((((((test.v1 < 52) AND (test.v3 BETWEEN 39 AND 57)) AND (test.v4 BETWEEN 13 AND 13)) AND (test.v2 BETWEEN 76 AND 99)) OR (test.v1 > 44)) OR (((test.v1 < 71) AND (test.v4 > 7)) AND (test.v2 < 98))) OR (((NOT((test.v1 = 5))) AND (test.v2 BETWEEN 35 AND 40)) AND (test.v3 <= 10)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<52 AND v3 BETWEEN 39 AND 57 AND v4 BETWEEN 13 AND 13 AND v2 BETWEEN 76 AND 99) OR (v1>44)) OR (v1<71 AND v4>7 AND v2<98)) OR (v1<>5 AND v2 BETWEEN 35 AND 40 AND v3<=10));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=40) OR (v1=27)) OR (v1>90 AND v2>50 AND v3=66 AND v4<83));",
				Expected: []sql.Row{{"Filter(((test.v1 = 40) OR (test.v1 = 27)) OR ((((test.v1 > 90) AND (test.v2 > 50)) AND (test.v3 = 66)) AND (test.v4 < 83)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=40) OR (v1=27)) OR (v1>90 AND v2>50 AND v3=66 AND v4<83));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<=92 AND v4 BETWEEN 8 AND 90) AND (v1 BETWEEN 39 AND 42);",
				Expected: []sql.Row{{"Filter(((test.v1 <= 92) AND (test.v4 BETWEEN 8 AND 90)) AND (test.v1 BETWEEN 39 AND 42))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<=92 AND v4 BETWEEN 8 AND 90) AND (v1 BETWEEN 39 AND 42);",
				Expected: []sql.Row{{48, 41, 21, 82, 54}, {46, 39, 45, 75, 55}, {47, 41, 1, 85, 9}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 23 AND 85 AND v2<=51 AND v3<>68) OR (v1 BETWEEN 30 AND 58 AND v2<>75));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 23 AND 85) AND (test.v2 <= 51)) AND (NOT((test.v3 = 68)))) OR ((test.v1 BETWEEN 30 AND 58) AND (NOT((test.v2 = 75)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 23 AND 85 AND v2<=51 AND v3<>68) OR (v1 BETWEEN 30 AND 58 AND v2<>75));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=67 AND v2<=17 AND v3<>91 AND v4<82) OR (v1>28 AND v2 BETWEEN 17 AND 71 AND v3<12));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 67) AND (test.v2 <= 17)) AND (NOT((test.v3 = 91)))) AND (test.v4 < 82)) OR (((test.v1 > 28) AND (test.v2 BETWEEN 17 AND 71)) AND (test.v3 < 12)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=67 AND v2<=17 AND v3<>91 AND v4<82) OR (v1>28 AND v2 BETWEEN 17 AND 71 AND v3<12));",
				Expected: []sql.Row{{43, 37, 35, 6, 44}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {93, 89, 1, 27, 50}, {84, 82, 70, 5, 47}, {77, 73, 10, 2, 0}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>77 AND v4>82 AND v2>=96) OR (v1 BETWEEN 41 AND 80 AND v2<>21 AND v3>60));",
				Expected: []sql.Row{{"Filter((((test.v1 > 77) AND (test.v4 > 82)) AND (test.v2 >= 96)) OR (((test.v1 BETWEEN 41 AND 80) AND (NOT((test.v2 = 21)))) AND (test.v3 > 60)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>77 AND v4>82 AND v2>=96) OR (v1 BETWEEN 41 AND 80 AND v2<>21 AND v3>60));",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {67, 64, 26, 77, 97}, {55, 50, 36, 73, 58}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1=28 AND v4 BETWEEN 44 AND 50) AND (v1>=49);",
				Expected: []sql.Row{{"Filter(((test.v1 = 28) AND (test.v4 BETWEEN 44 AND 50)) AND (test.v1 >= 49))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1=28 AND v4 BETWEEN 44 AND 50) AND (v1>=49);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 81 AND 87 AND v3<>81 AND v4<30) AND (v1=17) OR (v1<27 AND v2<>8 AND v3>35)) OR (v1>28 AND v2<62));",
				Expected: []sql.Row{{"Filter((((((test.v1 BETWEEN 81 AND 87) AND (NOT((test.v3 = 81)))) AND (test.v4 < 30)) AND (test.v1 = 17)) OR (((test.v1 < 27) AND (NOT((test.v2 = 8)))) AND (test.v3 > 35))) OR ((test.v1 > 28) AND (test.v2 < 62)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 81 AND 87 AND v3<>81 AND v4<30) AND (v1=17) OR (v1<27 AND v2<>8 AND v3>35)) OR (v1>28 AND v2<62));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>65 AND v2=64) OR (v1=82 AND v3<>99)) OR (v1>=68 AND v2=3 AND v3 BETWEEN 1 AND 51 AND v4<=73));",
				Expected: []sql.Row{{"Filter((((test.v1 > 65) AND (test.v2 = 64)) OR ((test.v1 = 82) AND (NOT((test.v3 = 99))))) OR ((((test.v1 >= 68) AND (test.v2 = 3)) AND (test.v3 BETWEEN 1 AND 51)) AND (test.v4 <= 73)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>65 AND v2=64) OR (v1=82 AND v3<>99)) OR (v1>=68 AND v2=3 AND v3 BETWEEN 1 AND 51 AND v4<=73));",
				Expected: []sql.Row{{82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {84, 82, 70, 5, 47}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=27 AND v3>23) OR (v1<70 AND v2<>43));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 27) AND (test.v3 > 23)) OR ((test.v1 < 70) AND (NOT((test.v2 = 43)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=27 AND v3>23) OR (v1<70 AND v2<>43));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>34 AND v2>=89 AND v3>=14) OR (v1<=42 AND v3<1)) OR (v1<59 AND v2>=23 AND v3 BETWEEN 17 AND 37 AND v4 BETWEEN 21 AND 38));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 34))) AND (test.v2 >= 89)) AND (test.v3 >= 14)) OR ((test.v1 <= 42) AND (test.v3 < 1))) OR ((((test.v1 < 59) AND (test.v2 >= 23)) AND (test.v3 BETWEEN 17 AND 37)) AND (test.v4 BETWEEN 21 AND 38)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>34 AND v2>=89 AND v3>=14) OR (v1<=42 AND v3<1)) OR (v1<59 AND v2>=23 AND v3 BETWEEN 17 AND 37 AND v4 BETWEEN 21 AND 38));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {52, 47, 94, 56, 21}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {45, 38, 71, 22, 37}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=52 AND v2>=55) OR (v1<73 AND v2<=1 AND v3>75 AND v4<=36)) OR (v1>=45 AND v2>=49 AND v3<=26 AND v4 BETWEEN 40 AND 83));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 52) AND (test.v2 >= 55)) OR ((((test.v1 < 73) AND (test.v2 <= 1)) AND (test.v3 > 75)) AND (test.v4 <= 36))) OR ((((test.v1 >= 45) AND (test.v2 >= 49)) AND (test.v3 <= 26)) AND (test.v4 BETWEEN 40 AND 83)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=52 AND v2>=55) OR (v1<73 AND v2<=1 AND v3>75 AND v4<=36)) OR (v1>=45 AND v2>=49 AND v3<=26 AND v4 BETWEEN 40 AND 83));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {78, 73, 91, 56, 0}, {91, 87, 66, 8, 22}, {92, 88, 57, 12, 88}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {97, 93, 56, 71, 53}, {58, 50, 97, 0, 79}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>0 AND v2=94 AND v3<>0) OR (v1>=83 AND v2<69 AND v3<84));",
				Expected: []sql.Row{{"Filter((((test.v1 > 0) AND (test.v2 = 94)) AND (NOT((test.v3 = 0)))) OR (((test.v1 >= 83) AND (test.v2 < 69)) AND (test.v3 < 84)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>0 AND v2=94 AND v3<>0) OR (v1>=83 AND v2<69 AND v3<84));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {52, 47, 94, 56, 21}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<83 AND v4>51) OR (v1<>30));",
				Expected: []sql.Row{{"Filter(((test.v1 < 83) AND (test.v4 > 51)) OR (NOT((test.v1 = 30))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<83 AND v4>51) OR (v1<>30));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<92) OR (v1 BETWEEN 6 AND 39 AND v2=47 AND v3>=63));",
				Expected: []sql.Row{{"Filter((test.v1 < 92) OR (((test.v1 BETWEEN 6 AND 39) AND (test.v2 = 47)) AND (test.v3 >= 63)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<92) OR (v1 BETWEEN 6 AND 39 AND v2=47 AND v3>=63));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=98) OR (v1<=2 AND v2<5));",
				Expected: []sql.Row{{"Filter((test.v1 >= 98) OR ((test.v1 <= 2) AND (test.v2 < 5)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=98) OR (v1<=2 AND v2<5));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>29 AND v4=40 AND v2>=63) OR (v1<70 AND v2<70 AND v3<=20)) OR (v1 BETWEEN 7 AND 61 AND v2>=33 AND v3>78)) OR (v1>=4 AND v2<=22));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 29) AND (test.v4 = 40)) AND (test.v2 >= 63)) OR (((test.v1 < 70) AND (test.v2 < 70)) AND (test.v3 <= 20))) OR (((test.v1 BETWEEN 7 AND 61) AND (test.v2 >= 33)) AND (test.v3 > 78))) OR ((test.v1 >= 4) AND (test.v2 <= 22)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>29 AND v4=40 AND v2>=63) OR (v1<70 AND v2<70 AND v3<=20)) OR (v1 BETWEEN 7 AND 61 AND v2>=33 AND v3>78)) OR (v1>=4 AND v2<=22));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {65, 63, 50, 20, 43}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {17, 9, 7, 74, 92}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {24, 17, 49, 14, 7}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {7, 4, 10, 53, 69}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=12) OR (v1=28));",
				Expected: []sql.Row{{"Filter((test.v1 <= 12) OR (test.v1 = 28))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=12) OR (v1=28));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {20, 12, 0, 33, 62}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=94 AND v2>=13 AND v3<=46 AND v4<>36) AND (v1=84) OR (v1 BETWEEN 52 AND 98 AND v2<71 AND v3<>45));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 94) AND (test.v2 >= 13)) AND (test.v3 <= 46)) AND (NOT((test.v4 = 36)))) AND (test.v1 = 84)) OR (((test.v1 BETWEEN 52 AND 98) AND (test.v2 < 71)) AND (NOT((test.v3 = 45)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=94 AND v2>=13 AND v3<=46 AND v4<>36) AND (v1=84) OR (v1 BETWEEN 52 AND 98 AND v2<71 AND v3<>45));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {76, 71, 48, 89, 99}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>64) OR (v1<>55 AND v2=85 AND v3<=88));",
				Expected: []sql.Row{{"Filter((test.v1 > 64) OR (((NOT((test.v1 = 55))) AND (test.v2 = 85)) AND (test.v3 <= 88)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>64) OR (v1<>55 AND v2=85 AND v3<=88));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 54 AND 87 AND v2<78 AND v3<33) OR (v1<>52)) OR (v1 BETWEEN 3 AND 61 AND v4<=49)) OR (v1>3 AND v2<73 AND v3>59));",
				Expected: []sql.Row{{"Filter((((((test.v1 BETWEEN 54 AND 87) AND (test.v2 < 78)) AND (test.v3 < 33)) OR (NOT((test.v1 = 52)))) OR ((test.v1 BETWEEN 3 AND 61) AND (test.v4 <= 49))) OR (((test.v1 > 3) AND (test.v2 < 73)) AND (test.v3 > 59)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 54 AND 87 AND v2<78 AND v3<33) OR (v1<>52)) OR (v1 BETWEEN 3 AND 61 AND v4<=49)) OR (v1>3 AND v2<73 AND v3>59));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 2 AND 23) OR (v1 BETWEEN 7 AND 14 AND v2<=27 AND v3<=82)) OR (v1>61));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 2 AND 23) OR (((test.v1 BETWEEN 7 AND 14) AND (test.v2 <= 27)) AND (test.v3 <= 82))) OR (test.v1 > 61))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 2 AND 23) OR (v1 BETWEEN 7 AND 14 AND v2<=27 AND v3<=82)) OR (v1>61));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=31 AND v2>44) OR (v1<44 AND v4<>6 AND v2<>10 AND v3<>14)) AND (v1=96 AND v3>25 AND v4<>32);",
				Expected: []sql.Row{{"Filter((((test.v1 = 31) AND (test.v2 > 44)) OR ((((test.v1 < 44) AND (NOT((test.v4 = 6)))) AND (NOT((test.v2 = 10)))) AND (NOT((test.v3 = 14))))) AND (((test.v1 = 96) AND (test.v3 > 25)) AND (NOT((test.v4 = 32)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=31 AND v2>44) OR (v1<44 AND v4<>6 AND v2<>10 AND v3<>14)) AND (v1=96 AND v3>25 AND v4<>32);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=85 AND v2<12) AND (v1>=25);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 85) AND (test.v2 < 12)) AND (test.v1 >= 25))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=85 AND v2<12) AND (v1>=25);",
				Expected: []sql.Row{{88, 85, 2, 3, 88}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=0) OR (v1=31)) OR (v1<>73 AND v4>9 AND v2 BETWEEN 27 AND 69 AND v3=14));",
				Expected: []sql.Row{{"Filter(((test.v1 = 0) OR (test.v1 = 31)) OR ((((NOT((test.v1 = 73))) AND (test.v4 > 9)) AND (test.v2 BETWEEN 27 AND 69)) AND (test.v3 = 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=0) OR (v1=31)) OR (v1<>73 AND v4>9 AND v2 BETWEEN 27 AND 69 AND v3=14));",
				Expected: []sql.Row{{0, 0, 33, 2, 67}, {1, 0, 55, 14, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=42 AND v2=41 AND v3 BETWEEN 29 AND 94 AND v4<71) OR (v1>=71 AND v2 BETWEEN 67 AND 87 AND v3>=9)) OR (v1<2 AND v2<=1 AND v3<36 AND v4>41));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 42) AND (test.v2 = 41)) AND (test.v3 BETWEEN 29 AND 94)) AND (test.v4 < 71)) OR (((test.v1 >= 71) AND (test.v2 BETWEEN 67 AND 87)) AND (test.v3 >= 9))) OR ((((test.v1 < 2) AND (test.v2 <= 1)) AND (test.v3 < 36)) AND (test.v4 > 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=42 AND v2=41 AND v3 BETWEEN 29 AND 94 AND v4<71) OR (v1>=71 AND v2 BETWEEN 67 AND 87 AND v3>=9)) OR (v1<2 AND v2<=1 AND v3<36 AND v4>41));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {81, 76, 74, 97, 18}, {86, 83, 41, 53, 57}, {100, 96, 73, 38, 38}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=3 AND v2<57 AND v3<>74 AND v4>=69) OR (v1<>66 AND v2=16)) OR (v1=44 AND v3=58));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 3) AND (test.v2 < 57)) AND (NOT((test.v3 = 74)))) AND (test.v4 >= 69)) OR ((NOT((test.v1 = 66))) AND (test.v2 = 16))) OR ((test.v1 = 44) AND (test.v3 = 58)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=3 AND v2<57 AND v3<>74 AND v4>=69) OR (v1<>66 AND v2=16)) OR (v1=44 AND v3=58));",
				Expected: []sql.Row{{5, 3, 31, 22, 81}, {34, 32, 16, 97, 29}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=22 AND v2<=41) OR (v1=61 AND v2>21)) OR (v1<>10)) OR (v1 BETWEEN 43 AND 44 AND v2>=35 AND v3<>87));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 22) AND (test.v2 <= 41)) OR ((test.v1 = 61) AND (test.v2 > 21))) OR (NOT((test.v1 = 10)))) OR (((test.v1 BETWEEN 43 AND 44) AND (test.v2 >= 35)) AND (NOT((test.v3 = 87)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=22 AND v2<=41) OR (v1=61 AND v2>21)) OR (v1<>10)) OR (v1 BETWEEN 43 AND 44 AND v2>=35 AND v3<>87));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=13 AND v3>20) OR (v1 BETWEEN 18 AND 26 AND v2>11 AND v3>22)) OR (v1<18 AND v2>=47 AND v3<11)) OR (v1>19));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 13) AND (test.v3 > 20)) OR (((test.v1 BETWEEN 18 AND 26) AND (test.v2 > 11)) AND (test.v3 > 22))) OR (((test.v1 < 18) AND (test.v2 >= 47)) AND (test.v3 < 11))) OR (test.v1 > 19))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=13 AND v3>20) OR (v1 BETWEEN 18 AND 26 AND v2>11 AND v3>22)) OR (v1<18 AND v2>=47 AND v3<11)) OR (v1>19));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 42 AND 54 AND v2>20) OR (v1<>68 AND v3>32));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 42 AND 54) AND (test.v2 > 20)) OR ((NOT((test.v1 = 68))) AND (test.v3 > 32)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 42 AND 54 AND v2>20) OR (v1<>68 AND v3>32));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {9, 5, 17, 52, 13}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 20 AND 93) AND (v1=66 AND v2<>21 AND v3 BETWEEN 43 AND 94);",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 20 AND 93) AND (((test.v1 = 66) AND (NOT((test.v2 = 21)))) AND (test.v3 BETWEEN 43 AND 94)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 20 AND 93) AND (v1=66 AND v2<>21 AND v3 BETWEEN 43 AND 94);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>83 AND v2<>16 AND v3=22) AND (v1=34) AND (v1=79 AND v2<=45 AND v3=49);",
				Expected: []sql.Row{{"Filter(((((test.v1 > 83) AND (NOT((test.v2 = 16)))) AND (test.v3 = 22)) AND (test.v1 = 34)) AND (((test.v1 = 79) AND (test.v2 <= 45)) AND (test.v3 = 49)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>83 AND v2<>16 AND v3=22) AND (v1=34) AND (v1=79 AND v2<=45 AND v3=49);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=44 AND v2<=98) AND (v1>15) OR (v1<=45 AND v2=1 AND v3<>54));",
				Expected: []sql.Row{{"Filter((((test.v1 = 44) AND (test.v2 <= 98)) AND (test.v1 > 15)) OR (((test.v1 <= 45) AND (test.v2 = 1)) AND (NOT((test.v3 = 54)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=44 AND v2<=98) AND (v1>15) OR (v1<=45 AND v2=1 AND v3<>54));",
				Expected: []sql.Row{{47, 41, 1, 85, 9}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<38 AND v2>24) OR (v1<20 AND v3>=3 AND v4 BETWEEN 59 AND 81)) OR (v1<31 AND v4 BETWEEN 2 AND 16 AND v2=6 AND v3<=69));",
				Expected: []sql.Row{{"Filter((((test.v1 < 38) AND (test.v2 > 24)) OR (((test.v1 < 20) AND (test.v3 >= 3)) AND (test.v4 BETWEEN 59 AND 81))) OR ((((test.v1 < 31) AND (test.v4 BETWEEN 2 AND 16)) AND (test.v2 = 6)) AND (test.v3 <= 69)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<38 AND v2>24) OR (v1<20 AND v3>=3 AND v4 BETWEEN 59 AND 81)) OR (v1<31 AND v4 BETWEEN 2 AND 16 AND v2=6 AND v3<=69));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {33, 29, 72, 97, 93}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<43 AND v4<=22) OR (v1<=72 AND v2>=35 AND v3>=96)) OR (v1=63 AND v2=55 AND v3<>46)) OR (v1>=9 AND v2=52 AND v3=86 AND v4<=27)) OR (v1 BETWEEN 37 AND 62));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 43) AND (test.v4 <= 22)) OR (((test.v1 <= 72) AND (test.v2 >= 35)) AND (test.v3 >= 96))) OR (((test.v1 = 63) AND (test.v2 = 55)) AND (NOT((test.v3 = 46))))) OR ((((test.v1 >= 9) AND (test.v2 = 52)) AND (test.v3 = 86)) AND (test.v4 <= 27))) OR (test.v1 BETWEEN 37 AND 62))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<43 AND v4<=22) OR (v1<=72 AND v2>=35 AND v3>=96)) OR (v1=63 AND v2=55 AND v3<>46)) OR (v1>=9 AND v2=52 AND v3=86 AND v4<=27)) OR (v1 BETWEEN 37 AND 62));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=52) OR (v1>=59 AND v2<=30 AND v3=98 AND v4 BETWEEN 43 AND 74));",
				Expected: []sql.Row{{"Filter((test.v1 = 52) OR ((((test.v1 >= 59) AND (test.v2 <= 30)) AND (test.v3 = 98)) AND (test.v4 BETWEEN 43 AND 74)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=52) OR (v1>=59 AND v2<=30 AND v3=98 AND v4 BETWEEN 43 AND 74));",
				Expected: []sql.Row{{60, 52, 72, 44, 2}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=37 AND v3>=74 AND v4=54) OR (v1>=36 AND v3<=42 AND v4<=94)) AND (v1=59 AND v2<=56) OR (v1>=83 AND v2<=11));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 37) AND (test.v3 >= 74)) AND (test.v4 = 54)) OR (((test.v1 >= 36) AND (test.v3 <= 42)) AND (test.v4 <= 94))) AND ((test.v1 = 59) AND (test.v2 <= 56))) OR ((test.v1 >= 83) AND (test.v2 <= 11)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=37 AND v3>=74 AND v4=54) OR (v1>=36 AND v3<=42 AND v4<=94)) AND (v1=59 AND v2<=56) OR (v1>=83 AND v2<=11));",
				Expected: []sql.Row{{88, 85, 2, 3, 88}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>39 AND v3<44 AND v4 BETWEEN 3 AND 31 AND v2>16) OR (v1>72 AND v2=73 AND v3<37 AND v4<=43)) OR (v1=9 AND v2<50));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 39))) AND (test.v3 < 44)) AND (test.v4 BETWEEN 3 AND 31)) AND (test.v2 > 16)) OR ((((test.v1 > 72) AND (test.v2 = 73)) AND (test.v3 < 37)) AND (test.v4 <= 43))) OR ((test.v1 = 9) AND (test.v2 < 50)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>39 AND v3<44 AND v4 BETWEEN 3 AND 31 AND v2>16) OR (v1>72 AND v2=73 AND v3<37 AND v4<=43)) OR (v1=9 AND v2<50));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {24, 17, 49, 14, 7}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<31 AND v2<>14 AND v3 BETWEEN 0 AND 10 AND v4>=95) OR (v1<>91)) OR (v1<>35));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 31) AND (NOT((test.v2 = 14)))) AND (test.v3 BETWEEN 0 AND 10)) AND (test.v4 >= 95)) OR (NOT((test.v1 = 91)))) OR (NOT((test.v1 = 35))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<31 AND v2<>14 AND v3 BETWEEN 0 AND 10 AND v4>=95) OR (v1<>91)) OR (v1<>35));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>13) OR (v1<>3 AND v4<=42 AND v2 BETWEEN 89 AND 94));",
				Expected: []sql.Row{{"Filter((test.v1 > 13) OR (((NOT((test.v1 = 3))) AND (test.v4 <= 42)) AND (test.v2 BETWEEN 89 AND 94)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>13) OR (v1<>3 AND v4<=42 AND v2 BETWEEN 89 AND 94));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<29 AND v2<=19) AND (v1>=26) OR (v1>=87 AND v2<=12 AND v3=36 AND v4<20)) AND (v1<=24 AND v4>85 AND v2 BETWEEN 1 AND 64) OR (v1>27 AND v2>=8 AND v3<24));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 29) AND (test.v2 <= 19)) AND (test.v1 >= 26)) OR ((((test.v1 >= 87) AND (test.v2 <= 12)) AND (test.v3 = 36)) AND (test.v4 < 20))) AND (((test.v1 <= 24) AND (test.v4 > 85)) AND (test.v2 BETWEEN 1 AND 64))) OR (((test.v1 > 27) AND (test.v2 >= 8)) AND (test.v3 < 24)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<29 AND v2<=19) AND (v1>=26) OR (v1>=87 AND v2<=12 AND v3=36 AND v4<20)) AND (v1<=24 AND v4>85 AND v2 BETWEEN 1 AND 64) OR (v1>27 AND v2>=8 AND v3<24));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {83, 82, 31, 22, 99}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {39, 34, 87, 13, 51}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {37, 33, 86, 12, 22}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {58, 50, 97, 0, 79}, {73, 70, 40, 19, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<77 AND v2 BETWEEN 5 AND 22 AND v3<>91 AND v4<34) OR (v1=68 AND v2=50)) OR (v1<44 AND v2>84 AND v3<37 AND v4>=67));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 77) AND (test.v2 BETWEEN 5 AND 22)) AND (NOT((test.v3 = 91)))) AND (test.v4 < 34)) OR ((test.v1 = 68) AND (test.v2 = 50))) OR ((((test.v1 < 44) AND (test.v2 > 84)) AND (test.v3 < 37)) AND (test.v4 >= 67)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<77 AND v2 BETWEEN 5 AND 22 AND v3<>91 AND v4<34) OR (v1=68 AND v2=50)) OR (v1<44 AND v2>84 AND v3<37 AND v4>=67));",
				Expected: []sql.Row{{40, 34, 89, 27, 90}, {9, 5, 17, 52, 13}, {79, 74, 22, 42, 16}, {42, 36, 7, 40, 16}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<4 AND v2>=71) OR (v1<18 AND v2=57));",
				Expected: []sql.Row{{"Filter(((test.v1 < 4) AND (test.v2 >= 71)) OR ((test.v1 < 18) AND (test.v2 = 57)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<4 AND v2>=71) OR (v1<18 AND v2=57));",
				Expected: []sql.Row{{3, 1, 72, 29, 21}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>61 AND v2 BETWEEN 46 AND 51) OR (v1 BETWEEN 32 AND 75 AND v4<=32)) AND (v1>97) OR (v1<97));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 61))) AND (test.v2 BETWEEN 46 AND 51)) OR ((test.v1 BETWEEN 32 AND 75) AND (test.v4 <= 32))) AND (test.v1 > 97)) OR (test.v1 < 97))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>61 AND v2 BETWEEN 46 AND 51) OR (v1 BETWEEN 32 AND 75 AND v4<=32)) AND (v1>97) OR (v1<97));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 4 AND 71 AND v2<=70) AND (v1<>47 AND v2 BETWEEN 19 AND 65) OR (v1=59 AND v2 BETWEEN 25 AND 58));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 4 AND 71) AND (test.v2 <= 70)) AND ((NOT((test.v1 = 47))) AND (test.v2 BETWEEN 19 AND 65))) OR ((test.v1 = 59) AND (test.v2 BETWEEN 25 AND 58)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 4 AND 71 AND v2<=70) AND (v1<>47 AND v2 BETWEEN 19 AND 65) OR (v1=59 AND v2 BETWEEN 25 AND 58));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {38, 34, 55, 37, 34}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<70 AND v2<=90) OR (v1<5 AND v2<>13 AND v3 BETWEEN 20 AND 96 AND v4>92)) OR (v1<>76)) OR (v1 BETWEEN 12 AND 88 AND v2 BETWEEN 53 AND 67 AND v3>=39));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 70) AND (test.v2 <= 90)) OR ((((test.v1 < 5) AND (NOT((test.v2 = 13)))) AND (test.v3 BETWEEN 20 AND 96)) AND (test.v4 > 92))) OR (NOT((test.v1 = 76)))) OR (((test.v1 BETWEEN 12 AND 88) AND (test.v2 BETWEEN 53 AND 67)) AND (test.v3 >= 39)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<70 AND v2<=90) OR (v1<5 AND v2<>13 AND v3 BETWEEN 20 AND 96 AND v4>92)) OR (v1<>76)) OR (v1 BETWEEN 12 AND 88 AND v2 BETWEEN 53 AND 67 AND v3>=39));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 8 AND 38 AND v2<=31 AND v3 BETWEEN 30 AND 46 AND v4>=28) OR (v1<=22 AND v4<>40 AND v2>76 AND v3 BETWEEN 38 AND 42)) OR (v1<=52 AND v2<93 AND v3>=83)) OR (v1>=33 AND v3>13 AND v4>34));",
				Expected: []sql.Row{{"Filter(((((((test.v1 BETWEEN 8 AND 38) AND (test.v2 <= 31)) AND (test.v3 BETWEEN 30 AND 46)) AND (test.v4 >= 28)) OR ((((test.v1 <= 22) AND (NOT((test.v4 = 40)))) AND (test.v2 > 76)) AND (test.v3 BETWEEN 38 AND 42))) OR (((test.v1 <= 52) AND (test.v2 < 93)) AND (test.v3 >= 83))) OR (((test.v1 >= 33) AND (test.v3 > 13)) AND (test.v4 > 34)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 8 AND 38 AND v2<=31 AND v3 BETWEEN 30 AND 46 AND v4>=28) OR (v1<=22 AND v4<>40 AND v2>76 AND v3 BETWEEN 38 AND 42)) OR (v1<=52 AND v2<93 AND v3>=83)) OR (v1>=33 AND v3>13 AND v4>34));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {67, 64, 26, 77, 97}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {89, 86, 7, 57, 96}, {46, 39, 45, 75, 55}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 13 AND 40 AND v2>=0) OR (v1<>3 AND v2>47 AND v3<44 AND v4>49)) OR (v1=23));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 13 AND 40) AND (test.v2 >= 0)) OR ((((NOT((test.v1 = 3))) AND (test.v2 > 47)) AND (test.v3 < 44)) AND (test.v4 > 49))) OR (test.v1 = 23))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 13 AND 40 AND v2>=0) OR (v1<>3 AND v2>47 AND v3<44 AND v4>49)) OR (v1=23));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {40, 34, 89, 27, 90}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {92, 88, 57, 12, 88}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {39, 34, 87, 13, 51}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {58, 50, 97, 0, 79}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>35 AND v2<>26) OR (v1<=30 AND v2 BETWEEN 6 AND 61 AND v3<=95 AND v4>5)) AND (v1<>97) OR (v1>31));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 35) AND (NOT((test.v2 = 26)))) OR ((((test.v1 <= 30) AND (test.v2 BETWEEN 6 AND 61)) AND (test.v3 <= 95)) AND (test.v4 > 5))) AND (NOT((test.v1 = 97)))) OR (test.v1 > 31))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>35 AND v2<>26) OR (v1<=30 AND v2 BETWEEN 6 AND 61 AND v3<=95 AND v4>5)) AND (v1<>97) OR (v1>31));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=43 AND v2>=64) OR (v1>6 AND v3=92 AND v4>=15)) OR (v1<=55 AND v3=6 AND v4<=77 AND v2<=3)) OR (v1=96 AND v3<=80 AND v4<=13));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 43) AND (test.v2 >= 64)) OR (((test.v1 > 6) AND (test.v3 = 92)) AND (test.v4 >= 15))) OR ((((test.v1 <= 55) AND (test.v3 = 6)) AND (test.v4 <= 77)) AND (test.v2 <= 3))) OR (((test.v1 = 96) AND (test.v3 <= 80)) AND (test.v4 <= 13)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=43 AND v2>=64) OR (v1>6 AND v3=92 AND v4>=15)) OR (v1<=55 AND v3=6 AND v4<=77 AND v2<=3)) OR (v1=96 AND v3<=80 AND v4<=13));",
				Expected: []sql.Row{{50, 43, 66, 85, 66}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>8 AND v3 BETWEEN 14 AND 75 AND v4=28) AND (v1>=95 AND v2<>72 AND v3=22) OR (v1=5));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 8) AND (test.v3 BETWEEN 14 AND 75)) AND (test.v4 = 28)) AND (((test.v1 >= 95) AND (NOT((test.v2 = 72)))) AND (test.v3 = 22))) OR (test.v1 = 5))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>8 AND v3 BETWEEN 14 AND 75 AND v4=28) AND (v1>=95 AND v2<>72 AND v3=22) OR (v1=5));",
				Expected: []sql.Row{{9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=95 AND v2<1 AND v3 BETWEEN 49 AND 61 AND v4=51) OR (v1>29 AND v2>=9 AND v3>=63 AND v4<=88));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 95) AND (test.v2 < 1)) AND (test.v3 BETWEEN 49 AND 61)) AND (test.v4 = 51)) OR ((((test.v1 > 29) AND (test.v2 >= 9)) AND (test.v3 >= 63)) AND (test.v4 <= 88)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=95 AND v2<1 AND v3 BETWEEN 49 AND 61 AND v4=51) OR (v1>29 AND v2>=9 AND v3>=63 AND v4<=88));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {48, 41, 21, 82, 54}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {82, 82, 29, 66, 71}, {55, 50, 36, 73, 58}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>30 AND v2 BETWEEN 20 AND 64) AND (v1<=29) AND (v1>=25 AND v2<>0);",
				Expected: []sql.Row{{"Filter((((test.v1 > 30) AND (test.v2 BETWEEN 20 AND 64)) AND (test.v1 <= 29)) AND ((test.v1 >= 25) AND (NOT((test.v2 = 0)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>30 AND v2 BETWEEN 20 AND 64) AND (v1<=29) AND (v1>=25 AND v2<>0);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=89 AND v2<=1 AND v3<=7 AND v4>=4) AND (v1<=87) OR (v1 BETWEEN 10 AND 46 AND v2 BETWEEN 18 AND 76));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 89) AND (test.v2 <= 1)) AND (test.v3 <= 7)) AND (test.v4 >= 4)) AND (test.v1 <= 87)) OR ((test.v1 BETWEEN 10 AND 46) AND (test.v2 BETWEEN 18 AND 76)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=89 AND v2<=1 AND v3<=7 AND v4>=4) AND (v1<=87) OR (v1 BETWEEN 10 AND 46 AND v2 BETWEEN 18 AND 76));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {38, 34, 55, 37, 34}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=44 AND v2>=45 AND v3>=34 AND v4>1) OR (v1=33));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 44) AND (test.v2 >= 45)) AND (test.v3 >= 34)) AND (test.v4 > 1)) OR (test.v1 = 33))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=44 AND v2>=45 AND v3>=34 AND v4>1) OR (v1=33));",
				Expected: []sql.Row{{35, 33, 29, 69, 6}, {36, 33, 53, 56, 88}, {37, 33, 86, 12, 22}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>12 AND v2<=6) OR (v1>99 AND v2<>51 AND v3=38)) OR (v1>60)) OR (v1 BETWEEN 69 AND 77 AND v2>=49 AND v3>=43));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 12))) AND (test.v2 <= 6)) OR (((test.v1 > 99) AND (NOT((test.v2 = 51)))) AND (test.v3 = 38))) OR (test.v1 > 60)) OR (((test.v1 BETWEEN 69 AND 77) AND (test.v2 >= 49)) AND (test.v3 >= 43)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>12 AND v2<=6) OR (v1>99 AND v2<>51 AND v3=38)) OR (v1>60)) OR (v1 BETWEEN 69 AND 77 AND v2>=49 AND v3>=43));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {47, 41, 1, 85, 9}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 49 AND 53 AND v4 BETWEEN 22 AND 96) OR (v1 BETWEEN 7 AND 79)) AND (v1<=45 AND v2<=11) OR (v1 BETWEEN 16 AND 65 AND v2<53 AND v3<>15 AND v4>22));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 49 AND 53) AND (test.v4 BETWEEN 22 AND 96)) OR (test.v1 BETWEEN 7 AND 79)) AND ((test.v1 <= 45) AND (test.v2 <= 11))) OR ((((test.v1 BETWEEN 16 AND 65) AND (test.v2 < 53)) AND (NOT((test.v3 = 15)))) AND (test.v4 > 22)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 49 AND 53 AND v4 BETWEEN 22 AND 96) OR (v1 BETWEEN 7 AND 79)) AND (v1<=45 AND v2<=11) OR (v1 BETWEEN 16 AND 65 AND v2<53 AND v3<>15 AND v4>22));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {67, 64, 26, 77, 97}, {17, 9, 7, 74, 92}, {31, 24, 26, 69, 25}, {55, 50, 36, 73, 58}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {51, 45, 9, 76, 9}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<11) OR (v1<=38 AND v2>=93 AND v3<=34 AND v4>7));",
				Expected: []sql.Row{{"Filter((test.v1 < 11) OR ((((test.v1 <= 38) AND (test.v2 >= 93)) AND (test.v3 <= 34)) AND (test.v4 > 7)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<11) OR (v1<=38 AND v2>=93 AND v3<=34 AND v4>7));",
				Expected: []sql.Row{{9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=97 AND v3<>2) OR (v1=49 AND v2 BETWEEN 29 AND 30 AND v3<>97));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 97) AND (NOT((test.v3 = 2)))) OR (((test.v1 = 49) AND (test.v2 BETWEEN 29 AND 30)) AND (NOT((test.v3 = 97)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=97 AND v3<>2) OR (v1=49 AND v2 BETWEEN 29 AND 30 AND v3<>97));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=64) OR (v1>21 AND v2 BETWEEN 0 AND 58)) OR (v1<15 AND v4 BETWEEN 63 AND 76 AND v2>84));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 64) OR ((test.v1 > 21) AND (test.v2 BETWEEN 0 AND 58))) OR (((test.v1 < 15) AND (test.v4 BETWEEN 63 AND 76)) AND (test.v2 > 84)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=64) OR (v1>21 AND v2 BETWEEN 0 AND 58)) OR (v1<15 AND v4 BETWEEN 63 AND 76 AND v2>84));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 24 AND 98 AND v2>0 AND v3>=87) OR (v1 BETWEEN 2 AND 3 AND v2 BETWEEN 15 AND 78));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 24 AND 98) AND (test.v2 > 0)) AND (test.v3 >= 87)) OR ((test.v1 BETWEEN 2 AND 3) AND (test.v2 BETWEEN 15 AND 78)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 24 AND 98 AND v2>0 AND v3>=87) OR (v1 BETWEEN 2 AND 3 AND v2 BETWEEN 15 AND 78));",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {5, 3, 31, 22, 81}, {34, 32, 16, 97, 29}, {64, 57, 25, 97, 65}, {33, 29, 72, 97, 93}, {71, 67, 39, 87, 15}, {32, 24, 45, 96, 0}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>37) OR (v1<=94 AND v2 BETWEEN 53 AND 65 AND v3>=9)) OR (v1<10 AND v3<>26 AND v4<91)) OR (v1<>21 AND v2<>24 AND v3<46));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 37))) OR (((test.v1 <= 94) AND (test.v2 BETWEEN 53 AND 65)) AND (test.v3 >= 9))) OR (((test.v1 < 10) AND (NOT((test.v3 = 26)))) AND (test.v4 < 91))) OR (((NOT((test.v1 = 21))) AND (NOT((test.v2 = 24)))) AND (test.v3 < 46)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>37) OR (v1<=94 AND v2 BETWEEN 53 AND 65 AND v3>=9)) OR (v1<10 AND v3<>26 AND v4<91)) OR (v1<>21 AND v2<>24 AND v3<46));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>21 AND v2>27 AND v3>=97 AND v4 BETWEEN 25 AND 67) OR (v1>=66 AND v2<=56)) OR (v1=37));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 21))) AND (test.v2 > 27)) AND (test.v3 >= 97)) AND (test.v4 BETWEEN 25 AND 67)) OR ((test.v1 >= 66) AND (test.v2 <= 56))) OR (test.v1 = 37))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>21 AND v2>27 AND v3>=97 AND v4 BETWEEN 25 AND 67) OR (v1>=66 AND v2<=56)) OR (v1=37));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {76, 71, 48, 89, 99}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=43 AND v2<48 AND v3<16 AND v4<=75) OR (v1<71));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 43) AND (test.v2 < 48)) AND (test.v3 < 16)) AND (test.v4 <= 75)) OR (test.v1 < 71))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=43 AND v2<48 AND v3<16 AND v4<=75) OR (v1<71));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>91 AND v2=91 AND v3>=15) OR (v1 BETWEEN 16 AND 30)) OR (v1<>27 AND v4=62));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 91))) AND (test.v2 = 91)) AND (test.v3 >= 15)) OR (test.v1 BETWEEN 16 AND 30)) OR ((NOT((test.v1 = 27))) AND (test.v4 = 62)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>91 AND v2=91 AND v3>=15) OR (v1 BETWEEN 16 AND 30)) OR (v1<>27 AND v4=62));",
				Expected: []sql.Row{{20, 12, 0, 33, 62}, {28, 22, 21, 28, 78}, {78, 73, 91, 56, 0}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {33, 29, 72, 97, 93}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=54 AND v3>26 AND v4>30 AND v2 BETWEEN 3 AND 8) OR (v1>8 AND v2<=43 AND v3<>97));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 54) AND (test.v3 > 26)) AND (test.v4 > 30)) AND (test.v2 BETWEEN 3 AND 8)) OR (((test.v1 > 8) AND (test.v2 <= 43)) AND (NOT((test.v3 = 97)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=54 AND v3>26 AND v4>30 AND v2 BETWEEN 3 AND 8) OR (v1>8 AND v2<=43 AND v3<>97));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {55, 50, 36, 73, 58}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=38 AND v2<>11 AND v3>=26) OR (v1 BETWEEN 37 AND 90 AND v4<85 AND v2<0)) OR (v1<>23));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 38) AND (NOT((test.v2 = 11)))) AND (test.v3 >= 26)) OR (((test.v1 BETWEEN 37 AND 90) AND (test.v4 < 85)) AND (test.v2 < 0))) OR (NOT((test.v1 = 23))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=38 AND v2<>11 AND v3>=26) OR (v1 BETWEEN 37 AND 90 AND v4<85 AND v2<0)) OR (v1<>23));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<20 AND v2<>84 AND v3<25 AND v4>=93) OR (v1<13));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 20) AND (NOT((test.v2 = 84)))) AND (test.v3 < 25)) AND (test.v4 >= 93)) OR (test.v1 < 13))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<20 AND v2<>84 AND v3<25 AND v4>=93) OR (v1<13));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {20, 12, 0, 33, 62}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=81 AND v2 BETWEEN 55 AND 77 AND v3=64) OR (v1=20 AND v2=21));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 81) AND (test.v2 BETWEEN 55 AND 77)) AND (test.v3 = 64)) OR ((test.v1 = 20) AND (test.v2 = 21)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=81 AND v2 BETWEEN 55 AND 77 AND v3=64) OR (v1=20 AND v2=21));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>30 AND v2 BETWEEN 58 AND 72 AND v3<=35) OR (v1 BETWEEN 28 AND 28 AND v2>=76)) OR (v1=74 AND v2<26));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 30) AND (test.v2 BETWEEN 58 AND 72)) AND (test.v3 <= 35)) OR ((test.v1 BETWEEN 28 AND 28) AND (test.v2 >= 76))) OR ((test.v1 = 74) AND (test.v2 < 26)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>30 AND v2 BETWEEN 58 AND 72 AND v3<=35) OR (v1 BETWEEN 28 AND 28 AND v2>=76)) OR (v1=74 AND v2<26));",
				Expected: []sql.Row{{91, 87, 66, 8, 22}, {79, 74, 22, 42, 16}, {84, 82, 70, 5, 47}, {45, 38, 71, 22, 37}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>5 AND v2>8) OR (v1>78 AND v2<=39 AND v3>=41 AND v4<=35)) AND (v1<=11 AND v2<35 AND v3<=10 AND v4<76) OR (v1>=22)) OR (v1=1 AND v4<>29 AND v2 BETWEEN 64 AND 81 AND v3>46));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 5) AND (test.v2 > 8)) OR ((((test.v1 > 78) AND (test.v2 <= 39)) AND (test.v3 >= 41)) AND (test.v4 <= 35))) AND ((((test.v1 <= 11) AND (test.v2 < 35)) AND (test.v3 <= 10)) AND (test.v4 < 76))) OR (test.v1 >= 22)) OR ((((test.v1 = 1) AND (NOT((test.v4 = 29)))) AND (test.v2 BETWEEN 64 AND 81)) AND (test.v3 > 46)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>5 AND v2>8) OR (v1>78 AND v2<=39 AND v3>=41 AND v4<=35)) AND (v1<=11 AND v2<35 AND v3<=10 AND v4<76) OR (v1>=22)) OR (v1=1 AND v4<>29 AND v2 BETWEEN 64 AND 81 AND v3>46));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=49) OR (v1<43 AND v2>=34));",
				Expected: []sql.Row{{"Filter((test.v1 = 49) OR ((test.v1 < 43) AND (test.v2 >= 34)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=49) OR (v1<43 AND v2>=34));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=72) OR (v1<>17)) OR (v1=47 AND v2<>1 AND v3 BETWEEN 75 AND 78 AND v4 BETWEEN 10 AND 44)) OR (v1>=64 AND v2>=74 AND v3=10 AND v4 BETWEEN 11 AND 93));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 72) OR (NOT((test.v1 = 17)))) OR ((((test.v1 = 47) AND (NOT((test.v2 = 1)))) AND (test.v3 BETWEEN 75 AND 78)) AND (test.v4 BETWEEN 10 AND 44))) OR ((((test.v1 >= 64) AND (test.v2 >= 74)) AND (test.v3 = 10)) AND (test.v4 BETWEEN 11 AND 93)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=72) OR (v1<>17)) OR (v1=47 AND v2<>1 AND v3 BETWEEN 75 AND 78 AND v4 BETWEEN 10 AND 44)) OR (v1>=64 AND v2>=74 AND v3=10 AND v4 BETWEEN 11 AND 93));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<2 AND v2<>94) OR (v1<>76 AND v2=27 AND v3<=31 AND v4<38));",
				Expected: []sql.Row{{"Filter(((test.v1 < 2) AND (NOT((test.v2 = 94)))) OR ((((NOT((test.v1 = 76))) AND (test.v2 = 27)) AND (test.v3 <= 31)) AND (test.v4 < 38)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<2 AND v2<>94) OR (v1<>76 AND v2=27 AND v3<=31 AND v4<38));",
				Expected: []sql.Row{{0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>11 AND v2>47 AND v3>=67 AND v4=29) OR (v1>=59 AND v3 BETWEEN 4 AND 29 AND v4>=65 AND v2<>96)) OR (v1<=62)) OR (v1<61 AND v2<>28 AND v3<>8 AND v4<>30));",
				Expected: []sql.Row{{"Filter(((((((NOT((test.v1 = 11))) AND (test.v2 > 47)) AND (test.v3 >= 67)) AND (test.v4 = 29)) OR ((((test.v1 >= 59) AND (test.v3 BETWEEN 4 AND 29)) AND (test.v4 >= 65)) AND (NOT((test.v2 = 96))))) OR (test.v1 <= 62)) OR ((((test.v1 < 61) AND (NOT((test.v2 = 28)))) AND (NOT((test.v3 = 8)))) AND (NOT((test.v4 = 30)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>11 AND v2>47 AND v3>=67 AND v4=29) OR (v1>=59 AND v3 BETWEEN 4 AND 29 AND v4>=65 AND v2<>96)) OR (v1<=62)) OR (v1<61 AND v2<>28 AND v3<>8 AND v4<>30));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {83, 82, 31, 22, 99}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 36 AND 72) OR (v1<>48 AND v4>91 AND v2<5 AND v3>=38)) OR (v1<>17 AND v3=50));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 36 AND 72) OR ((((NOT((test.v1 = 48))) AND (test.v4 > 91)) AND (test.v2 < 5)) AND (test.v3 >= 38))) OR ((NOT((test.v1 = 17))) AND (test.v3 = 50)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 36 AND 72) OR (v1<>48 AND v4>91 AND v2<5 AND v3>=38)) OR (v1<>17 AND v3=50));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<86) OR (v1<=5 AND v2<25 AND v3<>24)) OR (v1<32 AND v3 BETWEEN 51 AND 54 AND v4<=70));",
				Expected: []sql.Row{{"Filter(((test.v1 < 86) OR (((test.v1 <= 5) AND (test.v2 < 25)) AND (NOT((test.v3 = 24))))) OR (((test.v1 < 32) AND (test.v3 BETWEEN 51 AND 54)) AND (test.v4 <= 70)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<86) OR (v1<=5 AND v2<25 AND v3<>24)) OR (v1<32 AND v3 BETWEEN 51 AND 54 AND v4<=70));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=6) OR (v1 BETWEEN 24 AND 89)) OR (v1<87 AND v2=35 AND v3=19)) AND (v1>94 AND v2=33 AND v3>28) OR (v1 BETWEEN 36 AND 40));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 6) OR (test.v1 BETWEEN 24 AND 89)) OR (((test.v1 < 87) AND (test.v2 = 35)) AND (test.v3 = 19))) AND (((test.v1 > 94) AND (test.v2 = 33)) AND (test.v3 > 28))) OR (test.v1 BETWEEN 36 AND 40))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=6) OR (v1 BETWEEN 24 AND 89)) OR (v1<87 AND v2=35 AND v3=19)) AND (v1>94 AND v2=33 AND v3>28) OR (v1 BETWEEN 36 AND 40));",
				Expected: []sql.Row{{43, 37, 35, 6, 44}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {45, 38, 71, 22, 37}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=24 AND v2=61 AND v3<49 AND v4<82) OR (v1<4 AND v2>51 AND v3=9));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 24) AND (test.v2 = 61)) AND (test.v3 < 49)) AND (test.v4 < 82)) OR (((test.v1 < 4) AND (test.v2 > 51)) AND (test.v3 = 9)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=24 AND v2=61 AND v3<49 AND v4<82) OR (v1<4 AND v2>51 AND v3=9));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 0 AND 87 AND v2>=44 AND v3<>68 AND v4=50) OR (v1<1 AND v4<66 AND v2<11 AND v3<>44));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 0 AND 87) AND (test.v2 >= 44)) AND (NOT((test.v3 = 68)))) AND (test.v4 = 50)) OR ((((test.v1 < 1) AND (test.v4 < 66)) AND (test.v2 < 11)) AND (NOT((test.v3 = 44)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 0 AND 87 AND v2>=44 AND v3<>68 AND v4=50) OR (v1<1 AND v4<66 AND v2<11 AND v3<>44));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<17 AND v2<54) AND (v1>=70 AND v2 BETWEEN 53 AND 53 AND v3>10 AND v4=17);",
				Expected: []sql.Row{{"Filter(((test.v1 < 17) AND (test.v2 < 54)) AND ((((test.v1 >= 70) AND (test.v2 BETWEEN 53 AND 53)) AND (test.v3 > 10)) AND (test.v4 = 17)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<17 AND v2<54) AND (v1>=70 AND v2 BETWEEN 53 AND 53 AND v3>10 AND v4=17);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=21 AND v2>25 AND v3>=7) OR (v1 BETWEEN 23 AND 88 AND v2<=26 AND v3>=87 AND v4 BETWEEN 42 AND 95)) OR (v1<4 AND v2>=66 AND v3<=24 AND v4=10)) OR (v1>69));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 21) AND (test.v2 > 25)) AND (test.v3 >= 7)) OR ((((test.v1 BETWEEN 23 AND 88) AND (test.v2 <= 26)) AND (test.v3 >= 87)) AND (test.v4 BETWEEN 42 AND 95))) OR ((((test.v1 < 4) AND (test.v2 >= 66)) AND (test.v3 <= 24)) AND (test.v4 = 10))) OR (test.v1 > 69))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=21 AND v2>25 AND v3>=7) OR (v1 BETWEEN 23 AND 88 AND v2<=26 AND v3>=87 AND v4 BETWEEN 42 AND 95)) OR (v1<4 AND v2>=66 AND v3<=24 AND v4=10)) OR (v1>69));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {73, 70, 40, 19, 5}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 0 AND 39) OR (v1<18 AND v4>=90));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 0 AND 39) OR ((test.v1 < 18) AND (test.v4 >= 90)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 0 AND 39) OR (v1<18 AND v4>=90));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<99 AND v2>1 AND v3<=56) OR (v1>36 AND v2=53 AND v3>17)) OR (v1<>71)) AND (v1 BETWEEN 2 AND 86 AND v2<>78 AND v3<>29 AND v4<>63);",
				Expected: []sql.Row{{"Filter((((((test.v1 < 99) AND (test.v2 > 1)) AND (test.v3 <= 56)) OR (((test.v1 > 36) AND (test.v2 = 53)) AND (test.v3 > 17))) OR (NOT((test.v1 = 71)))) AND ((((test.v1 BETWEEN 2 AND 86) AND (NOT((test.v2 = 78)))) AND (NOT((test.v3 = 29)))) AND (NOT((test.v4 = 63)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<99 AND v2>1 AND v3<=56) OR (v1>36 AND v2=53 AND v3>17)) OR (v1<>71)) AND (v1 BETWEEN 2 AND 86 AND v2<>78 AND v3<>29 AND v4<>63);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=5) OR (v1=53));",
				Expected: []sql.Row{{"Filter((test.v1 <= 5) OR (test.v1 = 53))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=5) OR (v1=53));",
				Expected: []sql.Row{{62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {8, 4, 27, 77, 5}, {5, 3, 31, 22, 81}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {7, 4, 10, 53, 69}, {61, 53, 6, 53, 89}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>12 AND v2 BETWEEN 27 AND 46 AND v3 BETWEEN 19 AND 27 AND v4>=50) OR (v1 BETWEEN 17 AND 88)) OR (v1<=36 AND v2<=37 AND v3<64)) OR (v1<>82 AND v2>84 AND v3>=90)) AND (v1>34 AND v3>4);",
				Expected: []sql.Row{{"Filter((((((((NOT((test.v1 = 12))) AND (test.v2 BETWEEN 27 AND 46)) AND (test.v3 BETWEEN 19 AND 27)) AND (test.v4 >= 50)) OR (test.v1 BETWEEN 17 AND 88)) OR (((test.v1 <= 36) AND (test.v2 <= 37)) AND (test.v3 < 64))) OR (((NOT((test.v1 = 82))) AND (test.v2 > 84)) AND (test.v3 >= 90))) AND ((test.v1 > 34) AND (test.v3 > 4)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>12 AND v2 BETWEEN 27 AND 46 AND v3 BETWEEN 19 AND 27 AND v4>=50) OR (v1 BETWEEN 17 AND 88)) OR (v1<=36 AND v2<=37 AND v3<64)) OR (v1<>82 AND v2>84 AND v3>=90)) AND (v1>34 AND v3>4);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {91, 87, 66, 8, 22}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=82) OR (v1<=95 AND v2<>23 AND v3<18 AND v4<>50));",
				Expected: []sql.Row{{"Filter((test.v1 >= 82) OR ((((test.v1 <= 95) AND (NOT((test.v2 = 23)))) AND (test.v3 < 18)) AND (NOT((test.v4 = 50)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=82) OR (v1<=95 AND v2<>23 AND v3<18 AND v4<>50));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {24, 17, 49, 14, 7}, {39, 34, 87, 13, 51}, {70, 66, 97, 6, 39}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {30, 23, 43, 13, 11}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {58, 50, 97, 0, 79}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=51) AND (v1=55 AND v2>=59 AND v3>=49) OR (v1>5 AND v2<34));",
				Expected: []sql.Row{{"Filter(((test.v1 = 51) AND (((test.v1 = 55) AND (test.v2 >= 59)) AND (test.v3 >= 49))) OR ((test.v1 > 5) AND (test.v2 < 34)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=51) AND (v1=55 AND v2>=59 AND v3>=49) OR (v1>5 AND v2<34));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>4 AND v2<=21 AND v3>=15) OR (v1=93 AND v2>=1 AND v3<>63)) OR (v1 BETWEEN 24 AND 86 AND v3<=5));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 4) AND (test.v2 <= 21)) AND (test.v3 >= 15)) OR (((test.v1 = 93) AND (test.v2 >= 1)) AND (NOT((test.v3 = 63))))) OR ((test.v1 BETWEEN 24 AND 86) AND (test.v3 <= 5)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>4 AND v2<=21 AND v3>=15) OR (v1=93 AND v2>=1 AND v3<>63)) OR (v1 BETWEEN 24 AND 86 AND v3<=5));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {28, 22, 21, 28, 78}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {17, 9, 7, 74, 92}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {58, 50, 97, 0, 79}, {18, 9, 19, 38, 35}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<63 AND v2<>32 AND v3>=14) OR (v1=18 AND v3 BETWEEN 4 AND 42 AND v4>10)) OR (v1<23 AND v2>=21));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 63) AND (NOT((test.v2 = 32)))) AND (test.v3 >= 14)) OR (((test.v1 = 18) AND (test.v3 BETWEEN 4 AND 42)) AND (test.v4 > 10))) OR ((test.v1 < 23) AND (test.v2 >= 21)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<63 AND v2<>32 AND v3>=14) OR (v1=18 AND v3 BETWEEN 4 AND 42 AND v4>10)) OR (v1<23 AND v2>=21));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>34 AND v3 BETWEEN 27 AND 48 AND v4<=11 AND v2>42) AND (v1<>47 AND v2<48 AND v3<=47 AND v4<>12) OR (v1<=36 AND v2<>17));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 34))) AND (test.v3 BETWEEN 27 AND 48)) AND (test.v4 <= 11)) AND (test.v2 > 42)) AND ((((NOT((test.v1 = 47))) AND (test.v2 < 48)) AND (test.v3 <= 47)) AND (NOT((test.v4 = 12))))) OR ((test.v1 <= 36) AND (NOT((test.v2 = 17)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>34 AND v3 BETWEEN 27 AND 48 AND v4<=11 AND v2>42) AND (v1<>47 AND v2<48 AND v3<=47 AND v4<>12) OR (v1<=36 AND v2<>17));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=34 AND v2<=80 AND v3<=27) AND (v1 BETWEEN 0 AND 33) OR (v1<=56 AND v2=50 AND v3 BETWEEN 0 AND 5 AND v4<>31));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 34) AND (test.v2 <= 80)) AND (test.v3 <= 27)) AND (test.v1 BETWEEN 0 AND 33)) OR ((((test.v1 <= 56) AND (test.v2 = 50)) AND (test.v3 BETWEEN 0 AND 5)) AND (NOT((test.v4 = 31)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=34 AND v2<=80 AND v3<=27) AND (v1 BETWEEN 0 AND 33) OR (v1<=56 AND v2=50 AND v3 BETWEEN 0 AND 5 AND v4<>31));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=93 AND v2<>5) OR (v1>=81 AND v4=9 AND v2>33 AND v3<99));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 93) AND (NOT((test.v2 = 5)))) OR ((((test.v1 >= 81) AND (test.v4 = 9)) AND (test.v2 > 33)) AND (test.v3 < 99)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=93 AND v2<>5) OR (v1>=81 AND v4=9 AND v2>33 AND v3<99));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=37 AND v2=4 AND v3=3) AND (v1=12 AND v2>9 AND v3<89 AND v4<>12) OR (v1=1 AND v2=43 AND v3<=2));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 37) AND (test.v2 = 4)) AND (test.v3 = 3)) AND ((((test.v1 = 12) AND (test.v2 > 9)) AND (test.v3 < 89)) AND (NOT((test.v4 = 12))))) OR (((test.v1 = 1) AND (test.v2 = 43)) AND (test.v3 <= 2)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=37 AND v2=4 AND v3=3) AND (v1=12 AND v2>9 AND v3<89 AND v4<>12) OR (v1=1 AND v2=43 AND v3<=2));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=82) OR (v1<=4 AND v2>=51)) OR (v1=58 AND v4<86));",
				Expected: []sql.Row{{"Filter(((test.v1 = 82) OR ((test.v1 <= 4) AND (test.v2 >= 51))) OR ((test.v1 = 58) AND (test.v4 < 86)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=82) OR (v1<=4 AND v2>=51)) OR (v1=58 AND v4<86));",
				Expected: []sql.Row{{82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {84, 82, 70, 5, 47}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=42 AND v4<85 AND v2<8 AND v3<3) OR (v1>=78 AND v2<>28 AND v3<52)) OR (v1<8 AND v2<>76 AND v3 BETWEEN 36 AND 70)) OR (v1=70));",
				Expected: []sql.Row{{"Filter(((((((test.v1 >= 42) AND (test.v4 < 85)) AND (test.v2 < 8)) AND (test.v3 < 3)) OR (((test.v1 >= 78) AND (NOT((test.v2 = 28)))) AND (test.v3 < 52))) OR (((test.v1 < 8) AND (NOT((test.v2 = 76)))) AND (test.v3 BETWEEN 36 AND 70))) OR (test.v1 = 70))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=42 AND v4<85 AND v2<8 AND v3<3) OR (v1>=78 AND v2<>28 AND v3<52)) OR (v1<8 AND v2<>76 AND v3 BETWEEN 36 AND 70)) OR (v1=70));",
				Expected: []sql.Row{{90, 87, 23, 16, 63}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {93, 89, 1, 27, 50}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {7, 4, 10, 53, 69}, {73, 70, 40, 19, 5}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>69) OR (v1>=43));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 69))) OR (test.v1 >= 43))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>69) OR (v1>=43));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 39 AND 76 AND v4>16 AND v2<>15 AND v3<>35) AND (v1<>50 AND v2>21 AND v3 BETWEEN 27 AND 90 AND v4>18) OR (v1<25 AND v4=58));",
				Expected: []sql.Row{{"Filter((((((test.v1 BETWEEN 39 AND 76) AND (test.v4 > 16)) AND (NOT((test.v2 = 15)))) AND (NOT((test.v3 = 35)))) AND ((((NOT((test.v1 = 50))) AND (test.v2 > 21)) AND (test.v3 BETWEEN 27 AND 90)) AND (test.v4 > 18))) OR ((test.v1 < 25) AND (test.v4 = 58)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 39 AND 76 AND v4>16 AND v2<>15 AND v3<>35) AND (v1<>50 AND v2>21 AND v3 BETWEEN 27 AND 90 AND v4>18) OR (v1<25 AND v4=58));",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {52, 47, 94, 56, 21}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {67, 64, 26, 77, 97}, {59, 51, 97, 39, 36}, {46, 39, 45, 75, 55}, {50, 43, 66, 85, 66}, {63, 55, 31, 29, 92}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=62) OR (v1 BETWEEN 24 AND 36 AND v2>=94 AND v3 BETWEEN 10 AND 55 AND v4>=89));",
				Expected: []sql.Row{{"Filter((test.v1 = 62) OR ((((test.v1 BETWEEN 24 AND 36) AND (test.v2 >= 94)) AND (test.v3 BETWEEN 10 AND 55)) AND (test.v4 >= 89)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=62) OR (v1 BETWEEN 24 AND 36 AND v2>=94 AND v3 BETWEEN 10 AND 55 AND v4>=89));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=31) OR (v1<=95 AND v2<=26 AND v3 BETWEEN 40 AND 72)) OR (v1<51 AND v2=23));",
				Expected: []sql.Row{{"Filter(((test.v1 = 31) OR (((test.v1 <= 95) AND (test.v2 <= 26)) AND (test.v3 BETWEEN 40 AND 72))) OR ((test.v1 < 51) AND (test.v2 = 23)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=31) OR (v1<=95 AND v2<=26 AND v3 BETWEEN 40 AND 72)) OR (v1<51 AND v2=23));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {9, 5, 17, 52, 13}, {31, 24, 26, 69, 25}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {7, 4, 10, 53, 69}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=3) OR (v1>40)) AND (v1>66 AND v2>33);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 3) OR (test.v1 > 40)) AND ((test.v1 > 66) AND (test.v2 > 33)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=3) OR (v1>40)) AND (v1>66 AND v2>33);",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {78, 73, 91, 56, 0}, {91, 87, 66, 8, 22}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=69 AND v2=61 AND v3=87 AND v4 BETWEEN 63 AND 87) OR (v1 BETWEEN 48 AND 62)) OR (v1<>81 AND v2<=67 AND v3<>43));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 69) AND (test.v2 = 61)) AND (test.v3 = 87)) AND (test.v4 BETWEEN 63 AND 87)) OR (test.v1 BETWEEN 48 AND 62)) OR (((NOT((test.v1 = 81))) AND (test.v2 <= 67)) AND (NOT((test.v3 = 43)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=69 AND v2=61 AND v3=87 AND v4 BETWEEN 63 AND 87) OR (v1 BETWEEN 48 AND 62)) OR (v1<>81 AND v2<=67 AND v3<>43));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=19) AND (v1<=20 AND v2>=2) OR (v1 BETWEEN 12 AND 53 AND v4>=1 AND v2<43 AND v3<59));",
				Expected: []sql.Row{{"Filter(((test.v1 = 19) AND ((test.v1 <= 20) AND (test.v2 >= 2))) OR ((((test.v1 BETWEEN 12 AND 53) AND (test.v4 >= 1)) AND (test.v2 < 43)) AND (test.v3 < 59)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=19) AND (v1<=20 AND v2>=2) OR (v1 BETWEEN 12 AND 53 AND v4>=1 AND v2<43 AND v3<59));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {27, 21, 21, 32, 8}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=42 AND v2<=65) AND (v1<=21) OR (v1<=14 AND v2<>1 AND v3<62));",
				Expected: []sql.Row{{"Filter((((test.v1 = 42) AND (test.v2 <= 65)) AND (test.v1 <= 21)) OR (((test.v1 <= 14) AND (NOT((test.v2 = 1)))) AND (test.v3 < 62)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=42 AND v2<=65) AND (v1<=21) OR (v1<=14 AND v2<>1 AND v3<62));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {20, 12, 0, 33, 62}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>5) OR (v1<96 AND v2>=14)) OR (v1<>96)) AND (v1<>51 AND v3>41);",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 5))) OR ((test.v1 < 96) AND (test.v2 >= 14))) OR (NOT((test.v1 = 96)))) AND ((NOT((test.v1 = 51))) AND (test.v3 > 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>5) OR (v1<96 AND v2>=14)) OR (v1<>96)) AND (v1<>51 AND v3>41);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {9, 5, 17, 52, 13}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {86, 83, 41, 53, 57}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>97 AND v3<>77 AND v4=30 AND v2<>45) OR (v1=36 AND v2<77 AND v3>94)) OR (v1=26));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 97) AND (NOT((test.v3 = 77)))) AND (test.v4 = 30)) AND (NOT((test.v2 = 45)))) OR (((test.v1 = 36) AND (test.v2 < 77)) AND (test.v3 > 94))) OR (test.v1 = 26))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>97 AND v3<>77 AND v4=30 AND v2<>45) OR (v1=36 AND v2<77 AND v3>94)) OR (v1=26));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 34 AND 37 AND v3>23 AND v4>31) OR (v1 BETWEEN 43 AND 81 AND v3>=54 AND v4>=72));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 34 AND 37) AND (test.v3 > 23)) AND (test.v4 > 31)) OR (((test.v1 BETWEEN 43 AND 81) AND (test.v3 >= 54)) AND (test.v4 >= 72)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 34 AND 37 AND v3>23 AND v4>31) OR (v1 BETWEEN 43 AND 81 AND v3>=54 AND v4>=72));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {40, 34, 89, 27, 90}, {76, 71, 48, 89, 99}, {68, 64, 41, 74, 85}, {67, 64, 26, 77, 97}, {38, 34, 55, 37, 34}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=17 AND v2<>19) OR (v1>45));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 17) AND (NOT((test.v2 = 19)))) OR (test.v1 > 45))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=17 AND v2<>19) OR (v1>45));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=57) OR (v1>=1 AND v2<=5 AND v3>=10 AND v4<5)) OR (v1>55));",
				Expected: []sql.Row{{"Filter(((test.v1 = 57) OR ((((test.v1 >= 1) AND (test.v2 <= 5)) AND (test.v3 >= 10)) AND (test.v4 < 5))) OR (test.v1 > 55))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=57) OR (v1>=1 AND v2<=5 AND v3>=10 AND v4<5)) OR (v1>55));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=23 AND v2<=48) OR (v1>41 AND v2>=46 AND v3 BETWEEN 11 AND 29)) AND (v1<>11) OR (v1=70 AND v3<54 AND v4<=47 AND v2<>62));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 23) AND (test.v2 <= 48)) OR (((test.v1 > 41) AND (test.v2 >= 46)) AND (test.v3 BETWEEN 11 AND 29))) AND (NOT((test.v1 = 11)))) OR ((((test.v1 = 70) AND (test.v3 < 54)) AND (test.v4 <= 47)) AND (NOT((test.v2 = 62)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=23 AND v2<=48) OR (v1>41 AND v2>=46 AND v3 BETWEEN 11 AND 29)) AND (v1<>11) OR (v1=70 AND v3<54 AND v4<=47 AND v2<>62));",
				Expected: []sql.Row{{65, 63, 50, 20, 43}, {62, 53, 48, 19, 36}, {92, 88, 57, 12, 88}, {74, 70, 56, 21, 22}, {30, 23, 43, 13, 11}, {73, 70, 40, 19, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>73) OR (v1>5 AND v2>=7 AND v3>=43 AND v4<=53)) OR (v1<34 AND v2<95 AND v3 BETWEEN 9 AND 81 AND v4<>8)) AND (v1<=68 AND v4>48 AND v2>11 AND v3 BETWEEN 17 AND 89) OR (v1=41 AND v2 BETWEEN 56 AND 93));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 73) OR ((((test.v1 > 5) AND (test.v2 >= 7)) AND (test.v3 >= 43)) AND (test.v4 <= 53))) OR ((((test.v1 < 34) AND (test.v2 < 95)) AND (test.v3 BETWEEN 9 AND 81)) AND (NOT((test.v4 = 8))))) AND ((((test.v1 <= 68) AND (test.v4 > 48)) AND (test.v2 > 11)) AND (test.v3 BETWEEN 17 AND 89))) OR ((test.v1 = 41) AND (test.v2 BETWEEN 56 AND 93)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>73) OR (v1>5 AND v2>=7 AND v3>=43 AND v4<=53)) OR (v1<34 AND v2<95 AND v3 BETWEEN 9 AND 81 AND v4<>8)) AND (v1<=68 AND v4>48 AND v2>11 AND v3 BETWEEN 17 AND 89) OR (v1=41 AND v2 BETWEEN 56 AND 93));",
				Expected: []sql.Row{{28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {15, 8, 54, 46, 87}, {36, 33, 53, 56, 88}, {5, 3, 31, 22, 81}, {13, 7, 21, 75, 70}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>3 AND v3>=34) OR (v1<>31 AND v2<16 AND v3<8));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 3))) AND (test.v3 >= 34)) OR (((NOT((test.v1 = 31))) AND (test.v2 < 16)) AND (test.v3 < 8)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>3 AND v3>=34) OR (v1<>31 AND v2<16 AND v3<8));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {86, 83, 41, 53, 57}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 88 AND 97) OR (v1>67 AND v4<=27 AND v2<5 AND v3>40)) OR (v1 BETWEEN 5 AND 83 AND v2>=34 AND v3=59));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 88 AND 97) OR ((((test.v1 > 67) AND (test.v4 <= 27)) AND (test.v2 < 5)) AND (test.v3 > 40))) OR (((test.v1 BETWEEN 5 AND 83) AND (test.v2 >= 34)) AND (test.v3 = 59)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 88 AND 97) OR (v1>67 AND v4<=27 AND v2<5 AND v3>40)) OR (v1 BETWEEN 5 AND 83 AND v2>=34 AND v3=59));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {93, 89, 1, 27, 50}, {94, 89, 91, 7, 45}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>96 AND v2<=2 AND v3=17 AND v4<79) OR (v1=67 AND v2=30 AND v3=38 AND v4=53));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 96))) AND (test.v2 <= 2)) AND (test.v3 = 17)) AND (test.v4 < 79)) OR ((((test.v1 = 67) AND (test.v2 = 30)) AND (test.v3 = 38)) AND (test.v4 = 53)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>96 AND v2<=2 AND v3=17 AND v4<79) OR (v1=67 AND v2=30 AND v3=38 AND v4=53));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>45 AND v2>76) OR (v1=30 AND v2=53));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 45))) AND (test.v2 > 76)) OR ((test.v1 = 30) AND (test.v2 = 53)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>45 AND v2>76) OR (v1=30 AND v2=53));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {52, 47, 94, 56, 21}, {72, 69, 81, 70, 37}, {78, 73, 91, 56, 0}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {57, 50, 79, 10, 12}, {37, 33, 86, 12, 22}, {58, 50, 97, 0, 79}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 3 AND 34 AND v2>39) OR (v1>1 AND v2>=92 AND v3=99)) OR (v1>=36 AND v2<>65 AND v3=69));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 3 AND 34) AND (test.v2 > 39)) OR (((test.v1 > 1) AND (test.v2 >= 92)) AND (test.v3 = 99))) OR (((test.v1 >= 36) AND (NOT((test.v2 = 65)))) AND (test.v3 = 69)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 3 AND 34 AND v2>39) OR (v1>1 AND v2>=92 AND v3=99)) OR (v1>=36 AND v2<>65 AND v3=69));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {30, 23, 43, 13, 11}, {33, 29, 72, 97, 93}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=54 AND v2=38 AND v3>=64 AND v4>36) OR (v1<=48)) OR (v1<37 AND v2=13 AND v3<20));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 54) AND (test.v2 = 38)) AND (test.v3 >= 64)) AND (test.v4 > 36)) OR (test.v1 <= 48)) OR (((test.v1 < 37) AND (test.v2 = 13)) AND (test.v3 < 20)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=54 AND v2=38 AND v3>=64 AND v4>36) OR (v1<=48)) OR (v1<37 AND v2=13 AND v3<20));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>70) OR (v1<>2 AND v2>79 AND v3<>6 AND v4<>42));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 70))) OR ((((NOT((test.v1 = 2))) AND (test.v2 > 79)) AND (NOT((test.v3 = 6)))) AND (NOT((test.v4 = 42)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>70) OR (v1<>2 AND v2>79 AND v3<>6 AND v4<>42));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>46 AND v2>93 AND v3>19) AND (v1<51 AND v2=39) OR (v1<61)) AND (v1<>22);",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 46))) AND (test.v2 > 93)) AND (test.v3 > 19)) AND ((test.v1 < 51) AND (test.v2 = 39))) OR (test.v1 < 61)) AND (NOT((test.v1 = 22))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>46 AND v2>93 AND v3>19) AND (v1<51 AND v2=39) OR (v1<61)) AND (v1<>22);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=53 AND v2>0 AND v3=95 AND v4<=2) OR (v1<41 AND v4<10 AND v2 BETWEEN 11 AND 35)) OR (v1=11 AND v2<20 AND v3=51 AND v4<>30));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 53) AND (test.v2 > 0)) AND (test.v3 = 95)) AND (test.v4 <= 2)) OR (((test.v1 < 41) AND (test.v4 < 10)) AND (test.v2 BETWEEN 11 AND 35))) OR ((((test.v1 = 11) AND (test.v2 < 20)) AND (test.v3 = 51)) AND (NOT((test.v4 = 30)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=53 AND v2>0 AND v3=95 AND v4<=2) OR (v1<41 AND v4<10 AND v2 BETWEEN 11 AND 35)) OR (v1=11 AND v2<20 AND v3=51 AND v4<>30));",
				Expected: []sql.Row{{35, 33, 29, 69, 6}, {8, 4, 27, 77, 5}, {27, 21, 21, 32, 8}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=32 AND v2>6 AND v3=55) OR (v1=87 AND v2<=80)) OR (v1=88 AND v2<=87 AND v3>=45));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 32) AND (test.v2 > 6)) AND (test.v3 = 55)) OR ((test.v1 = 87) AND (test.v2 <= 80))) OR (((test.v1 = 88) AND (test.v2 <= 87)) AND (test.v3 >= 45)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=32 AND v2>6 AND v3=55) OR (v1=87 AND v2<=80)) OR (v1=88 AND v2<=87 AND v3>=45));",
				Expected: []sql.Row{{90, 87, 23, 16, 63}, {91, 87, 66, 8, 22}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>8) OR (v1 BETWEEN 16 AND 25 AND v2<>79 AND v3>=55 AND v4<=5));",
				Expected: []sql.Row{{"Filter((test.v1 > 8) OR ((((test.v1 BETWEEN 16 AND 25) AND (NOT((test.v2 = 79)))) AND (test.v3 >= 55)) AND (test.v4 <= 5)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>8) OR (v1 BETWEEN 16 AND 25 AND v2<>79 AND v3>=55 AND v4<=5));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=45 AND v2>55 AND v3<90) OR (v1>26 AND v2>=2 AND v3<>85 AND v4<=74));",
				Expected: []sql.Row{{"Filter((((test.v1 = 45) AND (test.v2 > 55)) AND (test.v3 < 90)) OR ((((test.v1 > 26) AND (test.v2 >= 2)) AND (NOT((test.v3 = 85)))) AND (test.v4 <= 74)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=45 AND v2>55 AND v3<90) OR (v1>26 AND v2>=2 AND v3<>85 AND v4<=74));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=59) OR (v1<>85 AND v4<6 AND v2 BETWEEN 14 AND 82));",
				Expected: []sql.Row{{"Filter((test.v1 = 59) OR (((NOT((test.v1 = 85))) AND (test.v4 < 6)) AND (test.v2 BETWEEN 14 AND 82)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=59) OR (v1<>85 AND v4<6 AND v2 BETWEEN 14 AND 82));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {66, 64, 23, 33, 5}, {8, 4, 27, 77, 5}, {60, 52, 72, 44, 2}, {19, 10, 36, 27, 5}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=94 AND v2>32 AND v3>61) OR (v1>51 AND v4>84 AND v2>=46)) OR (v1=39));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 94) AND (test.v2 > 32)) AND (test.v3 > 61)) OR (((test.v1 > 51) AND (test.v4 > 84)) AND (test.v2 >= 46))) OR (test.v1 = 39))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=94 AND v2>32 AND v3>61) OR (v1>51 AND v4>84 AND v2>=46)) OR (v1=39));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {76, 71, 48, 89, 99}, {92, 88, 57, 12, 88}, {46, 39, 45, 75, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=89) OR (v1<=28 AND v2=13));",
				Expected: []sql.Row{{"Filter((test.v1 >= 89) OR ((test.v1 <= 28) AND (test.v2 = 13)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=89) OR (v1<=28 AND v2=13));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {93, 89, 1, 27, 50}, {94, 89, 91, 7, 45}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=5 AND v2<65 AND v3<64 AND v4=81) OR (v1<=75)) AND (v1=87);",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 5) AND (test.v2 < 65)) AND (test.v3 < 64)) AND (test.v4 = 81)) OR (test.v1 <= 75)) AND (test.v1 = 87))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=5 AND v2<65 AND v3<64 AND v4=81) OR (v1<=75)) AND (v1=87);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=31 AND v4>30 AND v2<>38) OR (v1<>35)) OR (v1<=8 AND v2<43 AND v3<=50 AND v4<=33));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 31) AND (test.v4 > 30)) AND (NOT((test.v2 = 38)))) OR (NOT((test.v1 = 35)))) OR ((((test.v1 <= 8) AND (test.v2 < 43)) AND (test.v3 <= 50)) AND (test.v4 <= 33)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=31 AND v4>30 AND v2<>38) OR (v1<>35)) OR (v1<=8 AND v2<43 AND v3<=50 AND v4<=33));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1>65 AND v2=89 AND v3>12) OR (v1 BETWEEN 37 AND 75 AND v2=42 AND v3<=14)) OR (v1>=87 AND v2=85)) OR (v1<>48 AND v4 BETWEEN 32 AND 33 AND v2>21 AND v3<=25)) OR (v1 BETWEEN 51 AND 88 AND v2<>67));",
				Expected: []sql.Row{{"Filter(((((((test.v1 > 65) AND (test.v2 = 89)) AND (test.v3 > 12)) OR (((test.v1 BETWEEN 37 AND 75) AND (test.v2 = 42)) AND (test.v3 <= 14))) OR ((test.v1 >= 87) AND (test.v2 = 85))) OR ((((NOT((test.v1 = 48))) AND (test.v4 BETWEEN 32 AND 33)) AND (test.v2 > 21)) AND (test.v3 <= 25))) OR ((test.v1 BETWEEN 51 AND 88) AND (NOT((test.v2 = 67)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1>65 AND v2=89 AND v3>12) OR (v1 BETWEEN 37 AND 75 AND v2=42 AND v3<=14)) OR (v1>=87 AND v2=85)) OR (v1<>48 AND v4 BETWEEN 32 AND 33 AND v2>21 AND v3<=25)) OR (v1 BETWEEN 51 AND 88 AND v2<>67));",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {91, 87, 66, 8, 22}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {84, 82, 70, 5, 47}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>82) OR (v1<1 AND v3>=22)) AND (v1=4) OR (v1>27 AND v2 BETWEEN 7 AND 79 AND v3 BETWEEN 9 AND 29 AND v4<85));",
				Expected: []sql.Row{{"Filter((((test.v1 > 82) OR ((test.v1 < 1) AND (test.v3 >= 22))) AND (test.v1 = 4)) OR ((((test.v1 > 27) AND (test.v2 BETWEEN 7 AND 79)) AND (test.v3 BETWEEN 9 AND 29)) AND (test.v4 < 85)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>82) OR (v1<1 AND v3>=22)) AND (v1=4) OR (v1>27 AND v2 BETWEEN 7 AND 79 AND v3 BETWEEN 9 AND 29 AND v4<85));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {45, 38, 71, 22, 37}, {73, 70, 40, 19, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=41 AND v2<13 AND v3 BETWEEN 62 AND 87) AND (v1<=67 AND v2>68 AND v3=56 AND v4>28);",
				Expected: []sql.Row{{"Filter((((test.v1 >= 41) AND (test.v2 < 13)) AND (test.v3 BETWEEN 62 AND 87)) AND ((((test.v1 <= 67) AND (test.v2 > 68)) AND (test.v3 = 56)) AND (test.v4 > 28)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=41 AND v2<13 AND v3 BETWEEN 62 AND 87) AND (v1<=67 AND v2>68 AND v3=56 AND v4>28);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 23 AND 34 AND v2 BETWEEN 4 AND 75 AND v3<91) OR (v1>=31));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 23 AND 34) AND (test.v2 BETWEEN 4 AND 75)) AND (test.v3 < 91)) OR (test.v1 >= 31))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 23 AND 34 AND v2 BETWEEN 4 AND 75 AND v3<91) OR (v1>=31));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<59) OR (v1 BETWEEN 6 AND 86 AND v4<97)) OR (v1<>90 AND v2=43 AND v3=29));",
				Expected: []sql.Row{{"Filter(((test.v1 < 59) OR ((test.v1 BETWEEN 6 AND 86) AND (test.v4 < 97))) OR (((NOT((test.v1 = 90))) AND (test.v2 = 43)) AND (test.v3 = 29)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<59) OR (v1 BETWEEN 6 AND 86 AND v4<97)) OR (v1<>90 AND v2=43 AND v3=29));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=1 AND v2<34) OR (v1<78));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 1) AND (test.v2 < 34)) OR (test.v1 < 78))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=1 AND v2<34) OR (v1<78));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=10 AND v2<>64 AND v3>25 AND v4<29) OR (v1>39));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 10) AND (NOT((test.v2 = 64)))) AND (test.v3 > 25)) AND (test.v4 < 29)) OR (test.v1 > 39))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=10 AND v2<>64 AND v3>25 AND v4<29) OR (v1>39));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>35 AND v2>=14 AND v3<65 AND v4<>9) OR (v1<>14 AND v3<51 AND v4<32)) OR (v1>=21 AND v3<>25 AND v4<>16));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 35))) AND (test.v2 >= 14)) AND (test.v3 < 65)) AND (NOT((test.v4 = 9)))) OR (((NOT((test.v1 = 14))) AND (test.v3 < 51)) AND (test.v4 < 32))) OR (((test.v1 >= 21) AND (NOT((test.v3 = 25)))) AND (NOT((test.v4 = 16)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>35 AND v2>=14 AND v3<65 AND v4<>9) OR (v1<>14 AND v3<51 AND v4<32)) OR (v1>=21 AND v3<>25 AND v4<>16));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>12 AND v2<0) OR (v1=36 AND v3<37));",
				Expected: []sql.Row{{"Filter(((test.v1 > 12) AND (test.v2 < 0)) OR ((test.v1 = 36) AND (test.v3 < 37)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>12 AND v2<0) OR (v1=36 AND v3<37));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1=83 AND v3>=72 AND v4<=74) AND (v1>61 AND v2 BETWEEN 32 AND 44);",
				Expected: []sql.Row{{"Filter((((test.v1 = 83) AND (test.v3 >= 72)) AND (test.v4 <= 74)) AND ((test.v1 > 61) AND (test.v2 BETWEEN 32 AND 44)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1=83 AND v3>=72 AND v4<=74) AND (v1>61 AND v2 BETWEEN 32 AND 44);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1=78 AND v2>28 AND v3<=47) AND (v1<35 AND v2=69 AND v3>16);",
				Expected: []sql.Row{{"Filter((((test.v1 = 78) AND (test.v2 > 28)) AND (test.v3 <= 47)) AND (((test.v1 < 35) AND (test.v2 = 69)) AND (test.v3 > 16)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1=78 AND v2>28 AND v3<=47) AND (v1<35 AND v2=69 AND v3>16);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 31 AND 49 AND v2=20 AND v3 BETWEEN 8 AND 46) AND (v1<>57 AND v2<5);",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 31 AND 49) AND (test.v2 = 20)) AND (test.v3 BETWEEN 8 AND 46)) AND ((NOT((test.v1 = 57))) AND (test.v2 < 5)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 31 AND 49 AND v2=20 AND v3 BETWEEN 8 AND 46) AND (v1<>57 AND v2<5);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=39 AND v2<>3) OR (v1=97 AND v2<>37));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 39) AND (NOT((test.v2 = 3)))) OR ((test.v1 = 97) AND (NOT((test.v2 = 37)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=39 AND v2<>3) OR (v1=97 AND v2<>37));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=19 AND v4<>62 AND v2<>19 AND v3<>29) OR (v1 BETWEEN 37 AND 75 AND v4<23 AND v2 BETWEEN 6 AND 43));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 19) AND (NOT((test.v4 = 62)))) AND (NOT((test.v2 = 19)))) AND (NOT((test.v3 = 29)))) OR (((test.v1 BETWEEN 37 AND 75) AND (test.v4 < 23)) AND (test.v2 BETWEEN 6 AND 43)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=19 AND v4<>62 AND v2<>19 AND v3<>29) OR (v1 BETWEEN 37 AND 75 AND v4<23 AND v2 BETWEEN 6 AND 43));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<8 AND v2<=33 AND v3 BETWEEN 54 AND 85) OR (v1=46));",
				Expected: []sql.Row{{"Filter((((test.v1 < 8) AND (test.v2 <= 33)) AND (test.v3 BETWEEN 54 AND 85)) OR (test.v1 = 46))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<8 AND v2<=33 AND v3 BETWEEN 54 AND 85) OR (v1=46));",
				Expected: []sql.Row{{8, 4, 27, 77, 5}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=69 AND v2<8) AND (v1>=34 AND v2>=99 AND v3>96 AND v4 BETWEEN 36 AND 99) OR (v1=0 AND v2>=71));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 69) AND (test.v2 < 8)) AND ((((test.v1 >= 34) AND (test.v2 >= 99)) AND (test.v3 > 96)) AND (test.v4 BETWEEN 36 AND 99))) OR ((test.v1 = 0) AND (test.v2 >= 71)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=69 AND v2<8) AND (v1>=34 AND v2>=99 AND v3>96 AND v4 BETWEEN 36 AND 99) OR (v1=0 AND v2>=71));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 20 AND 54 AND v2<>31 AND v3 BETWEEN 15 AND 21) OR (v1<=46 AND v3>76)) OR (v1 BETWEEN 31 AND 71));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 20 AND 54) AND (NOT((test.v2 = 31)))) AND (test.v3 BETWEEN 15 AND 21)) OR ((test.v1 <= 46) AND (test.v3 > 76))) OR (test.v1 BETWEEN 31 AND 71))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 20 AND 54 AND v2<>31 AND v3 BETWEEN 15 AND 21) OR (v1<=46 AND v3>76)) OR (v1 BETWEEN 31 AND 71));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>37 AND v2<>5 AND v3=8 AND v4 BETWEEN 26 AND 50) OR (v1>=53)) AND (v1 BETWEEN 5 AND 80);",
				Expected: []sql.Row{{"Filter((((((test.v1 > 37) AND (NOT((test.v2 = 5)))) AND (test.v3 = 8)) AND (test.v4 BETWEEN 26 AND 50)) OR (test.v1 >= 53)) AND (test.v1 BETWEEN 5 AND 80))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>37 AND v2<>5 AND v3=8 AND v4 BETWEEN 26 AND 50) OR (v1>=53)) AND (v1 BETWEEN 5 AND 80);",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {74, 70, 56, 21, 22}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=25) OR (v1<=87));",
				Expected: []sql.Row{{"Filter((test.v1 = 25) OR (test.v1 <= 87))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=25) OR (v1<=87));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=99 AND v2>=85) AND (v1<=83 AND v2=99) OR (v1<=6 AND v2 BETWEEN 36 AND 68 AND v3>62 AND v4=79));",
				Expected: []sql.Row{{"Filter((((test.v1 = 99) AND (test.v2 >= 85)) AND ((test.v1 <= 83) AND (test.v2 = 99))) OR ((((test.v1 <= 6) AND (test.v2 BETWEEN 36 AND 68)) AND (test.v3 > 62)) AND (test.v4 = 79)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=99 AND v2>=85) AND (v1<=83 AND v2=99) OR (v1<=6 AND v2 BETWEEN 36 AND 68 AND v3>62 AND v4=79));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 30 AND 32 AND v2<68 AND v3<24) AND (v1>=32);",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 30 AND 32) AND (test.v2 < 68)) AND (test.v3 < 24)) AND (test.v1 >= 32))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 30 AND 32 AND v2<68 AND v3<24) AND (v1>=32);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>62 AND v2>0) OR (v1<>80 AND v2>55 AND v3=10 AND v4=91));",
				Expected: []sql.Row{{"Filter(((test.v1 > 62) AND (test.v2 > 0)) OR ((((NOT((test.v1 = 80))) AND (test.v2 > 55)) AND (test.v3 = 10)) AND (test.v4 = 91)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>62 AND v2>0) OR (v1<>80 AND v2>55 AND v3=10 AND v4=91));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=7 AND v2 BETWEEN 55 AND 81) OR (v1<>56 AND v2<=76 AND v3<>36)) AND (v1<56 AND v2<>69 AND v3=25);",
				Expected: []sql.Row{{"Filter((((test.v1 <= 7) AND (test.v2 BETWEEN 55 AND 81)) OR (((NOT((test.v1 = 56))) AND (test.v2 <= 76)) AND (NOT((test.v3 = 36))))) AND (((test.v1 < 56) AND (NOT((test.v2 = 69)))) AND (test.v3 = 25)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=7 AND v2 BETWEEN 55 AND 81) OR (v1<>56 AND v2<=76 AND v3<>36)) AND (v1<56 AND v2<>69 AND v3=25);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>18) OR (v1>=42 AND v2<=65 AND v3=87 AND v4=80));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 18))) OR ((((test.v1 >= 42) AND (test.v2 <= 65)) AND (test.v3 = 87)) AND (test.v4 = 80)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>18) OR (v1>=42 AND v2<=65 AND v3=87 AND v4=80));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=27) OR (v1<23 AND v2>=41));",
				Expected: []sql.Row{{"Filter((test.v1 <= 27) OR ((test.v1 < 23) AND (test.v2 >= 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=27) OR (v1<23 AND v2>=41));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {20, 12, 0, 33, 62}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>71 AND v4>0) OR (v1<48 AND v2=89 AND v3>=46 AND v4<=32)) OR (v1<62 AND v2>=33 AND v3>58)) OR (v1>=31 AND v3<>71));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 71) AND (test.v4 > 0)) OR ((((test.v1 < 48) AND (test.v2 = 89)) AND (test.v3 >= 46)) AND (test.v4 <= 32))) OR (((test.v1 < 62) AND (test.v2 >= 33)) AND (test.v3 > 58))) OR ((test.v1 >= 31) AND (NOT((test.v3 = 71)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>71 AND v4>0) OR (v1<48 AND v2=89 AND v3>=46 AND v4<=32)) OR (v1<62 AND v2>=33 AND v3>58)) OR (v1>=31 AND v3<>71));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 9 AND 40 AND v3<=43 AND v4=62 AND v2>=43) OR (v1=61 AND v2>12 AND v3 BETWEEN 0 AND 13 AND v4>=8));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 9 AND 40) AND (test.v3 <= 43)) AND (test.v4 = 62)) AND (test.v2 >= 43)) OR ((((test.v1 = 61) AND (test.v2 > 12)) AND (test.v3 BETWEEN 0 AND 13)) AND (test.v4 >= 8)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 9 AND 40 AND v3<=43 AND v4=62 AND v2>=43) OR (v1=61 AND v2>12 AND v3 BETWEEN 0 AND 13 AND v4>=8));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<58) OR (v1 BETWEEN 17 AND 20 AND v2<>99 AND v3<=76)) OR (v1 BETWEEN 48 AND 87)) OR (v1<39 AND v2 BETWEEN 48 AND 94 AND v3<>0));",
				Expected: []sql.Row{{"Filter((((test.v1 < 58) OR (((test.v1 BETWEEN 17 AND 20) AND (NOT((test.v2 = 99)))) AND (test.v3 <= 76))) OR (test.v1 BETWEEN 48 AND 87)) OR (((test.v1 < 39) AND (test.v2 BETWEEN 48 AND 94)) AND (NOT((test.v3 = 0)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<58) OR (v1 BETWEEN 17 AND 20 AND v2<>99 AND v3<=76)) OR (v1 BETWEEN 48 AND 87)) OR (v1<39 AND v2 BETWEEN 48 AND 94 AND v3<>0));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=33) OR (v1 BETWEEN 7 AND 41 AND v2<82 AND v3<53 AND v4<>3));",
				Expected: []sql.Row{{"Filter((test.v1 = 33) OR ((((test.v1 BETWEEN 7 AND 41) AND (test.v2 < 82)) AND (test.v3 < 53)) AND (NOT((test.v4 = 3)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=33) OR (v1 BETWEEN 7 AND 41 AND v2<82 AND v3<53 AND v4<>3));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=9 AND v4=22 AND v2>=95) OR (v1>96));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 9) AND (test.v4 = 22)) AND (test.v2 >= 95)) OR (test.v1 > 96))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=9 AND v4=22 AND v2>=95) OR (v1>96));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=56) OR (v1>=31 AND v4<38 AND v2>20)) OR (v1=91 AND v2<48));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 56) OR (((test.v1 >= 31) AND (test.v4 < 38)) AND (test.v2 > 20))) OR ((test.v1 = 91) AND (test.v2 < 48)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=56) OR (v1>=31 AND v4<38 AND v2>20)) OR (v1=91 AND v2<48));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=75 AND v4<=30) OR (v1>=41 AND v2 BETWEEN 16 AND 25 AND v3>=99));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 75) AND (test.v4 <= 30)) OR (((test.v1 >= 41) AND (test.v2 BETWEEN 16 AND 25)) AND (test.v3 >= 99)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=75 AND v4<=30) OR (v1>=41 AND v2 BETWEEN 16 AND 25 AND v3>=99));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {78, 73, 91, 56, 0}, {9, 5, 17, 52, 13}, {66, 64, 23, 33, 5}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {16, 8, 99, 43, 1}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 2 AND 64) OR (v1>=23));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 2 AND 64) OR (test.v1 >= 23))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 2 AND 64) OR (v1>=23));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=26 AND v2<1 AND v3=82 AND v4<=42) OR (v1 BETWEEN 42 AND 73));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 26) AND (test.v2 < 1)) AND (test.v3 = 82)) AND (test.v4 <= 42)) OR (test.v1 BETWEEN 42 AND 73))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=26 AND v2<1 AND v3=82 AND v4<=42) OR (v1 BETWEEN 42 AND 73));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {53, 48, 3, 11, 18}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=23 AND v2<=10) AND (v1>=75 AND v4 BETWEEN 24 AND 68) AND (v1>44 AND v2>8 AND v3<=16);",
				Expected: []sql.Row{{"Filter((((test.v1 >= 23) AND (test.v2 <= 10)) AND ((test.v1 >= 75) AND (test.v4 BETWEEN 24 AND 68))) AND (((test.v1 > 44) AND (test.v2 > 8)) AND (test.v3 <= 16)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=23 AND v2<=10) AND (v1>=75 AND v4 BETWEEN 24 AND 68) AND (v1>44 AND v2>8 AND v3<=16);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1>6 AND v2>61 AND v3=0 AND v4>=76) OR (v1<23)) OR (v1<>46 AND v2=29 AND v3>4)) OR (v1>=59)) OR (v1=87 AND v2<=98 AND v3>=47));",
				Expected: []sql.Row{{"Filter((((((((test.v1 > 6) AND (test.v2 > 61)) AND (test.v3 = 0)) AND (test.v4 >= 76)) OR (test.v1 < 23)) OR (((NOT((test.v1 = 46))) AND (test.v2 = 29)) AND (test.v3 > 4))) OR (test.v1 >= 59)) OR (((test.v1 = 87) AND (test.v2 <= 98)) AND (test.v3 >= 47)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1>6 AND v2>61 AND v3=0 AND v4>=76) OR (v1<23)) OR (v1<>46 AND v2=29 AND v3>4)) OR (v1>=59)) OR (v1=87 AND v2<=98 AND v3>=47));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=59 AND v2 BETWEEN 15 AND 53 AND v3<>17 AND v4>=10) OR (v1 BETWEEN 37 AND 95 AND v2<=32 AND v3>=81));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 59) AND (test.v2 BETWEEN 15 AND 53)) AND (NOT((test.v3 = 17)))) AND (test.v4 >= 10)) OR (((test.v1 BETWEEN 37 AND 95) AND (test.v2 <= 32)) AND (test.v3 >= 81)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=59 AND v2 BETWEEN 15 AND 53 AND v3<>17 AND v4>=10) OR (v1 BETWEEN 37 AND 95 AND v2<=32 AND v3>=81));",
				Expected: []sql.Row{{48, 41, 21, 82, 54}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 6 AND 92 AND v2=75 AND v3>79) OR (v1>=10)) OR (v1<=35 AND v2<=42)) AND (v1<>65);",
				Expected: []sql.Row{{"Filter((((((test.v1 BETWEEN 6 AND 92) AND (test.v2 = 75)) AND (test.v3 > 79)) OR (test.v1 >= 10)) OR ((test.v1 <= 35) AND (test.v2 <= 42))) AND (NOT((test.v1 = 65))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 6 AND 92 AND v2=75 AND v3>79) OR (v1>=10)) OR (v1<=35 AND v2<=42)) AND (v1<>65);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>84 AND v4<=53 AND v2=77 AND v3>=40) OR (v1>78 AND v2<>1 AND v3=98 AND v4>=76));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 84) AND (test.v4 <= 53)) AND (test.v2 = 77)) AND (test.v3 >= 40)) OR ((((test.v1 > 78) AND (NOT((test.v2 = 1)))) AND (test.v3 = 98)) AND (test.v4 >= 76)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>84 AND v4<=53 AND v2=77 AND v3>=40) OR (v1>78 AND v2<>1 AND v3=98 AND v4>=76));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>79 AND v2<=85) OR (v1<>13)) OR (v1 BETWEEN 4 AND 67));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 79))) AND (test.v2 <= 85)) OR (NOT((test.v1 = 13)))) OR (test.v1 BETWEEN 4 AND 67))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>79 AND v2<=85) OR (v1<>13)) OR (v1 BETWEEN 4 AND 67));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>34) OR (v1<35 AND v2>=93)) OR (v1>8));",
				Expected: []sql.Row{{"Filter(((test.v1 > 34) OR ((test.v1 < 35) AND (test.v2 >= 93))) OR (test.v1 > 8))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>34) OR (v1<35 AND v2>=93)) OR (v1>8));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<65) OR (v1<>44)) OR (v1<=39 AND v3>=14)) OR (v1<=33 AND v2<>11)) OR (v1=75 AND v2=0 AND v3<28));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 65) OR (NOT((test.v1 = 44)))) OR ((test.v1 <= 39) AND (test.v3 >= 14))) OR ((test.v1 <= 33) AND (NOT((test.v2 = 11))))) OR (((test.v1 = 75) AND (test.v2 = 0)) AND (test.v3 < 28)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<65) OR (v1<>44)) OR (v1<=39 AND v3>=14)) OR (v1<=33 AND v2<>11)) OR (v1=75 AND v2=0 AND v3<28));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>50 AND v2>=46) AND (v1<>17 AND v2=45 AND v3<=79) OR (v1=10 AND v2>=35)) AND (v1=44 AND v2=38);",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 50))) AND (test.v2 >= 46)) AND (((NOT((test.v1 = 17))) AND (test.v2 = 45)) AND (test.v3 <= 79))) OR ((test.v1 = 10) AND (test.v2 >= 35))) AND ((test.v1 = 44) AND (test.v2 = 38)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>50 AND v2>=46) AND (v1<>17 AND v2=45 AND v3<=79) OR (v1=10 AND v2>=35)) AND (v1=44 AND v2=38);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<34) OR (v1<=62 AND v4<>18 AND v2 BETWEEN 1 AND 41)) OR (v1>=65 AND v2>=93 AND v3 BETWEEN 34 AND 41));",
				Expected: []sql.Row{{"Filter(((test.v1 < 34) OR (((test.v1 <= 62) AND (NOT((test.v4 = 18)))) AND (test.v2 BETWEEN 1 AND 41))) OR (((test.v1 >= 65) AND (test.v2 >= 93)) AND (test.v3 BETWEEN 34 AND 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<34) OR (v1<=62 AND v4<>18 AND v2 BETWEEN 1 AND 41)) OR (v1>=65 AND v2>=93 AND v3 BETWEEN 34 AND 41));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>8) OR (v1>20 AND v4>=99));",
				Expected: []sql.Row{{"Filter((test.v1 > 8) OR ((test.v1 > 20) AND (test.v4 >= 99)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>8) OR (v1>20 AND v4>=99));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>57) OR (v1<87 AND v2<>91 AND v3 BETWEEN 47 AND 98));",
				Expected: []sql.Row{{"Filter((test.v1 > 57) OR (((test.v1 < 87) AND (NOT((test.v2 = 91)))) AND (test.v3 BETWEEN 47 AND 98)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>57) OR (v1<87 AND v2<>91 AND v3 BETWEEN 47 AND 98));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {46, 39, 45, 75, 55}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=57) OR (v1=88 AND v2 BETWEEN 72 AND 93));",
				Expected: []sql.Row{{"Filter((test.v1 = 57) OR ((test.v1 = 88) AND (test.v2 BETWEEN 72 AND 93)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=57) OR (v1=88 AND v2 BETWEEN 72 AND 93));",
				Expected: []sql.Row{{64, 57, 25, 97, 65}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>10 AND v2=20 AND v3<=21 AND v4<>88) OR (v1<28 AND v2 BETWEEN 38 AND 59 AND v3<>98 AND v4>=26));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 10))) AND (test.v2 = 20)) AND (test.v3 <= 21)) AND (NOT((test.v4 = 88)))) OR ((((test.v1 < 28) AND (test.v2 BETWEEN 38 AND 59)) AND (NOT((test.v3 = 98)))) AND (test.v4 >= 26)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>10 AND v2=20 AND v3<=21 AND v4<>88) OR (v1<28 AND v2 BETWEEN 38 AND 59 AND v3<>98 AND v4>=26));",
				Expected: []sql.Row{{23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {1, 0, 55, 14, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>5 AND v3<>53 AND v4>=49) OR (v1<18 AND v2<94));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 5))) AND (NOT((test.v3 = 53)))) AND (test.v4 >= 49)) OR ((test.v1 < 18) AND (test.v2 < 94)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>5 AND v3<>53 AND v4>=49) OR (v1<18 AND v2<94));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {46, 39, 45, 75, 55}, {25, 17, 75, 86, 18}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<52 AND v2 BETWEEN 33 AND 75 AND v3=32) OR (v1<=98 AND v2<=41 AND v3<>87 AND v4<>83));",
				Expected: []sql.Row{{"Filter((((test.v1 < 52) AND (test.v2 BETWEEN 33 AND 75)) AND (test.v3 = 32)) OR ((((test.v1 <= 98) AND (test.v2 <= 41)) AND (NOT((test.v3 = 87)))) AND (NOT((test.v4 = 83)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<52 AND v2 BETWEEN 33 AND 75 AND v3=32) OR (v1<=98 AND v2<=41 AND v3<>87 AND v4<>83));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>28 AND v4>57 AND v2<62 AND v3 BETWEEN 14 AND 41) AND (v1<>72 AND v2>=13 AND v3>29 AND v4>38) OR (v1<=22 AND v2>58));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 28) AND (test.v4 > 57)) AND (test.v2 < 62)) AND (test.v3 BETWEEN 14 AND 41)) AND ((((NOT((test.v1 = 72))) AND (test.v2 >= 13)) AND (test.v3 > 29)) AND (test.v4 > 38))) OR ((test.v1 <= 22) AND (test.v2 > 58)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>28 AND v4>57 AND v2<62 AND v3 BETWEEN 14 AND 41) AND (v1<>72 AND v2>=13 AND v3>29 AND v4>38) OR (v1<=22 AND v2>58));",
				Expected: []sql.Row{{11, 5, 76, 70, 46}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {25, 17, 75, 86, 18}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=13 AND v2<=52 AND v3=28 AND v4>88) OR (v1<>5 AND v2<=42));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 13) AND (test.v2 <= 52)) AND (test.v3 = 28)) AND (test.v4 > 88)) OR ((NOT((test.v1 = 5))) AND (test.v2 <= 42)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=13 AND v2<=52 AND v3=28 AND v4>88) OR (v1<>5 AND v2<=42));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>35 AND v4<>20 AND v2<81 AND v3=27) OR (v1>13 AND v3=27));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 35) AND (NOT((test.v4 = 20)))) AND (test.v2 < 81)) AND (test.v3 = 27)) OR ((test.v1 > 13) AND (test.v3 = 27)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>35 AND v4<>20 AND v2<81 AND v3=27) OR (v1>13 AND v3=27));",
				Expected: []sql.Row{{40, 34, 89, 27, 90}, {93, 89, 1, 27, 50}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=26) OR (v1<59 AND v2 BETWEEN 2 AND 30 AND v3>=69));",
				Expected: []sql.Row{{"Filter((test.v1 >= 26) OR (((test.v1 < 59) AND (test.v2 BETWEEN 2 AND 30)) AND (test.v3 >= 69)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=26) OR (v1<59 AND v2 BETWEEN 2 AND 30 AND v3>=69));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<11) OR (v1<>9 AND v2 BETWEEN 51 AND 62 AND v3=98));",
				Expected: []sql.Row{{"Filter((test.v1 < 11) OR (((NOT((test.v1 = 9))) AND (test.v2 BETWEEN 51 AND 62)) AND (test.v3 = 98)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<11) OR (v1<>9 AND v2 BETWEEN 51 AND 62 AND v3=98));",
				Expected: []sql.Row{{9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=92 AND v2>25) OR (v1=91 AND v2=21 AND v3<=18 AND v4<>15)) OR (v1=79 AND v2>67 AND v3<>48 AND v4<42));",
				Expected: []sql.Row{{"Filter((((test.v1 = 92) AND (test.v2 > 25)) OR ((((test.v1 = 91) AND (test.v2 = 21)) AND (test.v3 <= 18)) AND (NOT((test.v4 = 15))))) OR ((((test.v1 = 79) AND (test.v2 > 67)) AND (NOT((test.v3 = 48)))) AND (test.v4 < 42)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=92 AND v2>25) OR (v1=91 AND v2=21 AND v3<=18 AND v4<>15)) OR (v1=79 AND v2>67 AND v3<>48 AND v4<42));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=86 AND v2<5 AND v3<36 AND v4<81) OR (v1>=52 AND v2>24 AND v3<5)) OR (v1 BETWEEN 5 AND 80 AND v3<>80));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 86) AND (test.v2 < 5)) AND (test.v3 < 36)) AND (test.v4 < 81)) OR (((test.v1 >= 52) AND (test.v2 > 24)) AND (test.v3 < 5))) OR ((test.v1 BETWEEN 5 AND 80) AND (NOT((test.v3 = 80)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=86 AND v2<5 AND v3<36 AND v4<81) OR (v1>=52 AND v2>24 AND v3<5)) OR (v1 BETWEEN 5 AND 80 AND v3<>80));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>67) OR (v1>69 AND v2>11 AND v3=13 AND v4=20));",
				Expected: []sql.Row{{"Filter((test.v1 > 67) OR ((((test.v1 > 69) AND (test.v2 > 11)) AND (test.v3 = 13)) AND (test.v4 = 20)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>67) OR (v1>69 AND v2>11 AND v3=13 AND v4=20));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {73, 70, 40, 19, 5}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>31) OR (v1 BETWEEN 27 AND 87 AND v2=71 AND v3=38 AND v4=1));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 31))) OR ((((test.v1 BETWEEN 27 AND 87) AND (test.v2 = 71)) AND (test.v3 = 38)) AND (test.v4 = 1)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>31) OR (v1 BETWEEN 27 AND 87 AND v2=71 AND v3=38 AND v4=1));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>2 AND v4=0 AND v2 BETWEEN 6 AND 23 AND v3 BETWEEN 46 AND 52) OR (v1<=63 AND v2>=71 AND v3=28)) AND (v1<=52);",
				Expected: []sql.Row{{"Filter((((((test.v1 > 2) AND (test.v4 = 0)) AND (test.v2 BETWEEN 6 AND 23)) AND (test.v3 BETWEEN 46 AND 52)) OR (((test.v1 <= 63) AND (test.v2 >= 71)) AND (test.v3 = 28))) AND (test.v1 <= 52))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>2 AND v4=0 AND v2 BETWEEN 6 AND 23 AND v3 BETWEEN 46 AND 52) OR (v1<=63 AND v2>=71 AND v3=28)) AND (v1<=52);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 10 AND 90) AND (v1=86 AND v4>=4) AND (v1 BETWEEN 6 AND 58 AND v2=85);",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 10 AND 90) AND ((test.v1 = 86) AND (test.v4 >= 4))) AND ((test.v1 BETWEEN 6 AND 58) AND (test.v2 = 85)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 10 AND 90) AND (v1=86 AND v4>=4) AND (v1 BETWEEN 6 AND 58 AND v2=85);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=46 AND v4>41 AND v2<>12) OR (v1>17 AND v2>=34 AND v3<>68 AND v4<=13)) OR (v1>=98 AND v4 BETWEEN 3 AND 62 AND v2=39));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 46) AND (test.v4 > 41)) AND (NOT((test.v2 = 12)))) OR ((((test.v1 > 17) AND (test.v2 >= 34)) AND (NOT((test.v3 = 68)))) AND (test.v4 <= 13))) OR (((test.v1 >= 98) AND (test.v4 BETWEEN 3 AND 62)) AND (test.v2 = 39)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=46 AND v4>41 AND v2<>12) OR (v1>17 AND v2>=34 AND v3<>68 AND v4<=13)) OR (v1>=98 AND v4 BETWEEN 3 AND 62 AND v2=39));",
				Expected: []sql.Row{{78, 73, 91, 56, 0}, {57, 50, 79, 10, 12}, {44, 37, 41, 36, 10}, {30, 23, 43, 13, 11}, {60, 52, 72, 44, 2}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=12 AND v2<>4 AND v3 BETWEEN 18 AND 42) OR (v1>=73)) OR (v1<60 AND v2=93 AND v3>=79));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 12) AND (NOT((test.v2 = 4)))) AND (test.v3 BETWEEN 18 AND 42)) OR (test.v1 >= 73)) OR (((test.v1 < 60) AND (test.v2 = 93)) AND (test.v3 >= 79)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=12 AND v2<>4 AND v3 BETWEEN 18 AND 42) OR (v1>=73)) OR (v1<60 AND v2=93 AND v3>=79));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {10, 5, 32, 30, 48}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {18, 9, 19, 38, 35}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=55 AND v2>50) OR (v1<>51 AND v2>=37));",
				Expected: []sql.Row{{"Filter(((test.v1 = 55) AND (test.v2 > 50)) OR ((NOT((test.v1 = 51))) AND (test.v2 >= 37)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=55 AND v2>50) OR (v1<>51 AND v2>=37));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {30, 23, 43, 13, 11}, {60, 52, 72, 44, 2}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 66 AND 76 AND v2>=84 AND v3>1 AND v4 BETWEEN 71 AND 95) AND (v1>36 AND v2<>41) OR (v1<44 AND v2<=50 AND v3=36 AND v4<=42));",
				Expected: []sql.Row{{"Filter((((((test.v1 BETWEEN 66 AND 76) AND (test.v2 >= 84)) AND (test.v3 > 1)) AND (test.v4 BETWEEN 71 AND 95)) AND ((test.v1 > 36) AND (NOT((test.v2 = 41))))) OR ((((test.v1 < 44) AND (test.v2 <= 50)) AND (test.v3 = 36)) AND (test.v4 <= 42)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 66 AND 76 AND v2>=84 AND v3>1 AND v4 BETWEEN 71 AND 95) AND (v1>36 AND v2<>41) OR (v1<44 AND v2<=50 AND v3=36 AND v4<=42));",
				Expected: []sql.Row{{44, 37, 41, 36, 10}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=21 AND v2=44 AND v3>=68) OR (v1>=38 AND v2>=15));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 21) AND (test.v2 = 44)) AND (test.v3 >= 68)) OR ((test.v1 >= 38) AND (test.v2 >= 15)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=21 AND v2=44 AND v3>=68) OR (v1>=38 AND v2>=15));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {46, 39, 45, 75, 55}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<>37 AND v2>67 AND v3>52) AND (v1<48 AND v2<>73 AND v3=25 AND v4=22);",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 37))) AND (test.v2 > 67)) AND (test.v3 > 52)) AND ((((test.v1 < 48) AND (NOT((test.v2 = 73)))) AND (test.v3 = 25)) AND (test.v4 = 22)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<>37 AND v2>67 AND v3>52) AND (v1<48 AND v2<>73 AND v3=25 AND v4=22);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 57 AND 62 AND v2>=99) OR (v1>31));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 57 AND 62) AND (test.v2 >= 99)) OR (test.v1 > 31))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 57 AND 62 AND v2>=99) OR (v1>31));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>22 AND v3<>49) OR (v1>=41 AND v2<=74 AND v3<=46));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 22))) AND (NOT((test.v3 = 49)))) OR (((test.v1 >= 41) AND (test.v2 <= 74)) AND (test.v3 <= 46)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>22 AND v3<>49) OR (v1>=41 AND v2<=74 AND v3<=46));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=82 AND v4<=67 AND v2=40) OR (v1>63)) OR (v1<=16));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 82) AND (test.v4 <= 67)) AND (test.v2 = 40)) OR (test.v1 > 63)) OR (test.v1 <= 16))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=82 AND v4<=67 AND v2=40) OR (v1>63)) OR (v1<=16));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=39 AND v2<>82 AND v3>=33 AND v4>=84) OR (v1=57 AND v2<25 AND v3<>55 AND v4<=82)) OR (v1>10 AND v2>28 AND v3>=65)) OR (v1<=13 AND v2=66));",
				Expected: []sql.Row{{"Filter(((((((test.v1 <= 39) AND (NOT((test.v2 = 82)))) AND (test.v3 >= 33)) AND (test.v4 >= 84)) OR ((((test.v1 = 57) AND (test.v2 < 25)) AND (NOT((test.v3 = 55)))) AND (test.v4 <= 82))) OR (((test.v1 > 10) AND (test.v2 > 28)) AND (test.v3 >= 65))) OR ((test.v1 <= 13) AND (test.v2 = 66)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=39 AND v2<>82 AND v3>=33 AND v4>=84) OR (v1=57 AND v2<25 AND v3<>55 AND v4<=82)) OR (v1>10 AND v2>28 AND v3>=65)) OR (v1<=13 AND v2=66));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {82, 82, 29, 66, 71}, {17, 9, 7, 74, 92}, {15, 8, 54, 46, 87}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {46, 39, 45, 75, 55}, {25, 17, 75, 86, 18}, {97, 93, 56, 71, 53}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {32, 24, 45, 96, 0}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=60 AND v2<=25 AND v3<>9) OR (v1 BETWEEN 19 AND 92 AND v2>=33 AND v3<=40 AND v4=53));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 60) AND (test.v2 <= 25)) AND (NOT((test.v3 = 9)))) OR ((((test.v1 BETWEEN 19 AND 92) AND (test.v2 >= 33)) AND (test.v3 <= 40)) AND (test.v4 = 53)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=60 AND v2<=25 AND v3<>9) OR (v1 BETWEEN 19 AND 92 AND v2>=33 AND v3<=40 AND v4=53));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {28, 22, 21, 28, 78}, {9, 5, 17, 52, 13}, {17, 9, 7, 74, 92}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {51, 45, 9, 76, 9}, {18, 9, 19, 38, 35}, {61, 53, 6, 53, 89}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=21 AND v2<=27 AND v3>=86 AND v4>99) OR (v1<76 AND v2<>97));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 21) AND (test.v2 <= 27)) AND (test.v3 >= 86)) AND (test.v4 > 99)) OR ((test.v1 < 76) AND (NOT((test.v2 = 97)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=21 AND v2<=27 AND v3>=86 AND v4>99) OR (v1<76 AND v2<>97));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 4 AND 8 AND v3>=12) OR (v1>=12 AND v2>=0 AND v3=18));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 4 AND 8) AND (test.v3 >= 12)) OR (((test.v1 >= 12) AND (test.v2 >= 0)) AND (test.v3 = 18)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 4 AND 8 AND v3>=12) OR (v1>=12 AND v2>=0 AND v3=18));",
				Expected: []sql.Row{{9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {7, 4, 10, 53, 69}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>65 AND v2<=52 AND v3>37) OR (v1>11)) OR (v1<=54 AND v2 BETWEEN 30 AND 85 AND v3 BETWEEN 14 AND 27 AND v4>=35)) OR (v1>44 AND v2<>76 AND v3>=52));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 65) AND (test.v2 <= 52)) AND (test.v3 > 37)) OR (test.v1 > 11)) OR ((((test.v1 <= 54) AND (test.v2 BETWEEN 30 AND 85)) AND (test.v3 BETWEEN 14 AND 27)) AND (test.v4 >= 35))) OR (((test.v1 > 44) AND (NOT((test.v2 = 76)))) AND (test.v3 >= 52)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>65 AND v2<=52 AND v3>37) OR (v1>11)) OR (v1<=54 AND v2 BETWEEN 30 AND 85 AND v3 BETWEEN 14 AND 27 AND v4>=35)) OR (v1>44 AND v2<>76 AND v3>=52));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=54) OR (v1<17 AND v2=34 AND v3>=59));",
				Expected: []sql.Row{{"Filter((test.v1 >= 54) OR (((test.v1 < 17) AND (test.v2 = 34)) AND (test.v3 >= 59)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=54) OR (v1<17 AND v2=34 AND v3>=59));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>9 AND v4<>61 AND v2=98 AND v3<1) OR (v1<2 AND v2 BETWEEN 3 AND 70));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 9))) AND (NOT((test.v4 = 61)))) AND (test.v2 = 98)) AND (test.v3 < 1)) OR ((test.v1 < 2) AND (test.v2 BETWEEN 3 AND 70)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>9 AND v4<>61 AND v2=98 AND v3<1) OR (v1<2 AND v2 BETWEEN 3 AND 70));",
				Expected: []sql.Row{{0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {1, 0, 55, 14, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=6 AND v2>93) OR (v1 BETWEEN 38 AND 46));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 6) AND (test.v2 > 93)) OR (test.v1 BETWEEN 38 AND 46))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=6 AND v2>93) OR (v1 BETWEEN 38 AND 46));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {46, 39, 45, 75, 55}, {47, 41, 1, 85, 9}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 16 AND 72) OR (v1=20)) OR (v1>61 AND v2<>48 AND v3<>83 AND v4=46)) OR (v1=5 AND v2=59));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 16 AND 72) OR (test.v1 = 20)) OR ((((test.v1 > 61) AND (NOT((test.v2 = 48)))) AND (NOT((test.v3 = 83)))) AND (test.v4 = 46))) OR ((test.v1 = 5) AND (test.v2 = 59)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 16 AND 72) OR (v1=20)) OR (v1>61 AND v2<>48 AND v3<>83 AND v4=46)) OR (v1=5 AND v2=59));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>41 AND v2>74 AND v3>37 AND v4<38) OR (v1=58 AND v2>=1)) OR (v1<=4 AND v2>0 AND v3 BETWEEN 39 AND 72 AND v4>=29));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 41) AND (test.v2 > 74)) AND (test.v3 > 37)) AND (test.v4 < 38)) OR ((test.v1 = 58) AND (test.v2 >= 1))) OR ((((test.v1 <= 4) AND (test.v2 > 0)) AND (test.v3 BETWEEN 39 AND 72)) AND (test.v4 >= 29)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>41 AND v2>74 AND v3>37 AND v4<38) OR (v1=58 AND v2>=1)) OR (v1<=4 AND v2>0 AND v3 BETWEEN 39 AND 72 AND v4>=29));",
				Expected: []sql.Row{{52, 47, 94, 56, 21}, {72, 69, 81, 70, 37}, {78, 73, 91, 56, 0}, {59, 51, 97, 39, 36}, {7, 4, 10, 53, 69}, {69, 64, 77, 41, 17}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>53 AND v4<99 AND v2<>31) OR (v1<>5 AND v2>70 AND v3>=71));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 53))) AND (test.v4 < 99)) AND (NOT((test.v2 = 31)))) OR (((NOT((test.v1 = 5))) AND (test.v2 > 70)) AND (test.v3 >= 71)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>53 AND v4<99 AND v2<>31) OR (v1<>5 AND v2>70 AND v3>=71));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>1 AND v4=93) OR (v1<10 AND v2 BETWEEN 40 AND 74 AND v3>=27));",
				Expected: []sql.Row{{"Filter(((test.v1 > 1) AND (test.v4 = 93)) OR (((test.v1 < 10) AND (test.v2 BETWEEN 40 AND 74)) AND (test.v3 >= 27)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>1 AND v4=93) OR (v1<10 AND v2 BETWEEN 40 AND 74 AND v3>=27));",
				Expected: []sql.Row{{15, 8, 54, 46, 87}, {3, 1, 72, 29, 21}, {33, 29, 72, 97, 93}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=92 AND v2>=64 AND v3=39 AND v4 BETWEEN 16 AND 53) OR (v1<54 AND v2 BETWEEN 8 AND 17 AND v3=21 AND v4=86));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 92) AND (test.v2 >= 64)) AND (test.v3 = 39)) AND (test.v4 BETWEEN 16 AND 53)) OR ((((test.v1 < 54) AND (test.v2 BETWEEN 8 AND 17)) AND (test.v3 = 21)) AND (test.v4 = 86)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=92 AND v2>=64 AND v3=39 AND v4 BETWEEN 16 AND 53) OR (v1<54 AND v2 BETWEEN 8 AND 17 AND v3=21 AND v4=86));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 16 AND 31 AND v4 BETWEEN 18 AND 96) OR (v1=40 AND v2<=35 AND v3>=51 AND v4>=83));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 16 AND 31) AND (test.v4 BETWEEN 18 AND 96)) OR ((((test.v1 = 40) AND (test.v2 <= 35)) AND (test.v3 >= 51)) AND (test.v4 >= 83)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 16 AND 31 AND v4 BETWEEN 18 AND 96) OR (v1=40 AND v2<=35 AND v3>=51 AND v4>=83));",
				Expected: []sql.Row{{28, 22, 21, 28, 78}, {31, 24, 26, 69, 25}, {29, 22, 98, 22, 21}, {25, 17, 75, 86, 18}, {33, 29, 72, 97, 93}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 68 AND 78 AND v2>96 AND v3<58 AND v4<14) OR (v1=71)) AND (v1>15 AND v2>=19) OR (v1>36));",
				Expected: []sql.Row{{"Filter(((((((test.v1 BETWEEN 68 AND 78) AND (test.v2 > 96)) AND (test.v3 < 58)) AND (test.v4 < 14)) OR (test.v1 = 71)) AND ((test.v1 > 15) AND (test.v2 >= 19))) OR (test.v1 > 36))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 68 AND 78 AND v2>96 AND v3<58 AND v4<14) OR (v1=71)) AND (v1>15 AND v2>=19) OR (v1>36));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 33 AND 71 AND v2<=61 AND v3<=32 AND v4 BETWEEN 18 AND 73) AND (v1<3) AND (v1<=59 AND v2=47 AND v3<49 AND v4>36);",
				Expected: []sql.Row{{"Filter((((((test.v1 BETWEEN 33 AND 71) AND (test.v2 <= 61)) AND (test.v3 <= 32)) AND (test.v4 BETWEEN 18 AND 73)) AND (test.v1 < 3)) AND ((((test.v1 <= 59) AND (test.v2 = 47)) AND (test.v3 < 49)) AND (test.v4 > 36)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 33 AND 71 AND v2<=61 AND v3<=32 AND v4 BETWEEN 18 AND 73) AND (v1<3) AND (v1<=59 AND v2=47 AND v3<49 AND v4>36);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<77 AND v2=43 AND v3<92 AND v4=13) OR (v1=38 AND v2<=46)) OR (v1 BETWEEN 10 AND 79 AND v2>=11 AND v3 BETWEEN 14 AND 14));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 77) AND (test.v2 = 43)) AND (test.v3 < 92)) AND (test.v4 = 13)) OR ((test.v1 = 38) AND (test.v2 <= 46))) OR (((test.v1 BETWEEN 10 AND 79) AND (test.v2 >= 11)) AND (test.v3 BETWEEN 14 AND 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<77 AND v2=43 AND v3<92 AND v4=13) OR (v1=38 AND v2<=46)) OR (v1 BETWEEN 10 AND 79 AND v2>=11 AND v3 BETWEEN 14 AND 14));",
				Expected: []sql.Row{{24, 17, 49, 14, 7}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=47 AND v4=13) AND (v1<=27 AND v3<54 AND v4 BETWEEN 27 AND 40) OR (v1>=40 AND v4=98 AND v2=25 AND v3>66));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 47) AND (test.v4 = 13)) AND (((test.v1 <= 27) AND (test.v3 < 54)) AND (test.v4 BETWEEN 27 AND 40))) OR ((((test.v1 >= 40) AND (test.v4 = 98)) AND (test.v2 = 25)) AND (test.v3 > 66)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=47 AND v4=13) AND (v1<=27 AND v3<54 AND v4 BETWEEN 27 AND 40) OR (v1>=40 AND v4=98 AND v2=25 AND v3>66));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<98 AND v3 BETWEEN 80 AND 82) OR (v1 BETWEEN 31 AND 38 AND v2=39));",
				Expected: []sql.Row{{"Filter(((test.v1 < 98) AND (test.v3 BETWEEN 80 AND 82)) OR ((test.v1 BETWEEN 31 AND 38) AND (test.v2 = 39)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<98 AND v3 BETWEEN 80 AND 82) OR (v1 BETWEEN 31 AND 38 AND v2=39));",
				Expected: []sql.Row{{48, 41, 21, 82, 54}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=75 AND v2 BETWEEN 45 AND 51 AND v3<15) OR (v1>=74 AND v2>=37 AND v3<76));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 75) AND (test.v2 BETWEEN 45 AND 51)) AND (test.v3 < 15)) OR (((test.v1 >= 74) AND (test.v2 >= 37)) AND (test.v3 < 76)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=75 AND v2 BETWEEN 45 AND 51 AND v3<15) OR (v1>=74 AND v2>=37 AND v3<76));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {91, 87, 66, 8, 22}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {94, 89, 91, 7, 45}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=40) OR (v1<>32 AND v4<=37));",
				Expected: []sql.Row{{"Filter((test.v1 >= 40) OR ((NOT((test.v1 = 32))) AND (test.v4 <= 37)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=40) OR (v1<>32 AND v4<=37));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>63 AND v3 BETWEEN 43 AND 50 AND v4<29 AND v2>=89) OR (v1>80));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 63) AND (test.v3 BETWEEN 43 AND 50)) AND (test.v4 < 29)) AND (test.v2 >= 89)) OR (test.v1 > 80))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>63 AND v3 BETWEEN 43 AND 50 AND v4<29 AND v2>=89) OR (v1>80));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=81) OR (v1>=27 AND v2>=21 AND v3 BETWEEN 1 AND 63 AND v4>=92));",
				Expected: []sql.Row{{"Filter((test.v1 >= 81) OR ((((test.v1 >= 27) AND (test.v2 >= 21)) AND (test.v3 BETWEEN 1 AND 63)) AND (test.v4 >= 92)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=81) OR (v1>=27 AND v2>=21 AND v3 BETWEEN 1 AND 63 AND v4>=92));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>13) OR (v1>72 AND v2=2 AND v3<=40)) OR (v1>77 AND v2<21));",
				Expected: []sql.Row{{"Filter(((test.v1 > 13) OR (((test.v1 > 72) AND (test.v2 = 2)) AND (test.v3 <= 40))) OR ((test.v1 > 77) AND (test.v2 < 21)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>13) OR (v1>72 AND v2=2 AND v3<=40)) OR (v1>77 AND v2<21));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>54 AND v2>23 AND v3 BETWEEN 28 AND 48 AND v4>=37) OR (v1>93 AND v2>=51 AND v3<9 AND v4<>49)) OR (v1>=71 AND v2<>33));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 54))) AND (test.v2 > 23)) AND (test.v3 BETWEEN 28 AND 48)) AND (test.v4 >= 37)) OR ((((test.v1 > 93) AND (test.v2 >= 51)) AND (test.v3 < 9)) AND (NOT((test.v4 = 49))))) OR ((test.v1 >= 71) AND (NOT((test.v2 = 33)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>54 AND v2>23 AND v3 BETWEEN 28 AND 48 AND v4>=37) OR (v1>93 AND v2>=51 AND v3<9 AND v4<>49)) OR (v1>=71 AND v2<>33));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {10, 5, 32, 30, 48}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 15 AND 69 AND v4=83 AND v2<=43) OR (v1<51 AND v2<24 AND v3<>27 AND v4<>50)) OR (v1<>37));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 15 AND 69) AND (test.v4 = 83)) AND (test.v2 <= 43)) OR ((((test.v1 < 51) AND (test.v2 < 24)) AND (NOT((test.v3 = 27)))) AND (NOT((test.v4 = 50))))) OR (NOT((test.v1 = 37))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 15 AND 69 AND v4=83 AND v2<=43) OR (v1<51 AND v2<24 AND v3<>27 AND v4<>50)) OR (v1<>37));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 55 AND 66 AND v2<>81 AND v3=6 AND v4<=19) OR (v1<>91));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 55 AND 66) AND (NOT((test.v2 = 81)))) AND (test.v3 = 6)) AND (test.v4 <= 19)) OR (NOT((test.v1 = 91))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 55 AND 66 AND v2<>81 AND v3=6 AND v4<=19) OR (v1<>91));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=21 AND v2<50 AND v3>=39) OR (v1<=79 AND v4>62 AND v2=31));",
				Expected: []sql.Row{{"Filter((((test.v1 = 21) AND (test.v2 < 50)) AND (test.v3 >= 39)) OR (((test.v1 <= 79) AND (test.v4 > 62)) AND (test.v2 = 31)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=21 AND v2<50 AND v3>=39) OR (v1<=79 AND v4>62 AND v2=31));",
				Expected: []sql.Row{{5, 3, 31, 22, 81}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>78) OR (v1>=9 AND v2<>84));",
				Expected: []sql.Row{{"Filter((test.v1 > 78) OR ((test.v1 >= 9) AND (NOT((test.v2 = 84)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>78) OR (v1>=9 AND v2<>84));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>16 AND v3>=29) OR (v1>=47 AND v2<>63));",
				Expected: []sql.Row{{"Filter(((test.v1 > 16) AND (test.v3 >= 29)) OR ((test.v1 >= 47) AND (NOT((test.v2 = 63)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>16 AND v3>=29) OR (v1>=47 AND v2<>63));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=16 AND v2>=9 AND v3<>48) OR (v1>=76 AND v2<>86)) OR (v1<28 AND v2=1 AND v3<=23 AND v4 BETWEEN 13 AND 55));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 16) AND (test.v2 >= 9)) AND (NOT((test.v3 = 48)))) OR ((test.v1 >= 76) AND (NOT((test.v2 = 86))))) OR ((((test.v1 < 28) AND (test.v2 = 1)) AND (test.v3 <= 23)) AND (test.v4 BETWEEN 13 AND 55)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=16 AND v2>=9 AND v3<>48) OR (v1>=76 AND v2<>86)) OR (v1<28 AND v2=1 AND v3<=23 AND v4 BETWEEN 13 AND 55));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {81, 76, 74, 97, 18}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=35 AND v2>67) OR (v1<>55));",
				Expected: []sql.Row{{"Filter(((test.v1 = 35) AND (test.v2 > 67)) OR (NOT((test.v1 = 55))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=35 AND v2>67) OR (v1<>55));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<89 AND v2<5 AND v3 BETWEEN 53 AND 61) OR (v1<>72 AND v3<20));",
				Expected: []sql.Row{{"Filter((((test.v1 < 89) AND (test.v2 < 5)) AND (test.v3 BETWEEN 53 AND 61)) OR ((NOT((test.v1 = 72))) AND (test.v3 < 20)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<89 AND v2<5 AND v3 BETWEEN 53 AND 61) OR (v1<>72 AND v3<20));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {24, 17, 49, 14, 7}, {39, 34, 87, 13, 51}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {37, 33, 86, 12, 22}, {30, 23, 43, 13, 11}, {77, 73, 10, 2, 0}, {58, 50, 97, 0, 79}, {73, 70, 40, 19, 5}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=58 AND v2<=89 AND v3=78 AND v4<=58) OR (v1>39)) AND (v1<>25 AND v2>1 AND v3<18);",
				Expected: []sql.Row{{"Filter((((((test.v1 = 58) AND (test.v2 <= 89)) AND (test.v3 = 78)) AND (test.v4 <= 58)) OR (test.v1 > 39)) AND (((NOT((test.v1 = 25))) AND (test.v2 > 1)) AND (test.v3 < 18)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=58 AND v2<=89 AND v3=78 AND v4<=58) OR (v1>39)) AND (v1<>25 AND v2>1 AND v3<18);",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {90, 87, 23, 16, 63}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {77, 73, 10, 2, 0}, {58, 50, 97, 0, 79}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>94) OR (v1=33 AND v2 BETWEEN 53 AND 60 AND v3 BETWEEN 37 AND 73));",
				Expected: []sql.Row{{"Filter((test.v1 > 94) OR (((test.v1 = 33) AND (test.v2 BETWEEN 53 AND 60)) AND (test.v3 BETWEEN 37 AND 73)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>94) OR (v1=33 AND v2 BETWEEN 53 AND 60 AND v3 BETWEEN 37 AND 73));",
				Expected: []sql.Row{{36, 33, 53, 56, 88}, {100, 96, 73, 38, 38}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=40 AND v2<>8 AND v3<=69) OR (v1<=72)) OR (v1 BETWEEN 87 AND 89 AND v2 BETWEEN 52 AND 58));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 40) AND (NOT((test.v2 = 8)))) AND (test.v3 <= 69)) OR (test.v1 <= 72)) OR ((test.v1 BETWEEN 87 AND 89) AND (test.v2 BETWEEN 52 AND 58)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=40 AND v2<>8 AND v3<=69) OR (v1<=72)) OR (v1 BETWEEN 87 AND 89 AND v2 BETWEEN 52 AND 58));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<9 AND v2=97 AND v3<>54 AND v4>71) OR (v1>48 AND v2 BETWEEN 7 AND 23 AND v3<>95 AND v4>86)) OR (v1 BETWEEN 36 AND 90));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 9) AND (test.v2 = 97)) AND (NOT((test.v3 = 54)))) AND (test.v4 > 71)) OR ((((test.v1 > 48) AND (test.v2 BETWEEN 7 AND 23)) AND (NOT((test.v3 = 95)))) AND (test.v4 > 86))) OR (test.v1 BETWEEN 36 AND 90))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<9 AND v2=97 AND v3<>54 AND v4>71) OR (v1>48 AND v2 BETWEEN 7 AND 23 AND v3<>95 AND v4>86)) OR (v1 BETWEEN 36 AND 90));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=38 AND v2<70) OR (v1>79));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 38) AND (test.v2 < 70)) OR (test.v1 > 79))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=38 AND v2<70) OR (v1>79));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<47 AND v2 BETWEEN 22 AND 85) AND (v1=73) OR (v1<42));",
				Expected: []sql.Row{{"Filter((((test.v1 < 47) AND (test.v2 BETWEEN 22 AND 85)) AND (test.v1 = 73)) OR (test.v1 < 42))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<47 AND v2 BETWEEN 22 AND 85) AND (v1=73) OR (v1<42));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<29) AND (v1<41 AND v2>52 AND v3<>55) OR (v1 BETWEEN 16 AND 28 AND v2>=9 AND v3=43 AND v4<6));",
				Expected: []sql.Row{{"Filter(((test.v1 < 29) AND (((test.v1 < 41) AND (test.v2 > 52)) AND (NOT((test.v3 = 55))))) OR ((((test.v1 BETWEEN 16 AND 28) AND (test.v2 >= 9)) AND (test.v3 = 43)) AND (test.v4 < 6)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<29) AND (v1<41 AND v2>52 AND v3<>55) OR (v1 BETWEEN 16 AND 28 AND v2>=9 AND v3=43 AND v4<6));",
				Expected: []sql.Row{{11, 5, 76, 70, 46}, {15, 8, 54, 46, 87}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {1, 0, 55, 14, 32}, {25, 17, 75, 86, 18}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<56 AND v2<=52) OR (v1>=30 AND v2<73 AND v3>40 AND v4>=13)) AND (v1<30 AND v4<>25 AND v2<>82 AND v3 BETWEEN 80 AND 88);",
				Expected: []sql.Row{{"Filter((((test.v1 < 56) AND (test.v2 <= 52)) OR ((((test.v1 >= 30) AND (test.v2 < 73)) AND (test.v3 > 40)) AND (test.v4 >= 13))) AND ((((test.v1 < 30) AND (NOT((test.v4 = 25)))) AND (NOT((test.v2 = 82)))) AND (test.v3 BETWEEN 80 AND 88)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<56 AND v2<=52) OR (v1>=30 AND v2<73 AND v3>40 AND v4>=13)) AND (v1<30 AND v4<>25 AND v2<>82 AND v3 BETWEEN 80 AND 88);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 9 AND 53 AND v2 BETWEEN 26 AND 56) OR (v1 BETWEEN 29 AND 72 AND v2<18 AND v3=73 AND v4<=12));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 9 AND 53) AND (test.v2 BETWEEN 26 AND 56)) OR ((((test.v1 BETWEEN 29 AND 72) AND (test.v2 < 18)) AND (test.v3 = 73)) AND (test.v4 <= 12)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 9 AND 53 AND v2 BETWEEN 26 AND 56) OR (v1 BETWEEN 29 AND 72 AND v2<18 AND v3=73 AND v4<=12));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {56, 50, 39, 26, 37}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {21, 12, 42, 15, 31}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {38, 34, 55, 37, 34}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>96 AND v2<27) OR (v1<82)) AND (v1>=80 AND v2 BETWEEN 14 AND 53);",
				Expected: []sql.Row{{"Filter((((test.v1 > 96) AND (test.v2 < 27)) OR (test.v1 < 82)) AND ((test.v1 >= 80) AND (test.v2 BETWEEN 14 AND 53)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>96 AND v2<27) OR (v1<82)) AND (v1>=80 AND v2 BETWEEN 14 AND 53);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>86) OR (v1>=48 AND v4>9));",
				Expected: []sql.Row{{"Filter((test.v1 > 86) OR ((test.v1 >= 48) AND (test.v4 > 9)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>86) OR (v1>=48 AND v4>9));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=41 AND v2=79 AND v3<16 AND v4>=2) OR (v1<16 AND v4>59));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 41) AND (test.v2 = 79)) AND (test.v3 < 16)) AND (test.v4 >= 2)) OR ((test.v1 < 16) AND (test.v4 > 59)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=41 AND v2=79 AND v3<16 AND v4>=2) OR (v1<16 AND v4>59));",
				Expected: []sql.Row{{20, 12, 0, 33, 62}, {23, 15, 42, 17, 60}, {17, 9, 7, 74, 92}, {0, 0, 33, 2, 67}, {15, 8, 54, 46, 87}, {5, 3, 31, 22, 81}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {7, 4, 10, 53, 69}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=69 AND v2 BETWEEN 38 AND 45) AND (v1<>35 AND v2<28 AND v3>14);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 69) AND (test.v2 BETWEEN 38 AND 45)) AND (((NOT((test.v1 = 35))) AND (test.v2 < 28)) AND (test.v3 > 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=69 AND v2 BETWEEN 38 AND 45) AND (v1<>35 AND v2<28 AND v3>14);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=93 AND v2<=10 AND v3 BETWEEN 21 AND 83) AND (v1<>5 AND v2>59 AND v3<>17) OR (v1<69 AND v3<>65 AND v4>=51 AND v2<=48)) OR (v1 BETWEEN 37 AND 57 AND v2 BETWEEN 44 AND 57 AND v3<40 AND v4=98));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 93) AND (test.v2 <= 10)) AND (test.v3 BETWEEN 21 AND 83)) AND (((NOT((test.v1 = 5))) AND (test.v2 > 59)) AND (NOT((test.v3 = 17))))) OR ((((test.v1 < 69) AND (NOT((test.v3 = 65)))) AND (test.v4 >= 51)) AND (test.v2 <= 48))) OR ((((test.v1 BETWEEN 37 AND 57) AND (test.v2 BETWEEN 44 AND 57)) AND (test.v3 < 40)) AND (test.v4 = 98)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=93 AND v2<=10 AND v3 BETWEEN 21 AND 83) AND (v1<>5 AND v2>59 AND v3<>17) OR (v1<69 AND v3<>65 AND v4>=51 AND v2<=48)) OR (v1 BETWEEN 37 AND 57 AND v2 BETWEEN 44 AND 57 AND v3<40 AND v4=98));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {67, 64, 26, 77, 97}, {17, 9, 7, 74, 92}, {0, 0, 33, 2, 67}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {46, 39, 45, 75, 55}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<46) OR (v1<>60));",
				Expected: []sql.Row{{"Filter((test.v1 < 46) OR (NOT((test.v1 = 60))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<46) OR (v1<>60));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<97 AND v2<=47 AND v3=91) OR (v1=74 AND v4>72 AND v2<>44 AND v3 BETWEEN 4 AND 51));",
				Expected: []sql.Row{{"Filter((((test.v1 < 97) AND (test.v2 <= 47)) AND (test.v3 = 91)) OR ((((test.v1 = 74) AND (test.v4 > 72)) AND (NOT((test.v2 = 44)))) AND (test.v3 BETWEEN 4 AND 51)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<97 AND v2<=47 AND v3=91) OR (v1=74 AND v4>72 AND v2<>44 AND v3 BETWEEN 4 AND 51));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 26 AND 60 AND v2>53 AND v3<=9 AND v4<8) OR (v1>0 AND v2<=69));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 26 AND 60) AND (test.v2 > 53)) AND (test.v3 <= 9)) AND (test.v4 < 8)) OR ((test.v1 > 0) AND (test.v2 <= 69)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 26 AND 60 AND v2>53 AND v3<=9 AND v4<8) OR (v1>0 AND v2<=69));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=33 AND v2<2 AND v3<>63) OR (v1 BETWEEN 20 AND 95 AND v2<>7 AND v3 BETWEEN 95 AND 96 AND v4 BETWEEN 34 AND 41)) OR (v1 BETWEEN 27 AND 44 AND v4<>28 AND v2<=43 AND v3<=64));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 33) AND (test.v2 < 2)) AND (NOT((test.v3 = 63)))) OR ((((test.v1 BETWEEN 20 AND 95) AND (NOT((test.v2 = 7)))) AND (test.v3 BETWEEN 95 AND 96)) AND (test.v4 BETWEEN 34 AND 41))) OR ((((test.v1 BETWEEN 27 AND 44) AND (NOT((test.v4 = 28)))) AND (test.v2 <= 43)) AND (test.v3 <= 64)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=33 AND v2<2 AND v3<>63) OR (v1 BETWEEN 20 AND 95 AND v2<>7 AND v3 BETWEEN 95 AND 96 AND v4 BETWEEN 34 AND 41)) OR (v1 BETWEEN 27 AND 44 AND v4<>28 AND v2<=43 AND v3<=64));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {43, 37, 35, 6, 44}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 13 AND 36 AND v2>40) OR (v1<>28 AND v2<29)) OR (v1 BETWEEN 36 AND 89 AND v2>=92 AND v3>39 AND v4<16)) OR (v1<=1));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 13 AND 36) AND (test.v2 > 40)) OR ((NOT((test.v1 = 28))) AND (test.v2 < 29))) OR ((((test.v1 BETWEEN 36 AND 89) AND (test.v2 >= 92)) AND (test.v3 > 39)) AND (test.v4 < 16))) OR (test.v1 <= 1))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 13 AND 36 AND v2>40) OR (v1<>28 AND v2<29)) OR (v1 BETWEEN 36 AND 89 AND v2>=92 AND v3>39 AND v4<16)) OR (v1<=1));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {39, 34, 87, 13, 51}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=68 AND v2=49) OR (v1<=35 AND v2>=59 AND v3>=88 AND v4 BETWEEN 1 AND 62));",
				Expected: []sql.Row{{"Filter(((test.v1 = 68) AND (test.v2 = 49)) OR ((((test.v1 <= 35) AND (test.v2 >= 59)) AND (test.v3 >= 88)) AND (test.v4 BETWEEN 1 AND 62)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=68 AND v2=49) OR (v1<=35 AND v2>=59 AND v3>=88 AND v4 BETWEEN 1 AND 62));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>33) OR (v1<23 AND v4<=23 AND v2>=41));",
				Expected: []sql.Row{{"Filter((test.v1 > 33) OR (((test.v1 < 23) AND (test.v4 <= 23)) AND (test.v2 >= 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>33) OR (v1<23 AND v4<=23 AND v2>=41));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {24, 17, 49, 14, 7}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {25, 17, 75, 86, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=78 AND v2=26 AND v3 BETWEEN 70 AND 89) OR (v1 BETWEEN 12 AND 78 AND v2>41 AND v3 BETWEEN 2 AND 11 AND v4 BETWEEN 12 AND 97)) OR (v1>16 AND v2=85 AND v3<56 AND v4<19));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 78) AND (test.v2 = 26)) AND (test.v3 BETWEEN 70 AND 89)) OR ((((test.v1 BETWEEN 12 AND 78) AND (test.v2 > 41)) AND (test.v3 BETWEEN 2 AND 11)) AND (test.v4 BETWEEN 12 AND 97))) OR ((((test.v1 > 16) AND (test.v2 = 85)) AND (test.v3 < 56)) AND (test.v4 < 19)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=78 AND v2=26 AND v3 BETWEEN 70 AND 89) OR (v1 BETWEEN 12 AND 78 AND v2>41 AND v3 BETWEEN 2 AND 11 AND v4 BETWEEN 12 AND 97)) OR (v1>16 AND v2=85 AND v3<56 AND v4<19));",
				Expected: []sql.Row{{70, 66, 97, 6, 39}, {57, 50, 79, 10, 12}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=51 AND v2=3 AND v3>48 AND v4>=49) OR (v1>25 AND v3=37));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 51) AND (test.v2 = 3)) AND (test.v3 > 48)) AND (test.v4 >= 49)) OR ((test.v1 > 25) AND (test.v3 = 37)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=51 AND v2=3 AND v3>48 AND v4>=49) OR (v1>25 AND v3=37));",
				Expected: []sql.Row{{38, 34, 55, 37, 34}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<4 AND v2<>1 AND v3<=34) OR (v1>=63)) OR (v1<58 AND v2=33)) AND (v1<=55) OR (v1 BETWEEN 1 AND 80 AND v2<=51));",
				Expected: []sql.Row{{"Filter(((((((test.v1 < 4) AND (NOT((test.v2 = 1)))) AND (test.v3 <= 34)) OR (test.v1 >= 63)) OR ((test.v1 < 58) AND (test.v2 = 33))) AND (test.v1 <= 55)) OR ((test.v1 BETWEEN 1 AND 80) AND (test.v2 <= 51)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<4 AND v2<>1 AND v3<=34) OR (v1>=63)) OR (v1<58 AND v2=33)) AND (v1<=55) OR (v1 BETWEEN 1 AND 80 AND v2<=51));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 33 AND 82 AND v2<26) OR (v1>=98 AND v4>30 AND v2 BETWEEN 47 AND 67 AND v3 BETWEEN 9 AND 54)) OR (v1>=5)) AND (v1<>85 AND v4<>31);",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 33 AND 82) AND (test.v2 < 26)) OR ((((test.v1 >= 98) AND (test.v4 > 30)) AND (test.v2 BETWEEN 47 AND 67)) AND (test.v3 BETWEEN 9 AND 54))) OR (test.v1 >= 5)) AND ((NOT((test.v1 = 85))) AND (NOT((test.v4 = 31)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 33 AND 82 AND v2<26) OR (v1>=98 AND v4>30 AND v2 BETWEEN 47 AND 67 AND v3 BETWEEN 9 AND 54)) OR (v1>=5)) AND (v1<>85 AND v4<>31);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {9, 5, 17, 52, 13}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=82 AND v3<>55 AND v4>26) OR (v1=35)) OR (v1 BETWEEN 18 AND 70 AND v2>=17));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 82) AND (NOT((test.v3 = 55)))) AND (test.v4 > 26)) OR (test.v1 = 35)) OR ((test.v1 BETWEEN 18 AND 70) AND (test.v2 >= 17)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=82 AND v3<>55 AND v4>26) OR (v1=35)) OR (v1 BETWEEN 18 AND 70 AND v2>=17));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {84, 82, 70, 5, 47}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>45 AND v2<=55 AND v3>=2 AND v4<46) OR (v1>=0 AND v2<>6));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 45))) AND (test.v2 <= 55)) AND (test.v3 >= 2)) AND (test.v4 < 46)) OR ((test.v1 >= 0) AND (NOT((test.v2 = 6)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>45 AND v2<=55 AND v3>=2 AND v4<46) OR (v1>=0 AND v2<>6));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=85 AND v2>=46 AND v3=87 AND v4>3) OR (v1=52));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 85) AND (test.v2 >= 46)) AND (test.v3 = 87)) AND (test.v4 > 3)) OR (test.v1 = 52))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=85 AND v2>=46 AND v3=87 AND v4>3) OR (v1=52));",
				Expected: []sql.Row{{60, 52, 72, 44, 2}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<90 AND v4=77) OR (v1<>32 AND v2<=17 AND v3=68)) OR (v1<41));",
				Expected: []sql.Row{{"Filter((((test.v1 < 90) AND (test.v4 = 77)) OR (((NOT((test.v1 = 32))) AND (test.v2 <= 17)) AND (test.v3 = 68))) OR (test.v1 < 41))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<90 AND v4=77) OR (v1<>32 AND v2<=17 AND v3=68)) OR (v1<41));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=2) AND (v1>=13 AND v2<=23 AND v3<=23) OR (v1 BETWEEN 18 AND 57));",
				Expected: []sql.Row{{"Filter(((test.v1 = 2) AND (((test.v1 >= 13) AND (test.v2 <= 23)) AND (test.v3 <= 23))) OR (test.v1 BETWEEN 18 AND 57))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=2) AND (v1>=13 AND v2<=23 AND v3<=23) OR (v1 BETWEEN 18 AND 57));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 32 AND 72 AND v2<>89 AND v3>=39) OR (v1>50 AND v4>80));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 32 AND 72) AND (NOT((test.v2 = 89)))) AND (test.v3 >= 39)) OR ((test.v1 > 50) AND (test.v4 > 80)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 32 AND 72 AND v2<>89 AND v3>=39) OR (v1>50 AND v4>80));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {67, 64, 26, 77, 97}, {92, 88, 57, 12, 88}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {89, 86, 7, 57, 96}, {42, 36, 7, 40, 16}, {46, 39, 45, 75, 55}, {34, 32, 16, 97, 29}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<44) OR (v1<>37 AND v2<=12 AND v3>65 AND v4<47)) OR (v1<>76));",
				Expected: []sql.Row{{"Filter(((test.v1 < 44) OR ((((NOT((test.v1 = 37))) AND (test.v2 <= 12)) AND (test.v3 > 65)) AND (test.v4 < 47))) OR (NOT((test.v1 = 76))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<44) OR (v1<>37 AND v2<=12 AND v3>65 AND v4<47)) OR (v1<>76));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 29 AND 37) OR (v1<>54 AND v2<=65 AND v3<=1 AND v4<>10)) OR (v1<>55 AND v2 BETWEEN 49 AND 56 AND v3>=25 AND v4<=8));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 29 AND 37) OR ((((NOT((test.v1 = 54))) AND (test.v2 <= 65)) AND (test.v3 <= 1)) AND (NOT((test.v4 = 10))))) OR ((((NOT((test.v1 = 55))) AND (test.v2 BETWEEN 49 AND 56)) AND (test.v3 >= 25)) AND (test.v4 <= 8)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 29 AND 37) OR (v1<>54 AND v2<=65 AND v3<=1 AND v4<>10)) OR (v1<>55 AND v2 BETWEEN 49 AND 56 AND v3>=25 AND v4<=8));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {40, 34, 89, 27, 90}, {35, 33, 29, 69, 6}, {43, 37, 35, 6, 44}, {95, 90, 25, 0, 17}, {36, 33, 53, 56, 88}, {39, 34, 87, 13, 51}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {33, 29, 72, 97, 93}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=80 AND v2<95 AND v3>6) OR (v1 BETWEEN 7 AND 14 AND v2 BETWEEN 27 AND 49 AND v3>57 AND v4 BETWEEN 28 AND 60));",
				Expected: []sql.Row{{"Filter((((test.v1 = 80) AND (test.v2 < 95)) AND (test.v3 > 6)) OR ((((test.v1 BETWEEN 7 AND 14) AND (test.v2 BETWEEN 27 AND 49)) AND (test.v3 > 57)) AND (test.v4 BETWEEN 28 AND 60)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=80 AND v2<95 AND v3>6) OR (v1 BETWEEN 7 AND 14 AND v2 BETWEEN 27 AND 49 AND v3>57 AND v4 BETWEEN 28 AND 60));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>10 AND v2<43 AND v3<>15) OR (v1<=71 AND v4<>22));",
				Expected: []sql.Row{{"Filter((((test.v1 > 10) AND (test.v2 < 43)) AND (NOT((test.v3 = 15)))) OR ((test.v1 <= 71) AND (NOT((test.v4 = 22)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>10 AND v2<43 AND v3<>15) OR (v1<=71 AND v4<>22));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 18 AND 36 AND v4<>87 AND v2>=13) OR (v1>=63 AND v3<=89)) AND (v1<76 AND v4<49 AND v2<=96);",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 18 AND 36) AND (NOT((test.v4 = 87)))) AND (test.v2 >= 13)) OR ((test.v1 >= 63) AND (test.v3 <= 89))) AND (((test.v1 < 76) AND (test.v4 < 49)) AND (test.v2 <= 96)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 18 AND 36 AND v4<>87 AND v2>=13) OR (v1>=63 AND v3<=89)) AND (v1<76 AND v4<49 AND v2<=96);",
				Expected: []sql.Row{{35, 33, 29, 69, 6}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {78, 73, 91, 56, 0}, {66, 64, 23, 33, 5}, {31, 24, 26, 69, 25}, {79, 74, 22, 42, 16}, {38, 34, 55, 37, 34}, {74, 70, 56, 21, 22}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<93 AND v2<>16) OR (v1>=23 AND v4>=19)) OR (v1<48 AND v2<=45 AND v3<>46 AND v4>76)) AND (v1=22 AND v3=41) OR (v1<=17 AND v2>=41));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 93) AND (NOT((test.v2 = 16)))) OR ((test.v1 >= 23) AND (test.v4 >= 19))) OR ((((test.v1 < 48) AND (test.v2 <= 45)) AND (NOT((test.v3 = 46)))) AND (test.v4 > 76))) AND ((test.v1 = 22) AND (test.v3 = 41))) OR ((test.v1 <= 17) AND (test.v2 >= 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<93 AND v2<>16) OR (v1>=23 AND v4>=19)) OR (v1<48 AND v2<=45 AND v3<>46 AND v4>76)) AND (v1=22 AND v3=41) OR (v1<=17 AND v2>=41));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {25, 17, 75, 86, 18}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>17 AND v4>50 AND v2 BETWEEN 11 AND 23 AND v3=23) OR (v1<73));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 17) AND (test.v4 > 50)) AND (test.v2 BETWEEN 11 AND 23)) AND (test.v3 = 23)) OR (test.v1 < 73))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>17 AND v4>50 AND v2 BETWEEN 11 AND 23 AND v3=23) OR (v1<73));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 5 AND 41 AND v3<78 AND v4<41) OR (v1>84 AND v2<>43));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 5 AND 41) AND (test.v3 < 78)) AND (test.v4 < 41)) OR ((test.v1 > 84) AND (NOT((test.v2 = 43)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 5 AND 41 AND v3<78 AND v4<41) OR (v1>84 AND v2<>43));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {35, 33, 29, 69, 6}, {90, 87, 23, 16, 63}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {16, 8, 99, 43, 1}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {18, 9, 19, 38, 35}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=24 AND v2 BETWEEN 43 AND 84) OR (v1>=90 AND v2>1 AND v3<>70)) OR (v1>=66 AND v2<95));",
				Expected: []sql.Row{{"Filter((((test.v1 = 24) AND (test.v2 BETWEEN 43 AND 84)) OR (((test.v1 >= 90) AND (test.v2 > 1)) AND (NOT((test.v3 = 70))))) OR ((test.v1 >= 66) AND (test.v2 < 95)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=24 AND v2 BETWEEN 43 AND 84) OR (v1>=90 AND v2>1 AND v3<>70)) OR (v1>=66 AND v2<95));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=18 AND v2<=70) OR (v1>55 AND v2>52 AND v3<>70)) OR (v1=58)) AND (v1<>22 AND v4>76) OR (v1>14 AND v2<32 AND v3>97));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 18) AND (test.v2 <= 70)) OR (((test.v1 > 55) AND (test.v2 > 52)) AND (NOT((test.v3 = 70))))) OR (test.v1 = 58)) AND ((NOT((test.v1 = 22))) AND (test.v4 > 76))) OR (((test.v1 > 14) AND (test.v2 < 32)) AND (test.v3 > 97)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=18 AND v2<=70) OR (v1>55 AND v2>52 AND v3<>70)) OR (v1=58)) AND (v1<>22 AND v4>76) OR (v1>14 AND v2<32 AND v3>97));",
				Expected: []sql.Row{{92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {15, 8, 54, 46, 87}, {5, 3, 31, 22, 81}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=9 AND v2>69) AND (v1 BETWEEN 39 AND 73);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 9) AND (test.v2 > 69)) AND (test.v1 BETWEEN 39 AND 73))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=9 AND v2>69) AND (v1 BETWEEN 39 AND 73);",
				Expected: []sql.Row{{52, 47, 94, 56, 21}, {72, 69, 81, 70, 37}, {78, 73, 91, 56, 0}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {57, 50, 79, 10, 12}, {60, 52, 72, 44, 2}, {58, 50, 97, 0, 79}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<87 AND v2 BETWEEN 2 AND 34 AND v3=87 AND v4>=76) OR (v1<>77 AND v2<=44 AND v3>34));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 87) AND (test.v2 BETWEEN 2 AND 34)) AND (test.v3 = 87)) AND (test.v4 >= 76)) OR (((NOT((test.v1 = 77))) AND (test.v2 <= 44)) AND (test.v3 > 34)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<87 AND v2 BETWEEN 2 AND 34 AND v3=87 AND v4>=76) OR (v1<>77 AND v2<=44 AND v3>34));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {98, 94, 43, 71, 43}, {48, 41, 21, 82, 54}, {35, 33, 29, 69, 6}, {68, 64, 41, 74, 85}, {82, 82, 29, 66, 71}, {9, 5, 17, 52, 13}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {17, 9, 7, 74, 92}, {86, 83, 41, 53, 57}, {31, 24, 26, 69, 25}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {34, 32, 16, 97, 29}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=9 AND v4>=68 AND v2>21) OR (v1=5 AND v2<69 AND v3<=15 AND v4>=61));",
				Expected: []sql.Row{{"Filter((((test.v1 = 9) AND (test.v4 >= 68)) AND (test.v2 > 21)) OR ((((test.v1 = 5) AND (test.v2 < 69)) AND (test.v3 <= 15)) AND (test.v4 >= 61)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=9 AND v4>=68 AND v2>21) OR (v1=5 AND v2<69 AND v3<=15 AND v4>=61));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=22) OR (v1>55));",
				Expected: []sql.Row{{"Filter((test.v1 = 22) OR (test.v1 > 55))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=22) OR (v1>55));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 47 AND 57 AND v2>=83) OR (v1=91 AND v2>34));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 47 AND 57) AND (test.v2 >= 83)) OR ((test.v1 = 91) AND (test.v2 > 34)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 47 AND 57 AND v2>=83) OR (v1=91 AND v2>34));",
				Expected: []sql.Row{{52, 47, 94, 56, 21}, {59, 51, 97, 39, 36}, {58, 50, 97, 0, 79}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 23 AND 25) AND (v1<98 AND v2>=20 AND v3>37);",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 23 AND 25) AND (((test.v1 < 98) AND (test.v2 >= 20)) AND (test.v3 > 37)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 23 AND 25) AND (v1<98 AND v2>=20 AND v3>37);",
				Expected: []sql.Row{{31, 24, 26, 69, 25}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=6) OR (v1>61 AND v2<=34)) OR (v1>10 AND v2<>50 AND v3<>62 AND v4<=84));",
				Expected: []sql.Row{{"Filter(((test.v1 = 6) OR ((test.v1 > 61) AND (test.v2 <= 34))) OR ((((test.v1 > 10) AND (NOT((test.v2 = 50)))) AND (NOT((test.v3 = 62)))) AND (test.v4 <= 84)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=6) OR (v1>61 AND v2<=34)) OR (v1>10 AND v2<>50 AND v3<>62 AND v4<=84));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>74) OR (v1<>86 AND v2<=91)) AND (v1>=8);",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 74))) OR ((NOT((test.v1 = 86))) AND (test.v2 <= 91))) AND (test.v1 >= 8))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>74) OR (v1<>86 AND v2<=91)) AND (v1>=8);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>25 AND v2 BETWEEN 23 AND 54) OR (v1<>40 AND v3>90)) OR (v1<>7 AND v4<=78));",
				Expected: []sql.Row{{"Filter((((test.v1 > 25) AND (test.v2 BETWEEN 23 AND 54)) OR ((NOT((test.v1 = 40))) AND (test.v3 > 90))) OR ((NOT((test.v1 = 7))) AND (test.v4 <= 78)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>25 AND v2 BETWEEN 23 AND 54) OR (v1<>40 AND v3>90)) OR (v1<>7 AND v4<=78));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=25) OR (v1>40 AND v2 BETWEEN 26 AND 40 AND v3<76));",
				Expected: []sql.Row{{"Filter((test.v1 = 25) OR (((test.v1 > 40) AND (test.v2 BETWEEN 26 AND 40)) AND (test.v3 < 76)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=25) OR (v1>40 AND v2 BETWEEN 26 AND 40 AND v3<76));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {85, 83, 37, 36, 16}, {55, 50, 36, 73, 58}, {73, 70, 40, 19, 5}, {63, 55, 31, 29, 92}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=13 AND v2<85) OR (v1=23 AND v2<>68 AND v3=33));",
				Expected: []sql.Row{{"Filter(((test.v1 = 13) AND (test.v2 < 85)) OR (((test.v1 = 23) AND (NOT((test.v2 = 68)))) AND (test.v3 = 33)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=13 AND v2<85) OR (v1=23 AND v2<>68 AND v3=33));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<42 AND v2>95 AND v3>17 AND v4<>97) OR (v1>=13 AND v2<>10 AND v3 BETWEEN 73 AND 85 AND v4=48)) OR (v1>55 AND v2=85 AND v3>30));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 42) AND (test.v2 > 95)) AND (test.v3 > 17)) AND (NOT((test.v4 = 97)))) OR ((((test.v1 >= 13) AND (NOT((test.v2 = 10)))) AND (test.v3 BETWEEN 73 AND 85)) AND (test.v4 = 48))) OR (((test.v1 > 55) AND (test.v2 = 85)) AND (test.v3 > 30)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<42 AND v2>95 AND v3>17 AND v4<>97) OR (v1>=13 AND v2<>10 AND v3 BETWEEN 73 AND 85 AND v4=48)) OR (v1>55 AND v2=85 AND v3>30));",
				Expected: []sql.Row{{16, 8, 99, 43, 1}, {29, 22, 98, 22, 21}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 5 AND 32) OR (v1>7)) OR (v1=34));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 5 AND 32) OR (test.v1 > 7)) OR (test.v1 = 34))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 5 AND 32) OR (v1>7)) OR (v1=34));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=34 AND v2<>61 AND v3<>3) AND (v1 BETWEEN 69 AND 93) AND (v1=36 AND v2>14);",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 34) AND (NOT((test.v2 = 61)))) AND (NOT((test.v3 = 3)))) AND (test.v1 BETWEEN 69 AND 93)) AND ((test.v1 = 36) AND (test.v2 > 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=34 AND v2<>61 AND v3<>3) AND (v1 BETWEEN 69 AND 93) AND (v1=36 AND v2>14);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>75) OR (v1<>74 AND v3 BETWEEN 29 AND 73));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 75))) OR ((NOT((test.v1 = 74))) AND (test.v3 BETWEEN 29 AND 73)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>75) OR (v1<>74 AND v3 BETWEEN 29 AND 73));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<>91 AND v3=27 AND v4=22 AND v2<>68) AND (v1<=88);",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 91))) AND (test.v3 = 27)) AND (test.v4 = 22)) AND (NOT((test.v2 = 68)))) AND (test.v1 <= 88))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<>91 AND v3=27 AND v4=22 AND v2<>68) AND (v1<=88);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>18 AND v2<>90 AND v3>95) OR (v1>=44)) OR (v1<4 AND v3<=26 AND v4<>67 AND v2>=37)) OR (v1<36 AND v2<=15 AND v3 BETWEEN 25 AND 36 AND v4<=14));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 18))) AND (NOT((test.v2 = 90)))) AND (test.v3 > 95)) OR (test.v1 >= 44)) OR ((((test.v1 < 4) AND (test.v3 <= 26)) AND (NOT((test.v4 = 67)))) AND (test.v2 >= 37))) OR ((((test.v1 < 36) AND (test.v2 <= 15)) AND (test.v3 BETWEEN 25 AND 36)) AND (test.v4 <= 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>18 AND v2<>90 AND v3>95) OR (v1>=44)) OR (v1<4 AND v3<=26 AND v4<>67 AND v2>=37)) OR (v1<36 AND v2<=15 AND v3 BETWEEN 25 AND 36 AND v4<=14));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 44 AND 87 AND v2<52 AND v3<52 AND v4<1) OR (v1<30 AND v4 BETWEEN 8 AND 97 AND v2<=24));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 44 AND 87) AND (test.v2 < 52)) AND (test.v3 < 52)) AND (test.v4 < 1)) OR (((test.v1 < 30) AND (test.v4 BETWEEN 8 AND 97)) AND (test.v2 <= 24)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 44 AND 87 AND v2<52 AND v3<52 AND v4<1) OR (v1<30 AND v4 BETWEEN 8 AND 97 AND v2<=24));",
				Expected: []sql.Row{{20, 12, 0, 33, 62}, {28, 22, 21, 28, 78}, {9, 5, 17, 52, 13}, {17, 9, 7, 74, 92}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {27, 21, 21, 32, 8}, {7, 4, 10, 53, 69}, {77, 73, 10, 2, 0}, {18, 9, 19, 38, 35}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>48 AND v2<=83) OR (v1>28 AND v2 BETWEEN 9 AND 87 AND v3<>73)) OR (v1>=53 AND v2>=91 AND v3 BETWEEN 33 AND 97));",
				Expected: []sql.Row{{"Filter((((test.v1 > 48) AND (test.v2 <= 83)) OR (((test.v1 > 28) AND (test.v2 BETWEEN 9 AND 87)) AND (NOT((test.v3 = 73))))) OR (((test.v1 >= 53) AND (test.v2 >= 91)) AND (test.v3 BETWEEN 33 AND 97)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>48 AND v2<=83) OR (v1>28 AND v2 BETWEEN 9 AND 87 AND v3<>73)) OR (v1>=53 AND v2>=91 AND v3 BETWEEN 33 AND 97));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>8 AND v2 BETWEEN 34 AND 48) OR (v1<>54));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 8))) AND (test.v2 BETWEEN 34 AND 48)) OR (NOT((test.v1 = 54))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>8 AND v2 BETWEEN 34 AND 48) OR (v1<>54));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=78 AND v2<74 AND v3<42 AND v4>=34) OR (v1<=29 AND v2<=27 AND v3>31 AND v4 BETWEEN 35 AND 41));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 78) AND (test.v2 < 74)) AND (test.v3 < 42)) AND (test.v4 >= 34)) OR ((((test.v1 <= 29) AND (test.v2 <= 27)) AND (test.v3 > 31)) AND (test.v4 BETWEEN 35 AND 41)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=78 AND v2<74 AND v3<42 AND v4>=34) OR (v1<=29 AND v2<=27 AND v3>31 AND v4 BETWEEN 35 AND 41));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {5, 3, 31, 22, 81}, {38, 34, 55, 37, 34}, {45, 38, 71, 22, 37}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 9 AND 35 AND v4<=69 AND v2 BETWEEN 34 AND 53 AND v3<>28) AND (v1 BETWEEN 12 AND 48);",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 9 AND 35) AND (test.v4 <= 69)) AND (test.v2 BETWEEN 34 AND 53)) AND (NOT((test.v3 = 28)))) AND (test.v1 BETWEEN 12 AND 48))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 9 AND 35 AND v4<=69 AND v2 BETWEEN 34 AND 53 AND v3<>28) AND (v1 BETWEEN 12 AND 48);",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {24, 17, 49, 14, 7}, {30, 23, 43, 13, 11}, {32, 24, 45, 96, 0}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 13 AND 77 AND v2>75 AND v3<73 AND v4>=6) AND (v1<=58 AND v2=48 AND v3 BETWEEN 33 AND 73);",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 13 AND 77) AND (test.v2 > 75)) AND (test.v3 < 73)) AND (test.v4 >= 6)) AND (((test.v1 <= 58) AND (test.v2 = 48)) AND (test.v3 BETWEEN 33 AND 73)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 13 AND 77 AND v2>75 AND v3<73 AND v4>=6) AND (v1<=58 AND v2=48 AND v3 BETWEEN 33 AND 73);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>47 AND v3>47 AND v4 BETWEEN 51 AND 86 AND v2=26) OR (v1<82 AND v2<=17 AND v3<17 AND v4>=46));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 47) AND (test.v3 > 47)) AND (test.v4 BETWEEN 51 AND 86)) AND (test.v2 = 26)) OR ((((test.v1 < 82) AND (test.v2 <= 17)) AND (test.v3 < 17)) AND (test.v4 >= 46)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>47 AND v3>47 AND v4 BETWEEN 51 AND 86 AND v2=26) OR (v1<82 AND v2<=17 AND v3<17 AND v4>=46));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>87) OR (v1>82 AND v4>=22)) OR (v1>=52 AND v2<>47 AND v3=37)) OR (v1<=14 AND v2<57 AND v3<10));",
				Expected: []sql.Row{{"Filter((((test.v1 > 87) OR ((test.v1 > 82) AND (test.v4 >= 22))) OR (((test.v1 >= 52) AND (NOT((test.v2 = 47)))) AND (test.v3 = 37))) OR (((test.v1 <= 14) AND (test.v2 < 57)) AND (test.v3 < 10)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>87) OR (v1>82 AND v4>=22)) OR (v1>=52 AND v2<>47 AND v3=37)) OR (v1<=14 AND v2<57 AND v3<10));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {90, 87, 23, 16, 63}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=99 AND v3<=41) AND (v1<>38 AND v2<94 AND v3 BETWEEN 83 AND 95 AND v4>=86);",
				Expected: []sql.Row{{"Filter(((test.v1 >= 99) AND (test.v3 <= 41)) AND ((((NOT((test.v1 = 38))) AND (test.v2 < 94)) AND (test.v3 BETWEEN 83 AND 95)) AND (test.v4 >= 86)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=99 AND v3<=41) AND (v1<>38 AND v2<94 AND v3 BETWEEN 83 AND 95 AND v4>=86);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>78) AND (v1>32 AND v2>11 AND v3>=78);",
				Expected: []sql.Row{{"Filter((test.v1 > 78) AND (((test.v1 > 32) AND (test.v2 > 11)) AND (test.v3 >= 78)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>78) AND (v1>32 AND v2>11 AND v3>=78);",
				Expected: []sql.Row{{87, 84, 56, 78, 18}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<>3 AND v2=26 AND v3=22 AND v4<=76) AND (v1 BETWEEN 59 AND 92 AND v2 BETWEEN 36 AND 80);",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 3))) AND (test.v2 = 26)) AND (test.v3 = 22)) AND (test.v4 <= 76)) AND ((test.v1 BETWEEN 59 AND 92) AND (test.v2 BETWEEN 36 AND 80)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<>3 AND v2=26 AND v3=22 AND v4<=76) AND (v1 BETWEEN 59 AND 92 AND v2 BETWEEN 36 AND 80);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>10) OR (v1=12));",
				Expected: []sql.Row{{"Filter((test.v1 > 10) OR (test.v1 = 12))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>10) OR (v1=12));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>=12 AND v3>=45 AND v4<98) OR (v1<>51 AND v3=79 AND v4<=24)) OR (v1 BETWEEN 4 AND 59 AND v4<82)) OR (v1>=29 AND v2<>21));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 12) AND (test.v3 >= 45)) AND (test.v4 < 98)) OR (((NOT((test.v1 = 51))) AND (test.v3 = 79)) AND (test.v4 <= 24))) OR ((test.v1 BETWEEN 4 AND 59) AND (test.v4 < 82))) OR ((test.v1 >= 29) AND (NOT((test.v2 = 21)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>=12 AND v3>=45 AND v4<98) OR (v1<>51 AND v3=79 AND v4<=24)) OR (v1 BETWEEN 4 AND 59 AND v4<82)) OR (v1>=29 AND v2<>21));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>10 AND v2<=75 AND v3>=70) OR (v1<89 AND v2<=32));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 10))) AND (test.v2 <= 75)) AND (test.v3 >= 70)) OR ((test.v1 < 89) AND (test.v2 <= 32)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>10 AND v2<=75 AND v3>=70) OR (v1<89 AND v2<=32));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {68, 64, 41, 74, 85}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {90, 87, 23, 16, 63}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {67, 64, 26, 77, 97}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {31, 24, 26, 69, 25}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {13, 7, 21, 75, 70}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=15) OR (v1=15)) OR (v1 BETWEEN 14 AND 25 AND v4>55 AND v2<53 AND v3=95));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 15) OR (test.v1 = 15)) OR ((((test.v1 BETWEEN 14 AND 25) AND (test.v4 > 55)) AND (test.v2 < 53)) AND (test.v3 = 95)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=15) OR (v1=15)) OR (v1 BETWEEN 14 AND 25 AND v4>55 AND v2<53 AND v3=95));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>48 AND v2 BETWEEN 4 AND 84 AND v3<=3 AND v4<>31) AND (v1 BETWEEN 2 AND 15 AND v3>75);",
				Expected: []sql.Row{{"Filter(((((test.v1 > 48) AND (test.v2 BETWEEN 4 AND 84)) AND (test.v3 <= 3)) AND (NOT((test.v4 = 31)))) AND ((test.v1 BETWEEN 2 AND 15) AND (test.v3 > 75)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>48 AND v2 BETWEEN 4 AND 84 AND v3<=3 AND v4<>31) AND (v1 BETWEEN 2 AND 15 AND v3>75);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<41 AND v4=9 AND v2>77 AND v3=41) OR (v1>62 AND v2>=48 AND v3=13 AND v4>61)) OR (v1 BETWEEN 33 AND 75)) OR (v1 BETWEEN 45 AND 65 AND v4 BETWEEN 4 AND 68));",
				Expected: []sql.Row{{"Filter(((((((test.v1 < 41) AND (test.v4 = 9)) AND (test.v2 > 77)) AND (test.v3 = 41)) OR ((((test.v1 > 62) AND (test.v2 >= 48)) AND (test.v3 = 13)) AND (test.v4 > 61))) OR (test.v1 BETWEEN 33 AND 75)) OR ((test.v1 BETWEEN 45 AND 65) AND (test.v4 BETWEEN 4 AND 68)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<41 AND v4=9 AND v2>77 AND v3=41) OR (v1>62 AND v2>=48 AND v3=13 AND v4>61)) OR (v1 BETWEEN 33 AND 75)) OR (v1 BETWEEN 45 AND 65 AND v4 BETWEEN 4 AND 68));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {67, 64, 26, 77, 97}, {66, 64, 23, 33, 5}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>20) OR (v1>=71 AND v4 BETWEEN 12 AND 20 AND v2<=30 AND v3 BETWEEN 14 AND 44)) AND (v1>97 AND v2=91 AND v3>=5) OR (v1>7 AND v2<34 AND v3<55 AND v4 BETWEEN 88 AND 97)) AND (v1 BETWEEN 2 AND 16 AND v2<>23 AND v3=75 AND v4>99);",
				Expected: []sql.Row{{"Filter(((((test.v1 > 20) OR ((((test.v1 >= 71) AND (test.v4 BETWEEN 12 AND 20)) AND (test.v2 <= 30)) AND (test.v3 BETWEEN 14 AND 44))) AND (((test.v1 > 97) AND (test.v2 = 91)) AND (test.v3 >= 5))) OR ((((test.v1 > 7) AND (test.v2 < 34)) AND (test.v3 < 55)) AND (test.v4 BETWEEN 88 AND 97))) AND ((((test.v1 BETWEEN 2 AND 16) AND (NOT((test.v2 = 23)))) AND (test.v3 = 75)) AND (test.v4 > 99)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>20) OR (v1>=71 AND v4 BETWEEN 12 AND 20 AND v2<=30 AND v3 BETWEEN 14 AND 44)) AND (v1>97 AND v2=91 AND v3>=5) OR (v1>7 AND v2<34 AND v3<55 AND v4 BETWEEN 88 AND 97)) AND (v1 BETWEEN 2 AND 16 AND v2<>23 AND v3=75 AND v4>99);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=55 AND v2<13 AND v3<=96 AND v4>=49) OR (v1 BETWEEN 39 AND 98 AND v2=77 AND v3>85));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 55) AND (test.v2 < 13)) AND (test.v3 <= 96)) AND (test.v4 >= 49)) OR (((test.v1 BETWEEN 39 AND 98) AND (test.v2 = 77)) AND (test.v3 > 85)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=55 AND v2<13 AND v3<=96 AND v4>=49) OR (v1 BETWEEN 39 AND 98 AND v2=77 AND v3>85));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=74 AND v2<>13 AND v3<67 AND v4 BETWEEN 1 AND 70) OR (v1 BETWEEN 30 AND 50 AND v2<27 AND v3>=35));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 74) AND (NOT((test.v2 = 13)))) AND (test.v3 < 67)) AND (test.v4 BETWEEN 1 AND 70)) OR (((test.v1 BETWEEN 30 AND 50) AND (test.v2 < 27)) AND (test.v3 >= 35)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=74 AND v2<>13 AND v3<67 AND v4 BETWEEN 1 AND 70) OR (v1 BETWEEN 30 AND 50 AND v2<27 AND v3>=35));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {48, 41, 21, 82, 54}, {79, 74, 22, 42, 16}, {42, 36, 7, 40, 16}, {34, 32, 16, 97, 29}, {47, 41, 1, 85, 9}, {51, 45, 9, 76, 9}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=76) OR (v1>22 AND v3<49 AND v4=2)) OR (v1=85 AND v4>79)) OR (v1=10 AND v2=47 AND v3 BETWEEN 6 AND 21 AND v4>97));",
				Expected: []sql.Row{{"Filter((((test.v1 = 76) OR (((test.v1 > 22) AND (test.v3 < 49)) AND (test.v4 = 2))) OR ((test.v1 = 85) AND (test.v4 > 79))) OR ((((test.v1 = 10) AND (test.v2 = 47)) AND (test.v3 BETWEEN 6 AND 21)) AND (test.v4 > 97)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=76) OR (v1>22 AND v3<49 AND v4=2)) OR (v1=85 AND v4>79)) OR (v1=10 AND v2=47 AND v3 BETWEEN 6 AND 21 AND v4>97));",
				Expected: []sql.Row{{81, 76, 74, 97, 18}, {88, 85, 2, 3, 88}, {60, 52, 72, 44, 2}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>38 AND v2>98) OR (v1<>29 AND v2=75)) OR (v1>58 AND v2<>49 AND v3 BETWEEN 25 AND 58));",
				Expected: []sql.Row{{"Filter((((test.v1 > 38) AND (test.v2 > 98)) OR ((NOT((test.v1 = 29))) AND (test.v2 = 75))) OR (((test.v1 > 58) AND (NOT((test.v2 = 49)))) AND (test.v3 BETWEEN 25 AND 58)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>38 AND v2>98) OR (v1<>29 AND v2=75)) OR (v1>58 AND v2<>49 AND v3 BETWEEN 25 AND 58));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {78, 73, 91, 56, 0}, {85, 83, 37, 36, 16}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {100, 96, 73, 38, 38}, {25, 17, 75, 86, 18}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>82 AND v4=74 AND v2=8 AND v3>=43) OR (v1=1 AND v2>=54 AND v3 BETWEEN 41 AND 91 AND v4>=0));",
				Expected: []sql.Row{{"Filter(((((NOT((test.v1 = 82))) AND (test.v4 = 74)) AND (test.v2 = 8)) AND (test.v3 >= 43)) OR ((((test.v1 = 1) AND (test.v2 >= 54)) AND (test.v3 BETWEEN 41 AND 91)) AND (test.v4 >= 0)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>82 AND v4=74 AND v2=8 AND v3>=43) OR (v1=1 AND v2>=54 AND v3 BETWEEN 41 AND 91 AND v4>=0));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=26 AND v2<=94 AND v3<=76) OR (v1<34 AND v2 BETWEEN 5 AND 20));",
				Expected: []sql.Row{{"Filter((((test.v1 = 26) AND (test.v2 <= 94)) AND (test.v3 <= 76)) OR ((test.v1 < 34) AND (test.v2 BETWEEN 5 AND 20)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=26 AND v2<=94 AND v3<=76) OR (v1<34 AND v2 BETWEEN 5 AND 20));",
				Expected: []sql.Row{{9, 5, 17, 52, 13}, {17, 9, 7, 74, 92}, {12, 7, 7, 66, 62}, {34, 32, 16, 97, 29}, {7, 4, 10, 53, 69}, {18, 9, 19, 38, 35}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>74 AND v2<=3 AND v3>51 AND v4<1) OR (v1>=92 AND v2<=2));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 74) AND (test.v2 <= 3)) AND (test.v3 > 51)) AND (test.v4 < 1)) OR ((test.v1 >= 92) AND (test.v2 <= 2)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>74 AND v2<=3 AND v3>51 AND v4<1) OR (v1>=92 AND v2<=2));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=10 AND v2 BETWEEN 29 AND 83 AND v3<30 AND v4=54) OR (v1=68 AND v2=9 AND v3<=31)) AND (v1=87 AND v2>=91) OR (v1<=3 AND v2<>65 AND v3<8 AND v4<54)) OR (v1<7 AND v2>=4 AND v3<=47));",
				Expected: []sql.Row{{"Filter((((((((test.v1 <= 10) AND (test.v2 BETWEEN 29 AND 83)) AND (test.v3 < 30)) AND (test.v4 = 54)) OR (((test.v1 = 68) AND (test.v2 = 9)) AND (test.v3 <= 31))) AND ((test.v1 = 87) AND (test.v2 >= 91))) OR ((((test.v1 <= 3) AND (NOT((test.v2 = 65)))) AND (test.v3 < 8)) AND (test.v4 < 54))) OR (((test.v1 < 7) AND (test.v2 >= 4)) AND (test.v3 <= 47)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=10 AND v2 BETWEEN 29 AND 83 AND v3<30 AND v4=54) OR (v1=68 AND v2=9 AND v3<=31)) AND (v1=87 AND v2>=91) OR (v1<=3 AND v2<>65 AND v3<8 AND v4<54)) OR (v1<7 AND v2>=4 AND v3<=47));",
				Expected: []sql.Row{{10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {5, 3, 31, 22, 81}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<35) OR (v1>=5 AND v2>=10 AND v3=65));",
				Expected: []sql.Row{{"Filter((test.v1 < 35) OR (((test.v1 >= 5) AND (test.v2 >= 10)) AND (test.v3 = 65)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<35) OR (v1>=5 AND v2>=10 AND v3=65));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>31 AND v2<=37 AND v3>56 AND v4 BETWEEN 10 AND 31) OR (v1>8)) AND (v1>=27 AND v2<>44);",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 31))) AND (test.v2 <= 37)) AND (test.v3 > 56)) AND (test.v4 BETWEEN 10 AND 31)) OR (test.v1 > 8)) AND ((test.v1 >= 27) AND (NOT((test.v2 = 44)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>31 AND v2<=37 AND v3>56 AND v4 BETWEEN 10 AND 31) OR (v1>8)) AND (v1>=27 AND v2<>44);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>52) OR (v1<21 AND v2<61 AND v3=13)) OR (v1=89 AND v3>33));",
				Expected: []sql.Row{{"Filter(((test.v1 > 52) OR (((test.v1 < 21) AND (test.v2 < 61)) AND (test.v3 = 13))) OR ((test.v1 = 89) AND (test.v3 > 33)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>52) OR (v1<21 AND v2<61 AND v3=13)) OR (v1=89 AND v3>33));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<30 AND v4>11 AND v2<=11) OR (v1<>19 AND v2<>47 AND v3 BETWEEN 38 AND 77 AND v4>31)) OR (v1 BETWEEN 0 AND 27 AND v2 BETWEEN 33 AND 34)) OR (v1<32)) AND (v1<9 AND v3=54 AND v4<>31 AND v2<>95);",
				Expected: []sql.Row{{"Filter(((((((test.v1 < 30) AND (test.v4 > 11)) AND (test.v2 <= 11)) OR ((((NOT((test.v1 = 19))) AND (NOT((test.v2 = 47)))) AND (test.v3 BETWEEN 38 AND 77)) AND (test.v4 > 31))) OR ((test.v1 BETWEEN 0 AND 27) AND (test.v2 BETWEEN 33 AND 34))) OR (test.v1 < 32)) AND ((((test.v1 < 9) AND (test.v3 = 54)) AND (NOT((test.v4 = 31)))) AND (NOT((test.v2 = 95)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<30 AND v4>11 AND v2<=11) OR (v1<>19 AND v2<>47 AND v3 BETWEEN 38 AND 77 AND v4>31)) OR (v1 BETWEEN 0 AND 27 AND v2 BETWEEN 33 AND 34)) OR (v1<32)) AND (v1<9 AND v3=54 AND v4<>31 AND v2<>95);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=48) OR (v1 BETWEEN 2 AND 81));",
				Expected: []sql.Row{{"Filter((test.v1 <= 48) OR (test.v1 BETWEEN 2 AND 81))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=48) OR (v1 BETWEEN 2 AND 81));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<>36) OR (v1<>70 AND v2 BETWEEN 23 AND 39)) OR (v1>51 AND v2>=57)) OR (v1<50 AND v2<=3 AND v3 BETWEEN 1 AND 74));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 36))) OR ((NOT((test.v1 = 70))) AND (test.v2 BETWEEN 23 AND 39))) OR ((test.v1 > 51) AND (test.v2 >= 57))) OR (((test.v1 < 50) AND (test.v2 <= 3)) AND (test.v3 BETWEEN 1 AND 74)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<>36) OR (v1<>70 AND v2 BETWEEN 23 AND 39)) OR (v1>51 AND v2>=57)) OR (v1<50 AND v2<=3 AND v3 BETWEEN 1 AND 74));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1>30) OR (v1>98 AND v4>43 AND v2<>80)) OR (v1 BETWEEN 2 AND 23 AND v2>=34)) OR (v1>=42));",
				Expected: []sql.Row{{"Filter((((test.v1 > 30) OR (((test.v1 > 98) AND (test.v4 > 43)) AND (NOT((test.v2 = 80))))) OR ((test.v1 BETWEEN 2 AND 23) AND (test.v2 >= 34))) OR (test.v1 >= 42))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1>30) OR (v1>98 AND v4>43 AND v2<>80)) OR (v1 BETWEEN 2 AND 23 AND v2>=34)) OR (v1>=42));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<68 AND v2<81 AND v3<34 AND v4<>33) OR (v1<=78 AND v4 BETWEEN 34 AND 99 AND v2>=79 AND v3>=9)) OR (v1=27 AND v4 BETWEEN 20 AND 41 AND v2<98 AND v3>=15));",
				Expected: []sql.Row{{"Filter((((((test.v1 < 68) AND (test.v2 < 81)) AND (test.v3 < 34)) AND (NOT((test.v4 = 33)))) OR ((((test.v1 <= 78) AND (test.v4 BETWEEN 34 AND 99)) AND (test.v2 >= 79)) AND (test.v3 >= 9))) OR ((((test.v1 = 27) AND (test.v4 BETWEEN 20 AND 41)) AND (test.v2 < 98)) AND (test.v3 >= 15)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<68 AND v2<81 AND v3<34 AND v4<>33) OR (v1<=78 AND v4 BETWEEN 34 AND 99 AND v2>=79 AND v3>=9)) OR (v1=27 AND v4 BETWEEN 20 AND 41 AND v2<98 AND v3>=15));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {21, 12, 42, 15, 31}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {24, 17, 49, 14, 7}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {53, 48, 3, 11, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<23 AND v2<=45 AND v3<0) OR (v1>=31)) OR (v1>=50));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 23) AND (test.v2 <= 45)) AND (test.v3 < 0)) OR (test.v1 >= 31)) OR (test.v1 >= 50))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<23 AND v2<=45 AND v3<0) OR (v1>=31)) OR (v1>=50));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<16) OR (v1>=19 AND v2<25 AND v3>77));",
				Expected: []sql.Row{{"Filter((test.v1 < 16) OR (((test.v1 >= 19) AND (test.v2 < 25)) AND (test.v3 > 77)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<16) OR (v1>=19 AND v2<25 AND v3>77));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {20, 12, 0, 33, 62}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {34, 32, 16, 97, 29}, {47, 41, 1, 85, 9}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<29 AND v2 BETWEEN 81 AND 92) OR (v1>20 AND v2>=53 AND v3 BETWEEN 20 AND 68));",
				Expected: []sql.Row{{"Filter(((test.v1 < 29) AND (test.v2 BETWEEN 81 AND 92)) OR (((test.v1 > 20) AND (test.v2 >= 53)) AND (test.v3 BETWEEN 20 AND 68)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<29 AND v2 BETWEEN 81 AND 92) OR (v1>20 AND v2>=53 AND v3 BETWEEN 20 AND 68));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {52, 47, 94, 56, 21}, {78, 73, 91, 56, 0}, {36, 33, 53, 56, 88}, {59, 51, 97, 39, 36}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {74, 70, 56, 21, 22}, {100, 96, 73, 38, 38}, {60, 52, 72, 44, 2}, {45, 38, 71, 22, 37}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 25 AND 59 AND v2=1 AND v3<93 AND v4<=16) OR (v1<40 AND v2 BETWEEN 14 AND 37 AND v3>62 AND v4<58)) OR (v1<>17 AND v2<>36)) OR (v1 BETWEEN 7 AND 99 AND v2<>6 AND v3=43 AND v4<89));",
				Expected: []sql.Row{{"Filter(((((((test.v1 BETWEEN 25 AND 59) AND (test.v2 = 1)) AND (test.v3 < 93)) AND (test.v4 <= 16)) OR ((((test.v1 < 40) AND (test.v2 BETWEEN 14 AND 37)) AND (test.v3 > 62)) AND (test.v4 < 58))) OR ((NOT((test.v1 = 17))) AND (NOT((test.v2 = 36))))) OR ((((test.v1 BETWEEN 7 AND 99) AND (NOT((test.v2 = 6)))) AND (test.v3 = 43)) AND (test.v4 < 89)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 25 AND 59 AND v2=1 AND v3<93 AND v4<=16) OR (v1<40 AND v2 BETWEEN 14 AND 37 AND v3>62 AND v4<58)) OR (v1<>17 AND v2<>36)) OR (v1 BETWEEN 7 AND 99 AND v2<>6 AND v3=43 AND v4<89));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1=46) AND (v1>=93 AND v3<>51 AND v4=93 AND v2=8);",
				Expected: []sql.Row{{"Filter((test.v1 = 46) AND ((((test.v1 >= 93) AND (NOT((test.v3 = 51)))) AND (test.v4 = 93)) AND (test.v2 = 8)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1=46) AND (v1>=93 AND v3<>51 AND v4=93 AND v2=8);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<=5 AND v2>=14 AND v3<=2) OR (v1<53 AND v4=99 AND v2=72)) OR (v1<>49 AND v2<>39 AND v3>=70 AND v4<>24)) OR (v1<79));",
				Expected: []sql.Row{{"Filter((((((test.v1 <= 5) AND (test.v2 >= 14)) AND (test.v3 <= 2)) OR (((test.v1 < 53) AND (test.v4 = 99)) AND (test.v2 = 72))) OR ((((NOT((test.v1 = 49))) AND (NOT((test.v2 = 39)))) AND (test.v3 >= 70)) AND (NOT((test.v4 = 24))))) OR (test.v1 < 79))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<=5 AND v2>=14 AND v3<=2) OR (v1<53 AND v4=99 AND v2=72)) OR (v1<>49 AND v2<>39 AND v3>=70 AND v4<>24)) OR (v1<79));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1<99 AND v2<=42) OR (v1=47 AND v4 BETWEEN 33 AND 63 AND v2>=10 AND v3<=57)) OR (v1>44)) OR (v1<>87 AND v2>42 AND v3<69));",
				Expected: []sql.Row{{"Filter(((((test.v1 < 99) AND (test.v2 <= 42)) OR ((((test.v1 = 47) AND (test.v4 BETWEEN 33 AND 63)) AND (test.v2 >= 10)) AND (test.v3 <= 57))) OR (test.v1 > 44)) OR (((NOT((test.v1 = 87))) AND (test.v2 > 42)) AND (test.v3 < 69)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1<99 AND v2<=42) OR (v1=47 AND v4 BETWEEN 33 AND 63 AND v2>=10 AND v3<=57)) OR (v1>44)) OR (v1<>87 AND v2>42 AND v3<69));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=29 AND v2 BETWEEN 50 AND 86 AND v3<=6 AND v4 BETWEEN 8 AND 48) OR (v1>86 AND v2 BETWEEN 62 AND 70 AND v3=33));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 29) AND (test.v2 BETWEEN 50 AND 86)) AND (test.v3 <= 6)) AND (test.v4 BETWEEN 8 AND 48)) OR (((test.v1 > 86) AND (test.v2 BETWEEN 62 AND 70)) AND (test.v3 = 33)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=29 AND v2 BETWEEN 50 AND 86 AND v3<=6 AND v4 BETWEEN 8 AND 48) OR (v1>86 AND v2 BETWEEN 62 AND 70 AND v3=33));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=15) OR (v1>=59 AND v2<18)) OR (v1 BETWEEN 23 AND 31 AND v3>50 AND v4 BETWEEN 15 AND 54));",
				Expected: []sql.Row{{"Filter(((test.v1 >= 15) OR ((test.v1 >= 59) AND (test.v2 < 18))) OR (((test.v1 BETWEEN 23 AND 31) AND (test.v3 > 50)) AND (test.v4 BETWEEN 15 AND 54)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=15) OR (v1>=59 AND v2<18)) OR (v1 BETWEEN 23 AND 31 AND v3>50 AND v4 BETWEEN 15 AND 54));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=50 AND v2<=84 AND v3 BETWEEN 22 AND 26) OR (v1<=18 AND v2<49 AND v3>19 AND v4 BETWEEN 61 AND 75)) AND (v1>48 AND v2>=56 AND v3=6) OR (v1<=88 AND v2>=76 AND v3<40 AND v4<=18));",
				Expected: []sql.Row{{"Filter((((((test.v1 >= 50) AND (test.v2 <= 84)) AND (test.v3 BETWEEN 22 AND 26)) OR ((((test.v1 <= 18) AND (test.v2 < 49)) AND (test.v3 > 19)) AND (test.v4 BETWEEN 61 AND 75))) AND (((test.v1 > 48) AND (test.v2 >= 56)) AND (test.v3 = 6))) OR ((((test.v1 <= 88) AND (test.v2 >= 76)) AND (test.v3 < 40)) AND (test.v4 <= 18)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=50 AND v2<=84 AND v3 BETWEEN 22 AND 26) OR (v1<=18 AND v2<49 AND v3>19 AND v4 BETWEEN 61 AND 75)) AND (v1>48 AND v2>=56 AND v3=6) OR (v1<=88 AND v2>=76 AND v3<40 AND v4<=18));",
				Expected: []sql.Row{{57, 50, 79, 10, 12}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=27) OR (v1>=11 AND v2<97 AND v3<97 AND v4<44));",
				Expected: []sql.Row{{"Filter((test.v1 = 27) OR ((((test.v1 >= 11) AND (test.v2 < 97)) AND (test.v3 < 97)) AND (test.v4 < 44)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=27) OR (v1>=11 AND v2<97 AND v3<97 AND v4<44));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {22, 12, 46, 43, 23}, {56, 50, 39, 26, 37}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {66, 64, 23, 33, 5}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {79, 74, 22, 42, 16}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=89 AND v2<=93) OR (v1<=54));",
				Expected: []sql.Row{{"Filter(((test.v1 <= 89) AND (test.v2 <= 93)) OR (test.v1 <= 54))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=89 AND v2<=93) OR (v1<=54));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=74 AND v2<=31) OR (v1<11)) OR (v1 BETWEEN 26 AND 38));",
				Expected: []sql.Row{{"Filter((((test.v1 = 74) AND (test.v2 <= 31)) OR (test.v1 < 11)) OR (test.v1 BETWEEN 26 AND 38))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=74 AND v2<=31) OR (v1<11)) OR (v1 BETWEEN 26 AND 38));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {40, 34, 89, 27, 90}, {35, 33, 29, 69, 6}, {43, 37, 35, 6, 44}, {9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {79, 74, 22, 42, 16}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {18, 9, 19, 38, 35}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=10 AND v2<12 AND v3=54 AND v4>89) OR (v1=99 AND v4=37));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 10) AND (test.v2 < 12)) AND (test.v3 = 54)) AND (test.v4 > 89)) OR ((test.v1 = 99) AND (test.v4 = 37)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=10 AND v2<12 AND v3=54 AND v4>89) OR (v1=99 AND v4=37));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=50 AND v2<50) OR (v1<19)) OR (v1=51));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 50) AND (test.v2 < 50)) OR (test.v1 < 19)) OR (test.v1 = 51))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=50 AND v2<50) OR (v1<19)) OR (v1=51));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {51, 45, 9, 76, 9}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=62 AND v2<89) AND (v1<90 AND v2>=19) OR (v1<=1 AND v2>49));",
				Expected: []sql.Row{{"Filter((((test.v1 = 62) AND (test.v2 < 89)) AND ((test.v1 < 90) AND (test.v2 >= 19))) OR ((test.v1 <= 1) AND (test.v2 > 49)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=62 AND v2<89) AND (v1<90 AND v2>=19) OR (v1<=1 AND v2>49));",
				Expected: []sql.Row{{3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<=61 AND v2<=64) AND (v1>=0);",
				Expected: []sql.Row{{"Filter(((test.v1 <= 61) AND (test.v2 <= 64)) AND (test.v1 >= 0))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<=61 AND v2<=64) AND (v1>=0);",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {51, 45, 9, 76, 9}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 5 AND 69) OR (v1<52 AND v4<14 AND v2>=25 AND v3=63));",
				Expected: []sql.Row{{"Filter((test.v1 BETWEEN 5 AND 69) OR ((((test.v1 < 52) AND (test.v4 < 14)) AND (test.v2 >= 25)) AND (test.v3 = 63)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 5 AND 69) OR (v1<52 AND v4<14 AND v2>=25 AND v3=63));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=21 AND v2<>0 AND v3<49) OR (v1<=70 AND v2>16 AND v3<=89 AND v4>=27)) OR (v1>=14));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 21) AND (NOT((test.v2 = 0)))) AND (test.v3 < 49)) OR ((((test.v1 <= 70) AND (test.v2 > 16)) AND (test.v3 <= 89)) AND (test.v4 >= 27))) OR (test.v1 >= 14))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=21 AND v2<>0 AND v3<49) OR (v1<=70 AND v2>16 AND v3<=89 AND v4>=27)) OR (v1>=14));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>14) OR (v1>=82));",
				Expected: []sql.Row{{"Filter((test.v1 > 14) OR (test.v1 >= 82))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>14) OR (v1>=82));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=19 AND v3<72 AND v4=23) OR (v1<=36 AND v2>99));",
				Expected: []sql.Row{{"Filter((((test.v1 = 19) AND (test.v3 < 72)) AND (test.v4 = 23)) OR ((test.v1 <= 36) AND (test.v2 > 99)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=19 AND v3<72 AND v4=23) OR (v1<=36 AND v2>99));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>43) OR (v1>=41 AND v4=32 AND v2<=66)) AND (v1>43 AND v2 BETWEEN 83 AND 97);",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 43))) OR (((test.v1 >= 41) AND (test.v4 = 32)) AND (test.v2 <= 66))) AND ((test.v1 > 43) AND (test.v2 BETWEEN 83 AND 97)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>43) OR (v1>=41 AND v4=32 AND v2<=66)) AND (v1>43 AND v2 BETWEEN 83 AND 97);",
				Expected: []sql.Row{{52, 47, 94, 56, 21}, {78, 73, 91, 56, 0}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {58, 50, 97, 0, 79}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=8 AND v4>=44) AND (v1=84 AND v2=41 AND v3 BETWEEN 5 AND 81) OR (v1<>31 AND v2<=96 AND v3<=20 AND v4<=14));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 8) AND (test.v4 >= 44)) AND (((test.v1 = 84) AND (test.v2 = 41)) AND (test.v3 BETWEEN 5 AND 81))) OR ((((NOT((test.v1 = 31))) AND (test.v2 <= 96)) AND (test.v3 <= 20)) AND (test.v4 <= 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=8 AND v4>=44) AND (v1=84 AND v2=41 AND v3 BETWEEN 5 AND 81) OR (v1<>31 AND v2<=96 AND v3<=20 AND v4<=14));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {96, 91, 23, 2, 9}, {24, 17, 49, 14, 7}, {57, 50, 79, 10, 12}, {30, 23, 43, 13, 11}, {77, 73, 10, 2, 0}, {73, 70, 40, 19, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 52 AND 55) OR (v1>1 AND v2>36 AND v3<=47)) OR (v1 BETWEEN 0 AND 38 AND v2<=49 AND v3>=8));",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 52 AND 55) OR (((test.v1 > 1) AND (test.v2 > 36)) AND (test.v3 <= 47))) OR (((test.v1 BETWEEN 0 AND 38) AND (test.v2 <= 49)) AND (test.v3 >= 8)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 52 AND 55) OR (v1>1 AND v2>36 AND v3<=47)) OR (v1 BETWEEN 0 AND 38 AND v2<=49 AND v3>=8));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {65, 63, 50, 20, 43}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {91, 87, 66, 8, 22}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {60, 52, 72, 44, 2}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {58, 50, 97, 0, 79}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=11 AND v2>=41 AND v3=9) AND (v1<>41 AND v3<>69 AND v4<24) OR (v1>48 AND v4<79));",
				Expected: []sql.Row{{"Filter(((((test.v1 <= 11) AND (test.v2 >= 41)) AND (test.v3 = 9)) AND (((NOT((test.v1 = 41))) AND (NOT((test.v3 = 69)))) AND (test.v4 < 24))) OR ((test.v1 > 48) AND (test.v4 < 79)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=11 AND v2>=41 AND v3=9) AND (v1<>41 AND v3<>69 AND v4<24) OR (v1>48 AND v4<79));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {56, 50, 39, 26, 37}, {81, 76, 74, 97, 18}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {94, 89, 91, 7, 45}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1=23 AND v4>=52 AND v2>=61) AND (v1<>85 AND v3>2 AND v4<15);",
				Expected: []sql.Row{{"Filter((((test.v1 = 23) AND (test.v4 >= 52)) AND (test.v2 >= 61)) AND (((NOT((test.v1 = 85))) AND (test.v3 > 2)) AND (test.v4 < 15)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1=23 AND v4>=52 AND v2>=61) AND (v1<>85 AND v3>2 AND v4<15);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1 BETWEEN 32 AND 51 AND v4 BETWEEN 5 AND 14 AND v2=46 AND v3>=31) OR (v1>=32 AND v2<=26 AND v3>52 AND v4>55));",
				Expected: []sql.Row{{"Filter(((((test.v1 BETWEEN 32 AND 51) AND (test.v4 BETWEEN 5 AND 14)) AND (test.v2 = 46)) AND (test.v3 >= 31)) OR ((((test.v1 >= 32) AND (test.v2 <= 26)) AND (test.v3 > 52)) AND (test.v4 > 55)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1 BETWEEN 32 AND 51 AND v4 BETWEEN 5 AND 14 AND v2=46 AND v3>=31) OR (v1>=32 AND v2<=26 AND v3>52 AND v4>55));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {67, 64, 26, 77, 97}, {89, 86, 7, 57, 96}, {64, 57, 25, 97, 65}, {61, 53, 6, 53, 89}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=16 AND v2<59 AND v3<=43) OR (v1=17 AND v2<=4 AND v3>71));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 16) AND (test.v2 < 59)) AND (test.v3 <= 43)) OR (((test.v1 = 17) AND (test.v2 <= 4)) AND (test.v3 > 71)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=16 AND v2<59 AND v3<=43) OR (v1=17 AND v2<=4 AND v3>71));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {93, 89, 1, 27, 50}, {24, 17, 49, 14, 7}, {79, 74, 22, 42, 16}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {77, 73, 10, 2, 0}, {73, 70, 40, 19, 5}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=42 AND v4=47) OR (v1>=28)) AND (v1<>10) OR (v1 BETWEEN 20 AND 60 AND v2>96 AND v3<>28)) OR (v1=99 AND v2<=62 AND v3=30 AND v4 BETWEEN 92 AND 93));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 42) AND (test.v4 = 47)) OR (test.v1 >= 28)) AND (NOT((test.v1 = 10)))) OR (((test.v1 BETWEEN 20 AND 60) AND (test.v2 > 96)) AND (NOT((test.v3 = 28))))) OR ((((test.v1 = 99) AND (test.v2 <= 62)) AND (test.v3 = 30)) AND (test.v4 BETWEEN 92 AND 93)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=42 AND v4=47) OR (v1>=28)) AND (v1<>10) OR (v1 BETWEEN 20 AND 60 AND v2>96 AND v3<>28)) OR (v1=99 AND v2<=62 AND v3=30 AND v4 BETWEEN 92 AND 93));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=50 AND v3=4 AND v4=53 AND v2>=80) OR (v1<54 AND v4<=76 AND v2>48)) OR (v1>=38 AND v4<76 AND v2=56));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 50) AND (test.v3 = 4)) AND (test.v4 = 53)) AND (test.v2 >= 80)) OR (((test.v1 < 54) AND (test.v4 <= 76)) AND (test.v2 > 48))) OR (((test.v1 >= 38) AND (test.v4 < 76)) AND (test.v2 = 56)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=50 AND v3=4 AND v4=53 AND v2>=80) OR (v1<54 AND v4<=76 AND v2>48)) OR (v1>=38 AND v4<76 AND v2=56));",
				Expected: []sql.Row{{52, 47, 94, 56, 21}, {87, 84, 56, 78, 18}, {11, 5, 76, 70, 46}, {24, 17, 49, 14, 7}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {60, 52, 72, 44, 2}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {50, 43, 66, 85, 66}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=79 AND v2>24) OR (v1<76 AND v3<=59 AND v4<=36 AND v2=39));",
				Expected: []sql.Row{{"Filter(((test.v1 = 79) AND (test.v2 > 24)) OR ((((test.v1 < 76) AND (test.v3 <= 59)) AND (test.v4 <= 36)) AND (test.v2 = 39)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=79 AND v2>24) OR (v1<76 AND v3<=59 AND v4<=36 AND v2=39));",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<=15 AND v2 BETWEEN 21 AND 76 AND v3=23) OR (v1 BETWEEN 2 AND 55));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 15) AND (test.v2 BETWEEN 21 AND 76)) AND (test.v3 = 23)) OR (test.v1 BETWEEN 2 AND 55))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<=15 AND v2 BETWEEN 21 AND 76 AND v3=23) OR (v1 BETWEEN 2 AND 55));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=85 AND v2>37 AND v3<=57 AND v4 BETWEEN 12 AND 49) AND (v1>10) OR (v1>56)) OR (v1>=57));",
				Expected: []sql.Row{{"Filter(((((((test.v1 = 85) AND (test.v2 > 37)) AND (test.v3 <= 57)) AND (test.v4 BETWEEN 12 AND 49)) AND (test.v1 > 10)) OR (test.v1 > 56)) OR (test.v1 >= 57))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=85 AND v2>37 AND v3<=57 AND v4 BETWEEN 12 AND 49) AND (v1>10) OR (v1>56)) OR (v1>=57));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {74, 70, 56, 21, 22}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((((v1<>89 AND v2>=75) OR (v1<=5)) OR (v1=5 AND v2<19 AND v3>=1)) OR (v1>=18 AND v2>=17 AND v3 BETWEEN 78 AND 83)) OR (v1>=11 AND v3<=9 AND v4>39));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 89))) AND (test.v2 >= 75)) OR (test.v1 <= 5)) OR (((test.v1 = 5) AND (test.v2 < 19)) AND (test.v3 >= 1))) OR (((test.v1 >= 18) AND (test.v2 >= 17)) AND (test.v3 BETWEEN 78 AND 83))) OR (((test.v1 >= 11) AND (test.v3 <= 9)) AND (test.v4 > 39)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((((v1<>89 AND v2>=75) OR (v1<=5)) OR (v1=5 AND v2<19 AND v3>=1)) OR (v1>=18 AND v2>=17 AND v3 BETWEEN 78 AND 83)) OR (v1>=11 AND v3<=9 AND v4>39));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {52, 47, 94, 56, 21}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {78, 73, 91, 56, 0}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {57, 50, 79, 10, 12}, {1, 0, 55, 14, 32}, {84, 82, 70, 5, 47}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {7, 4, 10, 53, 69}, {58, 50, 97, 0, 79}, {69, 64, 77, 41, 17}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1 BETWEEN 36 AND 48 AND v4<97 AND v2>=99 AND v3=3) OR (v1<>84 AND v2=46 AND v3=4)) OR (v1>73 AND v2 BETWEEN 34 AND 39 AND v3 BETWEEN 34 AND 71 AND v4>=15)) OR (v1<>82));",
				Expected: []sql.Row{{"Filter(((((((test.v1 BETWEEN 36 AND 48) AND (test.v4 < 97)) AND (test.v2 >= 99)) AND (test.v3 = 3)) OR (((NOT((test.v1 = 84))) AND (test.v2 = 46)) AND (test.v3 = 4))) OR ((((test.v1 > 73) AND (test.v2 BETWEEN 34 AND 39)) AND (test.v3 BETWEEN 34 AND 71)) AND (test.v4 >= 15))) OR (NOT((test.v1 = 82))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1 BETWEEN 36 AND 48 AND v4<97 AND v2>=99 AND v3=3) OR (v1<>84 AND v2=46 AND v3=4)) OR (v1>73 AND v2 BETWEEN 34 AND 39 AND v3 BETWEEN 34 AND 71 AND v4>=15)) OR (v1<>82));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1<=50 AND v3>=51 AND v4<>69) AND (v1>1 AND v3<24);",
				Expected: []sql.Row{{"Filter((((test.v1 <= 50) AND (test.v3 >= 51)) AND (NOT((test.v4 = 69)))) AND ((test.v1 > 1) AND (test.v3 < 24)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1<=50 AND v3>=51 AND v4<>69) AND (v1>1 AND v3<24);",
				Expected: []sql.Row{},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>10 AND v2=72 AND v3<31) OR (v1<67 AND v3 BETWEEN 13 AND 70 AND v4>66 AND v2>39)) OR (v1<82)) AND (v1>=66);",
				Expected: []sql.Row{{"Filter((((((test.v1 > 10) AND (test.v2 = 72)) AND (test.v3 < 31)) OR ((((test.v1 < 67) AND (test.v3 BETWEEN 13 AND 70)) AND (test.v4 > 66)) AND (test.v2 > 39))) OR (test.v1 < 82)) AND (test.v1 >= 66))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>10 AND v2=72 AND v3<31) OR (v1<67 AND v3 BETWEEN 13 AND 70 AND v4>66 AND v2>39)) OR (v1<82)) AND (v1>=66);",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {72, 69, 81, 70, 37}, {78, 73, 91, 56, 0}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {74, 70, 56, 21, 22}, {77, 73, 10, 2, 0}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=84 AND v2<85 AND v3 BETWEEN 75 AND 86 AND v4<=34) OR (v1>=37 AND v2<59 AND v3 BETWEEN 2 AND 26 AND v4>6));",
				Expected: []sql.Row{{"Filter(((((test.v1 = 84) AND (test.v2 < 85)) AND (test.v3 BETWEEN 75 AND 86)) AND (test.v4 <= 34)) OR ((((test.v1 >= 37) AND (test.v2 < 59)) AND (test.v3 BETWEEN 2 AND 26)) AND (test.v4 > 6)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=84 AND v2<85 AND v3 BETWEEN 75 AND 86 AND v4<=34) OR (v1>=37 AND v2<59 AND v3 BETWEEN 2 AND 26 AND v4>6));",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {92, 88, 57, 12, 88}, {74, 70, 56, 21, 22}, {53, 48, 3, 11, 18}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>10 AND v2=42) OR (v1>=85 AND v2<>6 AND v3=34 AND v4<=45));",
				Expected: []sql.Row{{"Filter(((test.v1 > 10) AND (test.v2 = 42)) OR ((((test.v1 >= 85) AND (NOT((test.v2 = 6)))) AND (test.v3 = 34)) AND (test.v4 <= 45)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>10 AND v2=42) OR (v1>=85 AND v2<>6 AND v3=34 AND v4<=45));",
				Expected: []sql.Row{{23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=24 AND v2<>33 AND v3=77 AND v4<>63) OR (v1<>22 AND v2<=58 AND v3>71 AND v4>=87)) OR (v1<=85 AND v2>18 AND v3<=40));",
				Expected: []sql.Row{{"Filter((((((test.v1 = 24) AND (NOT((test.v2 = 33)))) AND (test.v3 = 77)) AND (NOT((test.v4 = 63)))) OR ((((NOT((test.v1 = 22))) AND (test.v2 <= 58)) AND (test.v3 > 71)) AND (test.v4 >= 87))) OR (((test.v1 <= 85) AND (test.v2 > 18)) AND (test.v3 <= 40)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=24 AND v2<>33 AND v3=77 AND v4<>63) OR (v1<>22 AND v2<=58 AND v3>71 AND v4>=87)) OR (v1<=85 AND v2>18 AND v3<=40));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {40, 34, 89, 27, 90}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {83, 82, 31, 22, 99}, {21, 12, 42, 15, 31}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {24, 17, 49, 14, 7}, {14, 7, 76, 26, 47}, {5, 3, 31, 22, 81}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {44, 37, 41, 36, 10}, {84, 82, 70, 5, 47}, {37, 33, 86, 12, 22}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {19, 10, 36, 27, 5}, {45, 38, 71, 22, 37}, {58, 50, 97, 0, 79}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {26, 20, 30, 34, 71}, {63, 55, 31, 29, 92}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<72 AND v2>=67) OR (v1<>88 AND v2<>23 AND v3=23));",
				Expected: []sql.Row{{"Filter(((test.v1 < 72) AND (test.v2 >= 67)) OR (((NOT((test.v1 = 88))) AND (NOT((test.v2 = 23)))) AND (test.v3 = 23)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<72 AND v2>=67) OR (v1<>88 AND v2<>23 AND v3=23));",
				Expected: []sql.Row{{40, 34, 89, 27, 90}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {72, 69, 81, 70, 37}, {11, 5, 76, 70, 46}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {3, 1, 72, 29, 21}, {29, 22, 98, 22, 21}, {57, 50, 79, 10, 12}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {60, 52, 72, 44, 2}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {58, 50, 97, 0, 79}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=11 AND v2>=99) OR (v1<18 AND v2>=34 AND v3<53)) OR (v1>68));",
				Expected: []sql.Row{{"Filter((((test.v1 = 11) AND (test.v2 >= 99)) OR (((test.v1 < 18) AND (test.v2 >= 34)) AND (test.v3 < 53))) OR (test.v1 > 68))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=11 AND v2>=99) OR (v1<18 AND v2>=34 AND v3<53)) OR (v1>68));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {86, 83, 41, 53, 57}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {73, 70, 40, 19, 5}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<=40 AND v2<0) OR (v1>=35 AND v2<=95 AND v3<>61)) OR (v1>49));",
				Expected: []sql.Row{{"Filter((((test.v1 <= 40) AND (test.v2 < 0)) OR (((test.v1 >= 35) AND (test.v2 <= 95)) AND (NOT((test.v3 = 61))))) OR (test.v1 > 49))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<=40 AND v2<0) OR (v1>=35 AND v2<=95 AND v3<>61)) OR (v1>49));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1=85 AND v2<81 AND v3 BETWEEN 14 AND 61 AND v4<>99) OR (v1 BETWEEN 31 AND 86 AND v4<>43)) OR (v1 BETWEEN 15 AND 67)) AND (v1 BETWEEN 37 AND 55);",
				Expected: []sql.Row{{"Filter(((((((test.v1 = 85) AND (test.v2 < 81)) AND (test.v3 BETWEEN 14 AND 61)) AND (NOT((test.v4 = 99)))) OR ((test.v1 BETWEEN 31 AND 86) AND (NOT((test.v4 = 43))))) OR (test.v1 BETWEEN 15 AND 67)) AND (test.v1 BETWEEN 37 AND 55))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1=85 AND v2<81 AND v3 BETWEEN 14 AND 61 AND v4<>99) OR (v1 BETWEEN 31 AND 86 AND v4<>43)) OR (v1 BETWEEN 15 AND 67)) AND (v1 BETWEEN 37 AND 55);",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {43, 37, 35, 6, 44}, {62, 53, 48, 19, 36}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {57, 50, 79, 10, 12}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>=52 AND v4>=86) OR (v1>=86 AND v3=79 AND v4=9 AND v2 BETWEEN 2 AND 6)) OR (v1>98 AND v2<=44 AND v3<>53));",
				Expected: []sql.Row{{"Filter((((test.v1 >= 52) AND (test.v4 >= 86)) OR ((((test.v1 >= 86) AND (test.v3 = 79)) AND (test.v4 = 9)) AND (test.v2 BETWEEN 2 AND 6))) OR (((test.v1 > 98) AND (test.v2 <= 44)) AND (NOT((test.v3 = 53)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>=52 AND v4>=86) OR (v1>=86 AND v3=79 AND v4=9 AND v2 BETWEEN 2 AND 6)) OR (v1>98 AND v2<=44 AND v3<>53));",
				Expected: []sql.Row{{76, 71, 48, 89, 99}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {67, 64, 26, 77, 97}, {92, 88, 57, 12, 88}, {89, 86, 7, 57, 96}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>5 AND v4 BETWEEN 14 AND 43 AND v2>=62) OR (v1>=91 AND v2>=28 AND v3>=83 AND v4<>91));",
				Expected: []sql.Row{{"Filter((((test.v1 > 5) AND (test.v4 BETWEEN 14 AND 43)) AND (test.v2 >= 62)) OR ((((test.v1 >= 91) AND (test.v2 >= 28)) AND (test.v3 >= 83)) AND (NOT((test.v4 = 91)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>5 AND v4 BETWEEN 14 AND 43 AND v2>=62) OR (v1>=91 AND v2>=28 AND v3>=83 AND v4<>91));",
				Expected: []sql.Row{{81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {72, 69, 81, 70, 37}, {91, 87, 66, 8, 22}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {29, 22, 98, 22, 21}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {45, 38, 71, 22, 37}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1<>87) OR (v1>91 AND v2>23 AND v3<74));",
				Expected: []sql.Row{{"Filter((NOT((test.v1 = 87))) OR (((test.v1 > 91) AND (test.v2 > 23)) AND (test.v3 < 74)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1<>87) OR (v1>91 AND v2>23 AND v3<74));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1 BETWEEN 1 AND 19 AND v2 BETWEEN 22 AND 48) AND (v1 BETWEEN 6 AND 47 AND v2>=25 AND v3<27);",
				Expected: []sql.Row{{"Filter(((test.v1 BETWEEN 1 AND 19) AND (test.v2 BETWEEN 22 AND 48)) AND (((test.v1 BETWEEN 6 AND 47) AND (test.v2 >= 25)) AND (test.v3 < 27)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1 BETWEEN 1 AND 19 AND v2 BETWEEN 22 AND 48) AND (v1 BETWEEN 6 AND 47 AND v2>=25 AND v3<27);",
				Expected: []sql.Row{{23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((((v1=76 AND v2>35 AND v3<=59 AND v4>25) OR (v1 BETWEEN 35 AND 82 AND v2 BETWEEN 8 AND 37 AND v3>18 AND v4<=70)) OR (v1<=95 AND v3=70 AND v4=11)) OR (v1 BETWEEN 15 AND 23 AND v2<>24 AND v3<=50 AND v4<>84));",
				Expected: []sql.Row{{"Filter(((((((test.v1 = 76) AND (test.v2 > 35)) AND (test.v3 <= 59)) AND (test.v4 > 25)) OR ((((test.v1 BETWEEN 35 AND 82) AND (test.v2 BETWEEN 8 AND 37)) AND (test.v3 > 18)) AND (test.v4 <= 70))) OR (((test.v1 <= 95) AND (test.v3 = 70)) AND (test.v4 = 11))) OR ((((test.v1 BETWEEN 15 AND 23) AND (NOT((test.v2 = 24)))) AND (test.v3 <= 50)) AND (NOT((test.v4 = 84)))))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((((v1=76 AND v2>35 AND v3<=59 AND v4>25) OR (v1 BETWEEN 35 AND 82 AND v2 BETWEEN 8 AND 37 AND v3>18 AND v4<=70)) OR (v1<=95 AND v3=70 AND v4=11)) OR (v1 BETWEEN 15 AND 23 AND v2<>24 AND v3<=50 AND v4<>84));",
				Expected: []sql.Row{{48, 41, 21, 82, 54}, {28, 22, 21, 28, 78}, {23, 15, 42, 17, 60}, {66, 64, 23, 33, 5}, {24, 17, 49, 14, 7}, {55, 50, 36, 73, 58}, {79, 74, 22, 42, 16}, {29, 22, 98, 22, 21}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {64, 57, 25, 97, 65}, {51, 45, 9, 76, 9}, {26, 20, 30, 34, 71}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>42 AND v2=44 AND v3<>73) OR (v1>24 AND v2>49 AND v3>=7));",
				Expected: []sql.Row{{"Filter((((test.v1 > 42) AND (test.v2 = 44)) AND (NOT((test.v3 = 73)))) OR (((test.v1 > 24) AND (test.v2 > 49)) AND (test.v3 >= 7)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>42 AND v2=44 AND v3<>73) OR (v1>24 AND v2>49 AND v3>=7));",
				Expected: []sql.Row{{99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {81, 76, 74, 97, 18}, {52, 47, 94, 56, 21}, {65, 63, 50, 20, 43}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {78, 73, 91, 56, 0}, {91, 87, 66, 8, 22}, {92, 88, 57, 12, 88}, {36, 33, 53, 56, 88}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {100, 96, 73, 38, 38}, {37, 33, 86, 12, 22}, {60, 52, 72, 44, 2}, {97, 93, 56, 71, 53}, {45, 38, 71, 22, 37}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {69, 64, 77, 41, 17}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=79 AND v3<89 AND v4>=3) OR (v1<63 AND v2<66));",
				Expected: []sql.Row{{"Filter((((test.v1 = 79) AND (test.v3 < 89)) AND (test.v4 >= 3)) OR ((test.v1 < 63) AND (test.v2 < 66)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=79 AND v3<89 AND v4>=3) OR (v1<63 AND v2<66));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {22, 12, 46, 43, 23}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {54, 50, 26, 23, 71}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {12, 7, 7, 66, 62}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {34, 32, 16, 97, 29}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {51, 45, 9, 76, 9}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>66) OR (v1=33)) OR (v1<>39 AND v2>53 AND v3<73 AND v4<75));",
				Expected: []sql.Row{{"Filter(((NOT((test.v1 = 66))) OR (test.v1 = 33)) OR ((((NOT((test.v1 = 39))) AND (test.v2 > 53)) AND (test.v3 < 73)) AND (test.v4 < 75)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>66) OR (v1=33)) OR (v1<>39 AND v2>53 AND v3<73 AND v4<75));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {93, 89, 1, 27, 50}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1=15) OR (v1>36 AND v3=13 AND v4<=98 AND v2 BETWEEN 70 AND 85));",
				Expected: []sql.Row{{"Filter((test.v1 = 15) OR ((((test.v1 > 36) AND (test.v3 = 13)) AND (test.v4 <= 98)) AND (test.v2 BETWEEN 70 AND 85)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1=15) OR (v1>36 AND v3=13 AND v4<=98 AND v2 BETWEEN 70 AND 85));",
				Expected: []sql.Row{{23, 15, 42, 17, 60}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 23 AND 45 AND v4<30) OR (v1>=36 AND v2<>6 AND v3 BETWEEN 30 AND 53)) OR (v1 BETWEEN 41 AND 95));",
				Expected: []sql.Row{{"Filter((((test.v1 BETWEEN 23 AND 45) AND (test.v4 < 30)) OR (((test.v1 >= 36) AND (NOT((test.v2 = 6)))) AND (test.v3 BETWEEN 30 AND 53))) OR (test.v1 BETWEEN 41 AND 95))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 23 AND 45 AND v4<30) OR (v1>=36 AND v2<>6 AND v3 BETWEEN 30 AND 53)) OR (v1 BETWEEN 41 AND 95));",
				Expected: []sql.Row{{49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {31, 24, 26, 69, 25}, {55, 50, 36, 73, 58}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {32, 24, 45, 96, 0}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>6 AND v4<>9 AND v2<>77 AND v3>=81) OR (v1<>21 AND v2>=17 AND v3<=3));",
				Expected: []sql.Row{{"Filter(((((test.v1 > 6) AND (NOT((test.v4 = 9)))) AND (NOT((test.v2 = 77)))) AND (test.v3 >= 81)) OR (((NOT((test.v1 = 21))) AND (test.v2 >= 17)) AND (test.v3 <= 3)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>6 AND v4<>9 AND v2<>77 AND v3>=81) OR (v1<>21 AND v2>=17 AND v3<=3));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {48, 41, 21, 82, 54}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {0, 0, 33, 2, 67}, {34, 32, 16, 97, 29}, {25, 17, 75, 86, 18}, {64, 57, 25, 97, 65}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {32, 24, 45, 96, 0}, {4, 2, 27, 1, 75}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1 BETWEEN 94 AND 99 AND v2>4 AND v3<94 AND v4<=59) OR (v1=19 AND v2 BETWEEN 47 AND 54)) AND (v1>=83) OR (v1 BETWEEN 50 AND 97 AND v2<12 AND v3>23));",
				Expected: []sql.Row{{"Filter(((((((test.v1 BETWEEN 94 AND 99) AND (test.v2 > 4)) AND (test.v3 < 94)) AND (test.v4 <= 59)) OR ((test.v1 = 19) AND (test.v2 BETWEEN 47 AND 54))) AND (test.v1 >= 83)) OR (((test.v1 BETWEEN 50 AND 97) AND (test.v2 < 12)) AND (test.v3 > 23)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1 BETWEEN 94 AND 99 AND v2>4 AND v3<94 AND v4<=59) OR (v1=19 AND v2 BETWEEN 47 AND 54)) AND (v1>=83) OR (v1 BETWEEN 50 AND 97 AND v2<12 AND v3>23));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}, {100, 96, 73, 38, 38}, {61, 53, 6, 53, 89}, {75, 71, 3, 49, 55}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>19 AND v2>46 AND v3=26 AND v4>=47) OR (v1>18 AND v2<=79 AND v3=45 AND v4<=7)) OR (v1 BETWEEN 2 AND 21 AND v2>32));",
				Expected: []sql.Row{{"Filter((((((NOT((test.v1 = 19))) AND (test.v2 > 46)) AND (test.v3 = 26)) AND (test.v4 >= 47)) OR ((((test.v1 > 18) AND (test.v2 <= 79)) AND (test.v3 = 45)) AND (test.v4 <= 7))) OR ((test.v1 BETWEEN 2 AND 21) AND (test.v2 > 32)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>19 AND v2>46 AND v3=26 AND v4>=47) OR (v1>18 AND v2<=79 AND v3=45 AND v4<=7)) OR (v1 BETWEEN 2 AND 21 AND v2>32));",
				Expected: []sql.Row{{22, 12, 46, 43, 23}, {23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}, {11, 5, 76, 70, 46}, {15, 8, 54, 46, 87}, {24, 17, 49, 14, 7}, {14, 7, 76, 26, 47}, {16, 8, 99, 43, 1}, {25, 17, 75, 86, 18}, {19, 10, 36, 27, 5}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (v1>=5) AND (v1=50 AND v2<=50);",
				Expected: []sql.Row{{"Filter((test.v1 >= 5) AND ((test.v1 = 50) AND (test.v2 <= 50)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (v1>=5) AND (v1=50 AND v2<=50);",
				Expected: []sql.Row{{56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {55, 50, 36, 73, 58}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>=82 AND v2 BETWEEN 34 AND 50 AND v3<26 AND v4 BETWEEN 48 AND 76) OR (v1<=6));",
				Expected: []sql.Row{{"Filter(((((test.v1 >= 82) AND (test.v2 BETWEEN 34 AND 50)) AND (test.v3 < 26)) AND (test.v4 BETWEEN 48 AND 76)) OR (test.v1 <= 6))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>=82 AND v2 BETWEEN 34 AND 50 AND v3<26 AND v4 BETWEEN 48 AND 76) OR (v1<=6));",
				Expected: []sql.Row{{9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {8, 4, 27, 77, 5}, {5, 3, 31, 22, 81}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}, {7, 4, 10, 53, 69}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE ((v1>29) OR (v1<>94 AND v2>=56 AND v3=14));",
				Expected: []sql.Row{{"Filter((test.v1 > 29) OR (((NOT((test.v1 = 94))) AND (test.v2 >= 56)) AND (test.v3 = 14)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE ((v1>29) OR (v1<>94 AND v2>=56 AND v3=14));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {93, 89, 1, 27, 50}, {36, 33, 53, 56, 88}, {55, 50, 36, 73, 58}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1>8 AND v2<97 AND v3=51 AND v4<=26) OR (v1>87)) OR (v1<10 AND v2<=45 AND v3>=73));",
				Expected: []sql.Row{{"Filter((((((test.v1 > 8) AND (test.v2 < 97)) AND (test.v3 = 51)) AND (test.v4 <= 26)) OR (test.v1 > 87)) OR (((test.v1 < 10) AND (test.v2 <= 45)) AND (test.v3 >= 73)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1>8 AND v2<97 AND v3=51 AND v4<=26) OR (v1>87)) OR (v1<10 AND v2<=45 AND v3>=73));",
				Expected: []sql.Row{{98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {96, 91, 23, 2, 9}, {95, 90, 25, 0, 17}, {92, 88, 57, 12, 88}, {17, 9, 7, 74, 92}, {93, 89, 1, 27, 50}, {8, 4, 27, 77, 5}, {94, 89, 91, 7, 45}, {13, 7, 21, 75, 70}, {100, 96, 73, 38, 38}, {97, 93, 56, 71, 53}},
			}, {
				Query:    "EXPLAIN SELECT * FROM test WHERE (((v1<>15 AND v2>1) OR (v1<46)) OR (v1>47 AND v2>=9 AND v3 BETWEEN 39 AND 87 AND v4>=10));",
				Expected: []sql.Row{{"Filter((((NOT((test.v1 = 15))) AND (test.v2 > 1)) OR (test.v1 < 46)) OR ((((test.v1 > 47) AND (test.v2 >= 9)) AND (test.v3 BETWEEN 39 AND 87)) AND (test.v4 >= 10)))"}, {" └─ Projected table access on [pk v1 v2 v3 v4]"}, {"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3,test.v4])"}},
			}, {
				Query:    "SELECT * FROM test WHERE (((v1<>15 AND v2>1) OR (v1<46)) OR (v1>47 AND v2>=9 AND v3 BETWEEN 39 AND 87 AND v4>=10));",
				Expected: []sql.Row{{41, 35, 6, 86, 74}, {49, 43, 23, 15, 0}, {98, 94, 43, 71, 43}, {99, 94, 79, 53, 73}, {22, 12, 46, 43, 23}, {40, 34, 89, 27, 90}, {48, 41, 21, 82, 54}, {56, 50, 39, 26, 37}, {76, 71, 48, 89, 99}, {81, 76, 74, 97, 18}, {20, 12, 0, 33, 62}, {35, 33, 29, 69, 6}, {52, 47, 94, 56, 21}, {54, 50, 26, 23, 71}, {65, 63, 50, 20, 43}, {68, 64, 41, 74, 85}, {72, 69, 81, 70, 37}, {87, 84, 56, 78, 18}, {28, 22, 21, 28, 78}, {43, 37, 35, 6, 44}, {90, 87, 23, 16, 63}, {23, 15, 42, 17, 60}, {62, 53, 48, 19, 36}, {78, 73, 91, 56, 0}, {82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {88, 85, 2, 3, 88}, {9, 5, 17, 52, 13}, {21, 12, 42, 15, 31}, {96, 91, 23, 2, 9}, {91, 87, 66, 8, 22}, {95, 90, 25, 0, 17}, {67, 64, 26, 77, 97}, {85, 83, 37, 36, 16}, {92, 88, 57, 12, 88}, {11, 5, 76, 70, 46}, {17, 9, 7, 74, 92}, {10, 5, 32, 30, 48}, {66, 64, 23, 33, 5}, {86, 83, 41, 53, 57}, {0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {15, 8, 54, 46, 87}, {31, 24, 26, 69, 25}, {24, 17, 49, 14, 7}, {36, 33, 53, 56, 88}, {8, 4, 27, 77, 5}, {14, 7, 76, 26, 47}, {55, 50, 36, 73, 58}, {5, 3, 31, 22, 81}, {16, 8, 99, 43, 1}, {39, 34, 87, 13, 51}, {59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {79, 74, 22, 42, 16}, {89, 86, 7, 57, 96}, {94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {12, 7, 7, 66, 62}, {29, 22, 98, 22, 21}, {38, 34, 55, 37, 34}, {42, 36, 7, 40, 16}, {57, 50, 79, 10, 12}, {74, 70, 56, 21, 22}, {1, 0, 55, 14, 32}, {13, 7, 21, 75, 70}, {44, 37, 41, 36, 10}, {46, 39, 45, 75, 55}, {53, 48, 3, 11, 18}, {84, 82, 70, 5, 47}, {100, 96, 73, 38, 38}, {34, 32, 16, 97, 29}, {37, 33, 86, 12, 22}, {25, 17, 75, 86, 18}, {27, 21, 21, 32, 8}, {30, 23, 43, 13, 11}, {47, 41, 1, 85, 9}, {60, 52, 72, 44, 2}, {64, 57, 25, 97, 65}, {7, 4, 10, 53, 69}, {19, 10, 36, 27, 5}, {97, 93, 56, 71, 53}, {77, 73, 10, 2, 0}, {45, 38, 71, 22, 37}, {51, 45, 9, 76, 9}, {33, 29, 72, 97, 93}, {50, 43, 66, 85, 66}, {58, 50, 97, 0, 79}, {71, 67, 39, 87, 15}, {73, 70, 40, 19, 5}, {18, 9, 19, 38, 35}, {32, 24, 45, 96, 0}, {26, 20, 30, 34, 71}, {61, 53, 6, 53, 89}, {63, 55, 31, 29, 92}, {69, 64, 77, 41, 17}, {75, 71, 3, 49, 55}, {80, 74, 35, 72, 97}, {4, 2, 27, 1, 75}, {6, 4, 6, 67, 80}},
			},
		},
	},
}
View Source
var CreateCheckConstraintsScripts = []ScriptTest{
	{
		Name: "Run SHOW CREATE TABLE with different types of check constraints",
		SetUpScript: []string{
			"CREATE TABLE mytable1(pk int PRIMARY KEY, CONSTRAINT check1 CHECK (pk = 5))",
			"ALTER TABLE mytable1 ADD CONSTRAINT check11 CHECK (pk < 6)",
			"CREATE TABLE mytable2(pk int PRIMARY KEY, v int, CONSTRAINT check2 CHECK (v < 5))",
			"ALTER TABLE mytable2 ADD CONSTRAINT check12 CHECK (pk  + v = 6)",
			"CREATE TABLE mytable3(pk int PRIMARY KEY, v int, CONSTRAINT check3 CHECK (pk > 2 AND v < 5))",
			"ALTER TABLE mytable3 ADD CONSTRAINT check13 CHECK (pk BETWEEN 2 AND 100)",
			"CREATE TABLE mytable4(pk int PRIMARY KEY, v int, CONSTRAINT check4 CHECK (pk > 2 AND v < 5 AND pk < 9))",
			"CREATE TABLE mytable5(pk int PRIMARY KEY, v int, CONSTRAINT check5 CHECK (pk > 2 OR (v < 5 AND pk < 9)))",
			"CREATE TABLE mytable6(pk int PRIMARY KEY, v int, CONSTRAINT check6 CHECK (NOT pk))",
			"CREATE TABLE mytable7(pk int PRIMARY KEY, v int, CONSTRAINT check7 CHECK (pk != v))",
			"CREATE TABLE mytable8(pk int PRIMARY KEY, v int, CONSTRAINT check8 CHECK (pk > 2 OR v < 5 OR pk < 10))",
			"CREATE TABLE mytable9(pk int PRIMARY KEY, v int, CONSTRAINT check9 CHECK ((pk + v) / 2 >= 1))",
			"CREATE TABLE mytable10(pk int PRIMARY KEY, v int, CONSTRAINT check10 CHECK (v < 5) NOT ENFORCED)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SHOW CREATE TABLE mytable1",
				Expected: []sql.Row{
					{
						"mytable1",
						"CREATE TABLE `mytable1` (\n  `pk` int NOT NULL,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check1` CHECK (`pk` = 5),\n" +
							"  CONSTRAINT `check11` CHECK (`pk` < 6)\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable2",
				Expected: []sql.Row{
					{
						"mytable2",
						"CREATE TABLE `mytable2` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check2` CHECK (`v` < 5),\n" +
							"  CONSTRAINT `check12` CHECK ((`pk` + `v`) = 6)\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable3",
				Expected: []sql.Row{
					{
						"mytable3",
						"CREATE TABLE `mytable3` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check3` CHECK ((`pk` > 2) AND (`v` < 5)),\n" +
							"  CONSTRAINT `check13` CHECK (`pk` BETWEEN 2 AND 100)\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable4",
				Expected: []sql.Row{
					{
						"mytable4",
						"CREATE TABLE `mytable4` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check4` CHECK (((`pk` > 2) AND (`v` < 5)) AND (`pk` < 9))\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable5",
				Expected: []sql.Row{
					{
						"mytable5",
						"CREATE TABLE `mytable5` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check5` CHECK ((`pk` > 2) OR ((`v` < 5) AND (`pk` < 9)))\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable6",
				Expected: []sql.Row{
					{
						"mytable6",
						"CREATE TABLE `mytable6` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check6` CHECK (NOT(`pk`))\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable7",
				Expected: []sql.Row{
					{
						"mytable7",
						"CREATE TABLE `mytable7` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check7` CHECK (NOT((`pk` = `v`)))\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable8",
				Expected: []sql.Row{
					{
						"mytable8",
						"CREATE TABLE `mytable8` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check8` CHECK (((`pk` > 2) OR (`v` < 5)) OR (`pk` < 10))\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable9",
				Expected: []sql.Row{
					{
						"mytable9",
						"CREATE TABLE `mytable9` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check9` CHECK (((`pk` + `v`) / 2) >= 1)\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
			{
				Query: "SHOW CREATE TABLE mytable10",
				Expected: []sql.Row{
					{
						"mytable10",
						"CREATE TABLE `mytable10` (\n  `pk` int NOT NULL,\n" +
							"  `v` int,\n" +
							"  PRIMARY KEY (`pk`),\n" +
							"  CONSTRAINT `check10` CHECK (`v` < 5) /*!80016 NOT ENFORCED */\n" +
							") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
					},
				},
			},
		},
	},
	{
		Name: "Create a table with a check and validate that it appears in check_constraints and table_constraints",
		SetUpScript: []string{
			"CREATE TABLE mytable (pk int primary key, test_score int, height int, CONSTRAINT mycheck CHECK (test_score >= 50), CONSTRAINT hcheck CHECK (height < 10), CONSTRAINT vcheck CHECK (height > 0))",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * from information_schema.check_constraints where constraint_name IN ('mycheck', 'hcheck') ORDER BY constraint_name",
				Expected: []sql.Row{
					{"def", "mydb", "hcheck", "(height < 10)"},
					{"def", "mydb", "mycheck", "(test_score >= 50)"},
				},
			},
			{
				Query: "SELECT * FROM information_schema.table_constraints where table_name='mytable' ORDER BY constraint_type,constraint_name",
				Expected: []sql.Row{
					{"def", "mydb", "hcheck", "mydb", "mytable", "CHECK", "YES"},
					{"def", "mydb", "mycheck", "mydb", "mytable", "CHECK", "YES"},
					{"def", "mydb", "vcheck", "mydb", "mytable", "CHECK", "YES"},
					{"def", "mydb", "PRIMARY", "mydb", "mytable", "PRIMARY KEY", "YES"},
				},
			},
		},
	},
	{
		Name: "multi column index, lower()",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 varchar(100), v2 varchar(100), INDEX (v1,v2));",
			"INSERT INTO test VALUES (1,'happy','birthday'), (2,'HAPPY','BIRTHDAY'), (3,'hello','sailor');",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT pk FROM test where lower(v1) = 'happy' and lower(v2) = 'birthday' order by 1",
				Expected: []sql.Row{{1}, {2}},
			},
		},
	},
}
View Source
var DateParseQueries = []QueryTest{
	{
		Query:    "SELECT STR_TO_DATE('Jan 3, 2000', '%b %e, %Y')",
		Expected: []sql.Row{{time.Date(2000, time.January, 3, 0, 0, 0, 0, time.Local)}},
	},
	{
		Query:    "SELECT STR_TO_DATE('May 3, 10:23:00 PM 2000', '%b %e, %H:%i:%s %p %Y')",
		Expected: []sql.Row{{time.Date(2000, time.May, 3, 22, 23, 0, 0, time.Local)}},
	},
	{
		Query:    "SELECT STR_TO_DATE('01/02/99 314', '%m/%e/%y %f')",
		Expected: []sql.Row{{time.Date(1999, time.January, 2, 0, 0, 0, 314000, time.Local)}},
	},
	{
		Query:    "SELECT STR_TO_DATE('01/02/99 05:14:12 PM', '%m/%e/%y %r')",
		Expected: []sql.Row{{time.Date(1999, time.January, 2, 17, 14, 12, 0, time.Local)}},
	},
	{
		Query:    "SELECT STR_TO_DATE('invalid', 'notvalid')",
		Expected: []sql.Row{{sql.Null}},
	},
}
View Source
var DeleteErrorTests = []GenericErrorQueryTest{
	{
		Name:  "invalid table",
		Query: "DELETE FROM invalidtable WHERE x < 1;",
	},
	{
		Name:  "invalid column",
		Query: "DELETE FROM mytable WHERE z = 'dne';",
	},
	{
		Name:  "missing binding",
		Query: "DELETE FROM mytable WHERE i = ?;",
	},
	{
		Name:  "negative limit",
		Query: "DELETE FROM mytable LIMIT -1;",
	},
	{
		Name:  "negative offset",
		Query: "DELETE FROM mytable LIMIT 1 OFFSET -1;",
	},
	{
		Name:  "missing keyword from",
		Query: "DELETE mytable WHERE id = 1;",
	},
	{
		Name:  "targets join",
		Query: "DELETE FROM mytable one, mytable two WHERE id = 1;",
	},
	{
		Name:  "targets subquery alias",
		Query: "DELETE FROM (SELECT * FROM mytable) mytable WHERE id = 1;",
	},
}
View Source
var DeleteTests = []WriteQueryTest{
	{
		WriteQuery:          "DELETE FROM mytable;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      nil,
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i = 2;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE I = 2;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i = ?;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}},
		Bindings: map[string]sql.Expression{
			"v1": expression.NewLiteral(int64(2), sql.Int64),
		},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i < 3;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i > 1;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i <= 2;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i >= 2;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE s = 'first row';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE s <> 'dne';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      nil,
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i in (2,3);",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE s LIKE '%row';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      nil,
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE s = 'dne';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(0)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE i = 'invalid';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(0)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable ORDER BY i ASC LIMIT 2;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable ORDER BY i DESC LIMIT 1;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable ORDER BY i DESC LIMIT 1 OFFSET 1;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "DELETE FROM mytable WHERE (i,s) = (1, 'first row');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          `DELETE FROM tabletest where 's' = 'something'`,
		ExpectedWriteResult: []sql.Row{{sql.OkResult{RowsAffected: 0}}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}},
	},
}
View Source
var ExplodeQueries = []QueryTest{
	{
		Query: `SELECT a, EXPLODE(b), c FROM t`,
		Expected: []sql.Row{
			{int64(1), "a", "first"},
			{int64(1), "b", "first"},
			{int64(2), "c", "second"},
			{int64(2), "d", "second"},
			{int64(3), "e", "third"},
			{int64(3), "f", "third"},
		},
	},
	{
		Query: `SELECT a, EXPLODE(b) AS x, c FROM t`,
		Expected: []sql.Row{
			{int64(1), "a", "first"},
			{int64(1), "b", "first"},
			{int64(2), "c", "second"},
			{int64(2), "d", "second"},
			{int64(3), "e", "third"},
			{int64(3), "f", "third"},
		},
	},
	{
		Query: `SELECT EXPLODE(SPLIT(c, "")) FROM t LIMIT 5`,
		Expected: []sql.Row{
			{"f"},
			{"i"},
			{"r"},
			{"s"},
			{"t"},
		},
	},
	{
		Query: `SELECT a, EXPLODE(b) AS x, c FROM t WHERE x = 'e'`,
		Expected: []sql.Row{
			{int64(3), "e", "third"},
		},
	},
	{
		Query: `SELECT HEX(UNHEX(375));`,
		Expected: []sql.Row{
			{"0375"},
		},
	},
}
View Source
var GenericUpdateErrorTests = []GenericErrorQueryTest{
	{
		Name:  "invalid table",
		Query: "UPDATE doesnotexist SET i = 0;",
	},
	{
		Name:  "missing binding",
		Query: "UPDATE mytable SET i = ?;",
	},
	{
		Name:  "wrong number of columns",
		Query: `UPDATE mytable SET i = ("one", "two");`,
	},
	{
		Name:  "type mismatch: string -> int",
		Query: `UPDATE mytable SET i = "one"`,
	},
	{
		Name:  "type mismatch: string -> float",
		Query: `UPDATE floattable SET f64 = "one"`,
	},
	{
		Name:  "type mismatch: string -> uint",
		Query: `UPDATE typestable SET f64 = "one"`,
	},
	{
		Name:  "invalid column set",
		Query: "UPDATE mytable SET z = 0;",
	},
	{
		Name:  "invalid column set value",
		Query: "UPDATE mytable SET i = z;",
	},
	{
		Name:  "invalid column where",
		Query: "UPDATE mytable SET s = 'hi' WHERE z = 1;",
	},
	{
		Name:  "invalid column order by",
		Query: "UPDATE mytable SET s = 'hi' ORDER BY z;",
	},
	{
		Name:  "negative limit",
		Query: "UPDATE mytable SET s = 'hi' LIMIT -1;",
	},
	{
		Name:  "negative offset",
		Query: "UPDATE mytable SET s = 'hi' LIMIT 1 OFFSET -1;",
	},
	{
		Name:  "set null on non-nullable",
		Query: "UPDATE mytable SET s = NULL;",
	},
	{
		Name:  "targets join",
		Query: "UPDATE mytable one, mytable two SET s = NULL;",
	},
	{
		Name:  "targets subquery alias",
		Query: "UPDATE (SELECT * FROM mytable) mytable SET s = NULL;",
	},
}
View Source
var InfoSchemaQueries = []QueryTest{
	{
		Query: "SHOW TABLES",
		Expected: []sql.Row{
			{"auto_increment_tbl"},
			{"bigtable"},
			{"floattable"},
			{"fk_tbl"},
			{"mytable"},
			{"myview"},
			{"newlinetable"},
			{"niltable"},
			{"one_pk_three_idx"},
			{"one_pk_two_idx"},
			{"othertable"},
			{"tabletest"},
			{"people"},
			{"datetime_table"},
			{"invert_pk"},
		},
	},
	{
		Query: "SHOW FULL TABLES",
		Expected: []sql.Row{
			{"auto_increment_tbl", "BASE TABLE"},
			{"bigtable", "BASE TABLE"},
			{"fk_tbl", "BASE TABLE"},
			{"floattable", "BASE TABLE"},
			{"mytable", "BASE TABLE"},
			{"myview", "VIEW"},
			{"newlinetable", "BASE TABLE"},
			{"niltable", "BASE TABLE"},
			{"one_pk_three_idx", "BASE TABLE"},
			{"one_pk_two_idx", "BASE TABLE"},
			{"othertable", "BASE TABLE"},
			{"tabletest", "BASE TABLE"},
			{"people", "BASE TABLE"},
			{"datetime_table", "BASE TABLE"},
			{"invert_pk", "BASE TABLE"},
		},
	},
	{
		Query: "SHOW TABLES FROM foo",
		Expected: []sql.Row{
			{"other_table"},
		},
	},
	{
		Query: "SHOW TABLES LIKE '%table'",
		Expected: []sql.Row{
			{"mytable"},
			{"othertable"},
			{"bigtable"},
			{"floattable"},
			{"niltable"},
			{"newlinetable"},
			{"datetime_table"},
		},
	},
	{
		Query: `SHOW COLUMNS FROM mytable`,
		Expected: []sql.Row{
			{"i", "bigint", "NO", "PRI", "", ""},
			{"s", "varchar(20)", "NO", "UNI", "", ""},
		},
	},
	{
		Query: `DESCRIBE mytable`,
		Expected: []sql.Row{
			{"i", "bigint", "NO", "PRI", "", ""},
			{"s", "varchar(20)", "NO", "UNI", "", ""},
		},
	},
	{
		Query: `DESC mytable`,
		Expected: []sql.Row{
			{"i", "bigint", "NO", "PRI", "", ""},
			{"s", "varchar(20)", "NO", "UNI", "", ""},
		},
	},
	{
		Query: `DESCRIBE auto_increment_tbl`,
		Expected: []sql.Row{
			{"pk", "bigint", "NO", "PRI", "", "auto_increment"},
			{"c0", "bigint", "YES", "", "", ""},
		},
	},
	{
		Query: `SHOW COLUMNS FROM mytable WHERE Field = 'i'`,
		Expected: []sql.Row{
			{"i", "bigint", "NO", "PRI", "", ""},
		},
	},
	{
		Query: `SHOW COLUMNS FROM mytable LIKE 'i'`,
		Expected: []sql.Row{
			{"i", "bigint", "NO", "PRI", "", ""},
		},
	},
	{
		Query: `SHOW FULL COLUMNS FROM mytable`,
		Expected: []sql.Row{
			{"i", "bigint", nil, "NO", "PRI", "", "", "", ""},
			{"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "UNI", "", "", "", "column s"},
		},
	},
	{
		Query: "SHOW TABLES WHERE `Table` = 'mytable'",
		Expected: []sql.Row{
			{"mytable"},
		},
	},
	{
		Query: `
		SELECT
			LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA
		FROM INFORMATION_SCHEMA.FILES
		WHERE FILE_TYPE = 'UNDO LOG'
			AND FILE_NAME IS NOT NULL
			AND LOGFILE_GROUP_NAME IS NOT NULL
		GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE
		ORDER BY LOGFILE_GROUP_NAME
		`,
		Expected: nil,
	},
	{
		Query: `
		SELECT DISTINCT
			TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE
		FROM INFORMATION_SCHEMA.FILES
		WHERE FILE_TYPE = 'DATAFILE'
		ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
		`,
		Expected: nil,
	},
	{
		Query: `
		SELECT
			COLUMN_NAME,
			JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')
		FROM information_schema.COLUMN_STATISTICS
		WHERE SCHEMA_NAME = 'mydb'
		AND TABLE_NAME = 'mytable'
		`,
		Expected: nil,
	},
	{
		Query: `
		SELECT TABLE_NAME FROM information_schema.TABLES
		WHERE TABLE_SCHEMA='mydb' AND (TABLE_TYPE='BASE TABLE' OR TABLE_TYPE='VIEW')
		ORDER BY 1
		`,
		Expected: []sql.Row{
			{"auto_increment_tbl"},
			{"bigtable"},
			{"datetime_table"},
			{"fk_tbl"},
			{"floattable"},
			{"invert_pk"},
			{"mytable"},
			{"myview"},
			{"newlinetable"},
			{"niltable"},
			{"one_pk_three_idx"},
			{"one_pk_two_idx"},
			{"othertable"},
			{"people"},
			{"tabletest"},
		},
	},
	{
		Query: `
		SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS
		WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='mytable'
		`,
		Expected: []sql.Row{
			{"s", "varchar(20)"},
			{"i", "bigint"},
		},
	},
	{
		Query: `
		SELECT COLUMN_NAME FROM information_schema.COLUMNS
		WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table'
		GROUP BY COLUMN_NAME
		`,
		Expected: []sql.Row{
			{"s"},
			{"i"},
			{"s2"},
			{"i2"},
			{"t"},
			{"n"},
			{"f32"},
			{"f64"},
			{"b"},
			{"f"},
			{"date_col"},
			{"datetime_col"},
			{"timestamp_col"},
		},
	},
	{
		Query: `
		SELECT COLUMN_NAME FROM information_schema.COLUMNS
		WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table'
		GROUP BY 1
		`,
		Expected: []sql.Row{
			{"s"},
			{"i"},
			{"s2"},
			{"i2"},
			{"t"},
			{"n"},
			{"f32"},
			{"f64"},
			{"b"},
			{"f"},
			{"date_col"},
			{"datetime_col"},
			{"timestamp_col"},
		},
	},
	{
		Query: `
		SELECT COLUMN_NAME AS COLUMN_NAME FROM information_schema.COLUMNS
		WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table'
		GROUP BY 1
		`,
		Expected: []sql.Row{
			{"s"},
			{"i"},
			{"s2"},
			{"i2"},
			{"t"},
			{"n"},
			{"f32"},
			{"f64"},
			{"b"},
			{"f"},
			{"date_col"},
			{"datetime_col"},
			{"timestamp_col"},
		},
	},
	{
		Query: `
		SELECT COLUMN_NAME AS COLUMN_NAME FROM information_schema.COLUMNS
		WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table'
		GROUP BY 1 HAVING SUBSTRING(COLUMN_NAME, 1, 1) = "s"
		`,
		Expected: []sql.Row{{"s"}, {"s2"}},
	},
	{
		Query: `SHOW INDEXES FROM mytaBLE`,
		Expected: []sql.Row{
			{"mytable", 0, "PRIMARY", 1, "i", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
			{"mytable", 0, "mytable_s", 1, "s", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
			{"mytable", 1, "mytable_i_s", 1, "i", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
			{"mytable", 1, "mytable_i_s", 2, "s", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
		},
	},
	{
		Query: `SHOW KEYS FROM mytaBLE`,
		Expected: []sql.Row{
			{"mytable", 0, "PRIMARY", 1, "i", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
			{"mytable", 0, "mytable_s", 1, "s", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
			{"mytable", 1, "mytable_i_s", 1, "i", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
			{"mytable", 1, "mytable_i_s", 2, "s", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil},
		},
	},
	{
		Query: `SHOW CREATE TABLE mytaBLE`,
		Expected: []sql.Row{
			{"mytable", "CREATE TABLE `mytable` (\n" +
				"  `i` bigint NOT NULL,\n" +
				"  `s` varchar(20) NOT NULL COMMENT 'column s',\n" +
				"  PRIMARY KEY (`i`),\n" +
				"  KEY `mytable_i_s` (`i`,`s`),\n" +
				"  UNIQUE KEY `mytable_s` (`s`)\n" +
				") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"},
		},
	},
	{
		Query: `SHOW CREATE TABLE fk_TBL`,
		Expected: []sql.Row{
			{"fk_tbl", "CREATE TABLE `fk_tbl` (\n" +
				"  `pk` bigint NOT NULL,\n" +
				"  `a` bigint,\n" +
				"  `b` varchar(20),\n" +
				"  PRIMARY KEY (`pk`),\n" +
				"  CONSTRAINT `fk1` FOREIGN KEY (`a`,`b`) REFERENCES `mytable` (`i`,`s`) ON DELETE CASCADE\n" +
				") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"},
		},
	},
	{

		Query: "SELECT table_name, `auto_increment` FROM information_schema.tables " +
			"WHERE TABLE_SCHEMA='mydb' AND TABLE_TYPE='BASE TABLE' ORDER BY 1",
		Expected: []sql.Row{
			{"auto_increment_tbl", 4},
			{"bigtable", nil},
			{"datetime_table", nil},
			{"fk_tbl", nil},
			{"floattable", nil},
			{"invert_pk", nil},
			{"mytable", nil},
			{"newlinetable", nil},
			{"niltable", nil},
			{"one_pk_three_idx", nil},
			{"one_pk_two_idx", nil},
			{"othertable", nil},
			{"people", nil},
			{"tabletest", nil},
		},
	},
	{
		Query: "SHOW ENGINES",
		Expected: []sql.Row{
			{"InnoDB", "DEFAULT", "Supports transactions, row-level locking, and foreign keys", "YES", "YES", "YES"},
		},
	},
	{
		Query: "SELECT * FROM information_schema.table_constraints ORDER BY table_name, constraint_type;",
		Expected: []sql.Row{
			{"def", "mydb", "PRIMARY", "mydb", "auto_increment_tbl", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "bigtable", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "datetime_table", "PRIMARY KEY", "YES"},
			{"def", "mydb", "fk1", "mydb", "fk_tbl", "FOREIGN KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "fk_tbl", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "floattable", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "invert_pk", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "mytable", "PRIMARY KEY", "YES"},
			{"def", "mydb", "mytable_s", "mydb", "mytable", "UNIQUE", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "newlinetable", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "niltable", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "one_pk_three_idx", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "one_pk_two_idx", "PRIMARY KEY", "YES"},
			{"def", "foo", "PRIMARY", "foo", "other_table", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "othertable", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "people", "PRIMARY KEY", "YES"},
			{"def", "mydb", "PRIMARY", "mydb", "tabletest", "PRIMARY KEY", "YES"},
		},
	},
	{
		Query:    "SELECT * FROM information_schema.check_constraints ORDER BY constraint_schema, constraint_name, check_clause ",
		Expected: []sql.Row{},
	},
	{
		Query: "SELECT * FROM information_schema.key_column_usage ORDER BY constraint_schema, table_name",
		Expected: []sql.Row{
			{"def", "foo", "PRIMARY", "def", "foo", "other_table", "text", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "auto_increment_tbl", "pk", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "bigtable", "t", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "datetime_table", "i", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "fk_tbl", "pk", 1, nil, nil, nil, nil},
			{"def", "mydb", "fk1", "def", "mydb", "fk_tbl", "a", 1, 1, "mydb", "mytable", "i"},
			{"def", "mydb", "fk1", "def", "mydb", "fk_tbl", "b", 2, 2, "mydb", "mytable", "s"},
			{"def", "mydb", "PRIMARY", "def", "mydb", "floattable", "i", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "invert_pk", "y", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "invert_pk", "z", 2, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "invert_pk", "x", 3, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "mytable", "i", 1, nil, nil, nil, nil},
			{"def", "mydb", "mytable_s", "def", "mydb", "mytable", "s", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "newlinetable", "i", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "niltable", "i", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "one_pk_three_idx", "pk", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "one_pk_two_idx", "pk", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "othertable", "i2", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "people", "dob", 1, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "people", "first_name", 2, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "people", "last_name", 3, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "people", "middle_name", 4, nil, nil, nil, nil},
			{"def", "mydb", "PRIMARY", "def", "mydb", "tabletest", "i", 1, nil, nil, nil, nil},
		},
	},
	{
		Query:    "SELECT * FROM information_schema.partitions",
		Expected: []sql.Row{},
	},
}
View Source
var InfoSchemaScripts = []ScriptTest{
	{
		Name: "describe auto_increment table",
		SetUpScript: []string{
			"create table auto (pk int primary key auto_increment)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "describe auto;",
				Expected: []sql.Row{
					{"pk", "int", "NO", "PRI", "", "auto_increment"},
				},
			},
		},
	},
	{
		Name: "information_schema.table_constraints ignores non-unique indexes",
		SetUpScript: []string{
			"CREATE TABLE mytable (pk int primary key, test_score int, height int)",
			"CREATE INDEX myindex on mytable(test_score)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM information_schema.table_constraints where table_name='mytable' ORDER BY constraint_type,constraint_name",
				Expected: []sql.Row{
					{"def", "mydb", "PRIMARY", "mydb", "mytable", "PRIMARY KEY", "YES"},
				},
			},
		},
	},
	{
		Name: "information_schema.key_column_usage ignores non-unique indexes",
		SetUpScript: []string{
			"CREATE TABLE mytable (pk int primary key, test_score int, height int)",
			"CREATE INDEX myindex on mytable(test_score)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM information_schema.key_column_usage where table_name='mytable'",
				Expected: []sql.Row{
					{"def", "mydb", "PRIMARY", "def", "mydb", "mytable", "pk", 1, nil, nil, nil, nil},
				},
			},
		},
	},
	{
		Name: "information_schema.key_column_usage works with composite foreign keys",
		SetUpScript: []string{
			"CREATE TABLE ptable (pk int primary key, test_score int, height int)",
			"CREATE INDEX myindex on ptable(test_score, height)",
			"CREATE TABLE ptable2 (pk int primary key, test_score2 int, height2 int, CONSTRAINT fkr FOREIGN KEY (test_score2, height2) REFERENCES ptable(test_score,height));",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM information_schema.key_column_usage where table_name='ptable2' ORDER BY constraint_name",
				Expected: []sql.Row{
					{"def", "mydb", "PRIMARY", "def", "mydb", "ptable2", "pk", 1, nil, nil, nil, nil},
					{"def", "mydb", "fkr", "def", "mydb", "ptable2", "test_score2", 1, 1, "mydb", "ptable", "test_score"},
					{"def", "mydb", "fkr", "def", "mydb", "ptable2", "height2", 2, 2, "mydb", "ptable", "height"},
				},
			},
		},
	},
	{
		Name: "information_schema.key_column_usage works with composite primary keys",
		SetUpScript: []string{
			"CREATE TABLE ptable (pk int, test_score int, height int, PRIMARY KEY (pk, test_score))",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM information_schema.key_column_usage where table_name='ptable' ORDER BY constraint_name",
				Expected: []sql.Row{
					{"def", "mydb", "PRIMARY", "def", "mydb", "ptable", "pk", 1, nil, nil, nil, nil},
					{"def", "mydb", "PRIMARY", "def", "mydb", "ptable", "test_score", 2, nil, nil, nil, nil},
				},
			},
		},
	},
}
View Source
var InsertErrorScripts = []ScriptTest{
	{
		Name:        "create table with non-pk auto_increment column",
		Query:       "create table bad (pk int primary key, c0 int auto_increment);",
		ExpectedErr: sql.ErrInvalidAutoIncCols,
	},
	{
		Name:        "create multiple auto_increment columns",
		Query:       "create table bad (pk1 int auto_increment, pk2 int auto_increment, primary key (pk1,pk2));",
		ExpectedErr: sql.ErrInvalidAutoIncCols,
	},
	{
		Name:        "create auto_increment column with default",
		Query:       "create table bad (pk1 int auto_increment default 10, c0 int);",
		ExpectedErr: sql.ErrInvalidAutoIncCols,
	},
}
View Source
var InsertErrorTests = []GenericErrorQueryTest{
	{
		Name:  "try to insert empty into col without default value",
		Query: "INSERT INTO mytable VALUES ();",
	},
	{
		Name:  "try to insert empty into col without default value",
		Query: "INSERT INTO mytable () VALUES ();",
	},
	{
		Name:  "too few values",
		Query: "INSERT INTO mytable (s, i) VALUES ('x');",
	},
	{
		Name:  "too many values one column",
		Query: "INSERT INTO mytable (s) VALUES ('x', 999);",
	},
	{
		Name:  "missing binding",
		Query: "INSERT INTO mytable (s) VALUES (?);",
	},
	{
		Name:  "too many values two columns",
		Query: "INSERT INTO mytable (i, s) VALUES (999, 'x', 'y');",
	},
	{
		Name:  "too few values no columns specified",
		Query: "INSERT INTO mytable VALUES (999);",
	},
	{
		Name:  "too many values no columns specified",
		Query: "INSERT INTO mytable VALUES (999, 'x', 'y');",
	},
	{
		Name:  "non-existent column values",
		Query: "INSERT INTO mytable (i, s, z) VALUES (999, 'x', 999);",
	},
	{
		Name:  "non-existent column set",
		Query: "INSERT INTO mytable SET i = 999, s = 'x', z = 999;",
	},
	{
		Name:  "duplicate column",
		Query: "INSERT INTO mytable (i, s, s) VALUES (999, 'x', 'x');",
	},
	{
		Name:  "duplicate column set",
		Query: "INSERT INTO mytable SET i = 999, s = 'y', s = 'y';",
	},
	{
		Name:  "null given to non-nullable",
		Query: "INSERT INTO mytable (i, s) VALUES (null, 'y');",
	},
	{
		Name:  "incompatible types",
		Query: "INSERT INTO mytable (i, s) select * FROM othertable",
	},
	{
		Name:  "column count mismatch in select",
		Query: "INSERT INTO mytable (i) select * FROM othertable",
	},
	{
		Name:  "column count mismatch in select",
		Query: "INSERT INTO mytable select s FROM othertable",
	},
	{
		Name:  "column count mismatch in join select",
		Query: "INSERT INTO mytable (s,i) SELECT * FROM othertable o JOIN mytable m ON m.i=o.i2",
	},
	{
		Name:  "duplicate key",
		Query: "INSERT INTO mytable (i,s) values (1, 'hello')",
	},
	{
		Name:  "duplicate keys",
		Query: "INSERT INTO mytable SELECT * from mytable",
	},
	{
		Name:  "bad column in on duplicate key update clause",
		Query: "INSERT INTO mytable values (10, 'b') ON DUPLICATE KEY UPDATE notExist = 1",
	},
}
View Source
var InsertIgnoreScripts = []ScriptTest{
	{
		Name: "Test that INSERT IGNORE with Non nullable columns works",
		SetUpScript: []string{
			"CREATE TABLE x (pk int primary key, c1 varchar(20) NOT NULL);",
			"INSERT IGNORE INTO x VALUES (1, NULL)",
			"CREATE TABLE y (pk int primary key, c1 int NOT NULL);",
			"INSERT IGNORE INTO y VALUES (1, NULL);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM x",
				Expected: []sql.Row{
					{1, ""},
				},
			},
			{
				Query: "SELECT * FROM y",
				Expected: []sql.Row{
					{1, 0},
				},
			},
			{
				Query: "INSERT IGNORE INTO y VALUES (2, NULL)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
				ExpectedWarning: mysql.ERBadNullError,
			},
		},
	},
	{
		Name: "Test that INSERT IGNORE INTO works with unique keys",
		SetUpScript: []string{
			"CREATE TABLE mytable(pk int PRIMARY KEY, value varchar(10) UNIQUE)",
			"INSERT INTO mytable values (1,'one')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "INSERT IGNORE INTO mytable VALUES (2, 'one')",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 0}},
				},
				ExpectedWarning: mysql.ERDupEntry,
			},
		},
	},
	{
		Name: "Test that INSERT IGNORE works with FK Violations",
		SetUpScript: []string{
			"CREATE TABLE t1 (id INT PRIMARY KEY, v int);",
			"CREATE TABLE t2 (id INT PRIMARY KEY, v2 int, CONSTRAINT mfk FOREIGN KEY (v2) REFERENCES t1(id));",
			"INSERT INTO t1 values (1,1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "INSERT IGNORE INTO t2 VALUES (1,2);",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 0}},
				},
				ExpectedWarning: mysql.ErNoReferencedRow2,
			},
		},
	},
}
View Source
var InsertQueries = []WriteQueryTest{
	{
		WriteQuery:          "INSERT INTO keyless VALUES ();",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM keyless WHERE c0 IS NULL;",
		ExpectedSelect:      []sql.Row{{nil, nil}},
	},
	{
		WriteQuery:          "INSERT INTO keyless () VALUES ();",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM keyless WHERE c0 IS NULL;",
		ExpectedSelect:      []sql.Row{{nil, nil}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (s, i) VALUES ('x', '10.0');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(10)}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (s, i) VALUES ('x', '64.6');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(64)}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (s, i) VALUES ('x', 999);",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "INSERT INTO niltable (i, f) VALUES (10, 10.0), (12, 12.0);",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT i,f FROM niltable WHERE f IN (10.0, 12.0) ORDER BY f;",
		ExpectedSelect:      []sql.Row{{int64(10), 10.0}, {int64(12), 12.0}},
	},
	{
		WriteQuery:          "INSERT INTO mytable SET s = 'x', i = 999;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "INSERT INTO mytable VALUES (999, 'x');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "INSERT INTO mytable VALUES (?, ?);",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
		Bindings: map[string]sql.Expression{
			"v1": expression.NewLiteral(int64(999), sql.Int64),
			"v2": expression.NewLiteral("x", sql.Text),
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable VALUES (:col1, :col2);",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
		Bindings: map[string]sql.Expression{
			"col1": expression.NewLiteral(int64(999), sql.Int64),
			"col2": expression.NewLiteral("x", sql.Text),
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable SET i = 999, s = 'x';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "INSERT INTO mytable VALUES (999, _binary 'x');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT s FROM mytable WHERE i = 999;",
		ExpectedSelect:      []sql.Row{{"x"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable SET i = 999, s = _binary 'x';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT s FROM mytable WHERE i = 999;",
		ExpectedSelect:      []sql.Row{{"x"}},
	},
	{
		WriteQuery: `INSERT INTO typestable VALUES (
			999, 127, 32767, 2147483647, 9223372036854775807,
			255, 65535, 4294967295, 18446744073709551615,
			3.40282346638528859811704183484516925440e+38, 1.797693134862315708145274237317043567981e+308,
			'2037-04-05 12:51:36', '2231-11-07',
			'random text', true, '{"key":"value"}', 'blobdata'
			);`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(math.MaxInt8), int16(math.MaxInt16), int32(math.MaxInt32), int64(math.MaxInt64),
			uint8(math.MaxUint8), uint16(math.MaxUint16), uint32(math.MaxUint32), uint64(math.MaxUint64),
			float32(math.MaxFloat32), float64(math.MaxFloat64),
			sql.MustConvert(sql.Timestamp.Convert("2037-04-05 12:51:36")), sql.MustConvert(sql.Date.Convert("2231-11-07")),
			"random text", sql.True, sql.MustJSON(`{"key":"value"}`), "blobdata",
		}},
	},
	{
		WriteQuery: `INSERT INTO typestable SET
			id = 999, i8 = 127, i16 = 32767, i32 = 2147483647, i64 = 9223372036854775807,
			u8 = 255, u16 = 65535, u32 = 4294967295, u64 = 18446744073709551615,
			f32 = 3.40282346638528859811704183484516925440e+38, f64 = 1.797693134862315708145274237317043567981e+308,
			ti = '2037-04-05 12:51:36', da = '2231-11-07',
			te = 'random text', bo = true, js = '{"key":"value"}', bl = 'blobdata'
			;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(math.MaxInt8), int16(math.MaxInt16), int32(math.MaxInt32), int64(math.MaxInt64),
			uint8(math.MaxUint8), uint16(math.MaxUint16), uint32(math.MaxUint32), uint64(math.MaxUint64),
			float32(math.MaxFloat32), float64(math.MaxFloat64),
			sql.MustConvert(sql.Timestamp.Convert("2037-04-05 12:51:36")), sql.MustConvert(sql.Date.Convert("2231-11-07")),
			"random text", sql.True, sql.MustJSON(`{"key":"value"}`), "blobdata",
		}},
	},
	{
		WriteQuery: `INSERT INTO typestable VALUES (
			999, -128, -32768, -2147483648, -9223372036854775808,
			0, 0, 0, 0,
			1.401298464324817070923729583289916131280e-45, 4.940656458412465441765687928682213723651e-324,
			'0000-00-00 00:00:00', '0000-00-00',
			'', false, '""', ''
			);`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(-math.MaxInt8 - 1), int16(-math.MaxInt16 - 1), int32(-math.MaxInt32 - 1), int64(-math.MaxInt64 - 1),
			uint8(0), uint16(0), uint32(0), uint64(0),
			float32(math.SmallestNonzeroFloat32), float64(math.SmallestNonzeroFloat64),
			sql.Timestamp.Zero(), sql.Date.Zero(),
			"", sql.False, sql.MustJSON(`""`), "",
		}},
	},
	{
		WriteQuery: `INSERT INTO typestable SET
			id = 999, i8 = -128, i16 = -32768, i32 = -2147483648, i64 = -9223372036854775808,
			u8 = 0, u16 = 0, u32 = 0, u64 = 0,
			f32 = 1.401298464324817070923729583289916131280e-45, f64 = 4.940656458412465441765687928682213723651e-324,
			ti = '0000-00-00 00:00:00', da = '0000-00-00',
			te = '', bo = false, js = '""', bl = ''
			;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(-math.MaxInt8 - 1), int16(-math.MaxInt16 - 1), int32(-math.MaxInt32 - 1), int64(-math.MaxInt64 - 1),
			uint8(0), uint16(0), uint32(0), uint64(0),
			float32(math.SmallestNonzeroFloat32), float64(math.SmallestNonzeroFloat64),
			sql.Timestamp.Zero(), sql.Date.Zero(),
			"", sql.False, sql.MustJSON(`""`), "",
		}},
	},
	{
		WriteQuery: `INSERT INTO typestable SET
			id = 999, i8 = -128, i16 = -32768, i32 = -2147483648, i64 = -9223372036854775808,
			u8 = 0, u16 = 0, u32 = 0, u64 = 0,
			f32 = 1.401298464324817070923729583289916131280e-45, f64 = 4.940656458412465441765687928682213723651e-324,
			ti = '2037-04-05 12:51:36 -0000 UTC', da = '0000-00-00',
			te = '', bo = false, js = '""', bl = ''
			;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(-math.MaxInt8 - 1), int16(-math.MaxInt16 - 1), int32(-math.MaxInt32 - 1), int64(-math.MaxInt64 - 1),
			uint8(0), uint16(0), uint32(0), uint64(0),
			float32(math.SmallestNonzeroFloat32), float64(math.SmallestNonzeroFloat64),
			sql.MustConvert(sql.Timestamp.Convert("2037-04-05 12:51:36")), sql.Date.Zero(),
			"", sql.False, sql.MustJSON(`""`), "",
		}},
	},
	{
		WriteQuery:          `INSERT INTO mytable (i,s) VALUES (10, 'NULL')`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 10;",
		ExpectedSelect:      []sql.Row{{int64(10), "NULL"}},
	},
	{
		WriteQuery: `INSERT INTO typestable VALUES (999, null, null, null, null, null, null, null, null,
			null, null, null, null, null, null, null, null);`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect:      []sql.Row{{int64(999), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil}},
	},
	{
		WriteQuery:          `INSERT INTO typestable (id, ti, da) VALUES (999, '2021-09-1', '2021-9-01');`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT id, ti, da FROM typestable WHERE id = 999;",
		ExpectedSelect:      []sql.Row{{int64(999), sql.MustConvert(sql.Timestamp.Convert("2021-09-01")), sql.MustConvert(sql.Date.Convert("2021-09-01"))}},
	},
	{
		WriteQuery: `INSERT INTO typestable SET id=999, i8=null, i16=null, i32=null, i64=null, u8=null, u16=null, u32=null, u64=null,
			f32=null, f64=null, ti=null, da=null, te=null, bo=null, js=null, bl=null;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect:      []sql.Row{{int64(999), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil}},
	},
	{
		WriteQuery:          "INSERT INTO mytable SELECT i+100,s FROM mytable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "second row"},
			{int64(3), "third row"},
			{int64(101), "first row"},
			{int64(102), "second row"},
			{int64(103), "third row"},
		},
	},
	{
		WriteQuery:          "INSERT INTO emptytable SELECT * FROM mytable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "second row"},
			{int64(3), "third row"},
		},
	},
	{
		WriteQuery:          "INSERT INTO emptytable SELECT * FROM mytable where mytable.i > 2",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i",
		ExpectedSelect: []sql.Row{
			{int64(3), "third row"},
		},
	},
	{
		WriteQuery:          "INSERT INTO niltable (i,f) SELECT i+10, NULL FROM mytable where mytable.i > 2",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM niltable where i > 10 ORDER BY i",
		ExpectedSelect: []sql.Row{
			{13, nil, nil, nil},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) SELECT i+10, 'new' FROM mytable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "second row"},
			{int64(3), "third row"},
			{int64(11), "new"},
			{int64(12), "new"},
			{int64(13), "new"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable SELECT i2+100, s2 FROM othertable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "second row"},
			{int64(3), "third row"},
			{int64(101), "third"},
			{int64(102), "second"},
			{int64(103), "first"},
		},
	},
	{
		WriteQuery:          "INSERT INTO emptytable (s,i) SELECT * FROM othertable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "third"},
			{int64(2), "second"},
			{int64(3), "first"},
		},
	},
	{
		WriteQuery:          "INSERT INTO emptytable (s,i) SELECT concat(m.s, o.s2), m.i FROM othertable o JOIN mytable m ON m.i=o.i2",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first rowthird"},
			{int64(2), "second rowsecond"},
			{int64(3), "third rowfirst"},
		},
	},
	{
		WriteQuery: `INSERT INTO emptytable (s,i) SELECT s,i from mytable where i = 1 
			union select s,i from mytable where i = 3`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(3), "third row"},
		},
	},
	{
		WriteQuery: `INSERT INTO emptytable (s,i) SELECT s,i from mytable where i = 1 
			union select s,i from mytable where i = 3 
			union select s,i from mytable where i > 2`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(3), "third row"},
		},
	},
	{
		WriteQuery: `INSERT INTO emptytable (s,i) 
			SELECT s,i from mytable where i = 1 
			union all select s,i+1 from mytable where i < 2 
			union all select s,i+2 from mytable where i in (1)`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "first row"},
			{int64(3), "first row"},
		},
	},
	{
		WriteQuery:          "INSERT INTO emptytable (s,i) SELECT distinct s,i from mytable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM emptytable ORDER BY i,s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "second row"},
			{int64(3), "third row"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) SELECT (i + 10.0) / 10.0 + 10 + i, concat(s, ' new') FROM mytable",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{int64(1), "first row"},
			{int64(2), "second row"},
			{int64(3), "third row"},
			{int64(12), "first row new"},
			{int64(13), "second row new"},
			{int64(14), "third row new"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) SELECT CHAR_LENGTH(s), concat('numrows: ', count(*)) from mytable group by 1",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{1, "first row"},
			{2, "second row"},
			{3, "third row"},
			{9, "numrows: 2"},
			{10, "numrows: 1"},
		},
	},

	{
		WriteQuery:          "INSERT INTO mytable (i,s) SELECT CHAR_LENGTH(s), concat('numrows: ', count(*)) from mytable group by 1 HAVING CHAR_LENGTH(s)  > 9",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{1, "first row"},
			{2, "second row"},
			{3, "third row"},
			{10, "numrows: 1"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) SELECT i * 2, concat(s,s) from mytable order by 1 desc limit 1",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{1, "first row"},
			{2, "second row"},
			{3, "third row"},
			{6, "third rowthird row"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) SELECT i + 3, concat(s,s) from mytable order by 1 desc",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{1, "first row"},
			{2, "second row"},
			{3, "third row"},
			{4, "first rowfirst row"},
			{5, "second rowsecond row"},
			{6, "third rowthird row"},
		},
	},
	{
		WriteQuery: `INSERT INTO mytable (i,s) SELECT sub.i + 10, ot.s2 
				FROM othertable ot INNER JOIN 
					(SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2) sub 
				ON sub.i = ot.i2 order by 1`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable where i > 10 ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{11, "third"},
			{12, "second"},
			{13, "first"},
		},
	},
	{
		WriteQuery: `INSERT INTO mytable (i,s) SELECT sub.i + 10, ot.s2 
				FROM (SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2) sub
				INNER JOIN othertable ot ON sub.i = ot.i2 order by 1`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(3)}},
		SelectQuery:         "SELECT * FROM mytable where i > 10 ORDER BY i, s",
		ExpectedSelect: []sql.Row{
			{11, "third"},
			{12, "second"},
			{13, "first"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1, 'hello') ON DUPLICATE KEY UPDATE s='hello'",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 1",
		ExpectedSelect:      []sql.Row{{int64(1), "hello"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1, 'hello2') ON DUPLICATE KEY UPDATE s='hello3'",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 1",
		ExpectedSelect:      []sql.Row{{int64(1), "hello3"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1, 'hello') ON DUPLICATE KEY UPDATE i=10",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 10",
		ExpectedSelect:      []sql.Row{{int64(10), "first row"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1, 'hello2') ON DUPLICATE KEY UPDATE s='hello3'",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 1",
		ExpectedSelect:      []sql.Row{{int64(1), "hello3"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1, 'hello2'), (2, 'hello3'), (4, 'no conflict') ON DUPLICATE KEY UPDATE s='hello4'",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(5)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY 1",
		ExpectedSelect: []sql.Row{
			{1, "hello4"},
			{2, "hello4"},
			{3, "third row"},
			{4, "no conflict"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (10, 'hello') ON DUPLICATE KEY UPDATE s='hello'",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM mytable ORDER BY 1",
		ExpectedSelect: []sql.Row{
			{1, "first row"},
			{2, "second row"},
			{3, "third row"},
			{10, "hello"},
		},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1,'hi') ON DUPLICATE KEY UPDATE s=VALUES(s)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 1",
		ExpectedSelect:      []sql.Row{{int64(1), "hi"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (s,i) values ('dup',1) ON DUPLICATE KEY UPDATE s=CONCAT(VALUES(s), 'licate')",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 1",
		ExpectedSelect:      []sql.Row{{int64(1), "duplicate"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1,'mar'), (2,'par') ON DUPLICATE KEY UPDATE s=CONCAT(VALUES(s), 'tial')",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(4)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i IN (1,2) ORDER BY i",
		ExpectedSelect:      []sql.Row{{int64(1), "martial"}, {int64(2), "partial"}},
	},
	{
		WriteQuery:          "INSERT INTO mytable (i,s) values (1,'maybe') ON DUPLICATE KEY UPDATE i=VALUES(i)+8000, s=VALUES(s)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM mytable WHERE i = 8001",
		ExpectedSelect:      []sql.Row{{int64(8001), "maybe"}},
	},
	{
		WriteQuery:          "INSERT INTO auto_increment_tbl (c0) values (44)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl ORDER BY pk",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{4, 44},
		},
	},
	{
		WriteQuery:          "INSERT INTO auto_increment_tbl (c0) values (44),(55)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl ORDER BY pk",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{4, 44},
			{5, 55},
		},
	},
	{
		WriteQuery:          "INSERT INTO auto_increment_tbl values (NULL, 44)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl ORDER BY pk",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{4, 44},
		},
	},
	{
		WriteQuery:          "INSERT INTO auto_increment_tbl values (0, 44)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl ORDER BY pk",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{4, 44},
		},
	},
	{
		WriteQuery:          "INSERT INTO auto_increment_tbl values (5, 44)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl ORDER BY pk",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{5, 44},
		},
	},
	{
		WriteQuery: "INSERT INTO auto_increment_tbl values " +
			"(NULL, 44), (NULL, 55), (9, 99), (NULL, 110), (NULL, 121)",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(5)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl ORDER BY pk",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{4, 44},
			{5, 55},
			{9, 99},
			{10, 110},
			{11, 121},
		},
	},
	{
		WriteQuery:          `INSERT INTO auto_increment_tbl (c0) SELECT 44 FROM dual`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM auto_increment_tbl",
		ExpectedSelect: []sql.Row{
			{1, 11},
			{2, 22},
			{3, 33},
			{4, 44},
		},
	},
	{
		WriteQuery:          `INSERT INTO othertable VALUES ("fourth", 1) ON DUPLICATE KEY UPDATE s2="fourth"`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT * FROM othertable",
		ExpectedSelect: []sql.Row{
			sql.NewRow("first", int64(3)),
			sql.NewRow("second", int64(2)),
			sql.NewRow("fourth", int64(1)),
		},
	},
	{
		WriteQuery:          `INSERT INTO othertable(S2,I2) values ('fourth',0)`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         `SELECT * FROM othertable where s2='fourth'`,
		ExpectedSelect: []sql.Row{
			{"fourth", 0},
		},
	},
}
View Source
var InsertScripts = []ScriptTest{
	{
		Name: "insert into sparse auto_increment table",
		SetUpScript: []string{
			"create table auto (pk int primary key auto_increment)",
			"insert into auto values (10), (20), (30)",
			"insert into auto values (NULL)",
			"insert into auto values (40)",
			"insert into auto values (0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{10}, {20}, {30}, {31}, {40}, {41},
				},
			},
		},
	},
	{
		Name: "auto increment table handles deletes",
		SetUpScript: []string{
			"create table auto (pk int primary key auto_increment)",
			"insert into auto values (10)",
			"delete from auto where pk = 10",
			"insert into auto values (NULL)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{11},
				},
			},
		},
	},
	{
		Name: "create auto_increment table with out-of-line primary key def",
		SetUpScript: []string{
			`create table auto (
				pk int auto_increment,
				c0 int,
				primary key(pk)
			);`,
			"insert into auto values (NULL,10), (NULL,20), (NULL,30)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1, 10}, {2, 20}, {3, 30},
				},
			},
		},
	},
	{
		Name: "alter auto_increment value",
		SetUpScript: []string{
			`create table auto (
				pk int auto_increment,
				c0 int,
				primary key(pk)
			);`,
			"insert into auto values (NULL,10), (NULL,20), (NULL,30)",
			"alter table auto auto_increment 9;",
			"insert into auto values (NULL,90)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1, 10}, {2, 20}, {3, 30}, {9, 90},
				},
			},
		},
	},
	{
		Name: "alter auto_increment value to float",
		SetUpScript: []string{
			`create table auto (
				pk int auto_increment,
				c0 int,
				primary key(pk)
			);`,
			"insert into auto values (NULL,10), (NULL,20), (NULL,30)",
			"alter table auto auto_increment = 19.9;",
			"insert into auto values (NULL,190)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1, 10}, {2, 20}, {3, 30}, {19, 190},
				},
			},
		},
	},
	{
		Name: "auto increment on tinyint",
		SetUpScript: []string{
			"create table auto (pk tinyint primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1}, {10}, {11},
				},
			},
		},
	},
	{
		Name: "auto increment on smallint",
		SetUpScript: []string{
			"create table auto (pk smallint primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1}, {10}, {11},
				},
			},
		},
	},
	{
		Name: "auto increment on mediumint",
		SetUpScript: []string{
			"create table auto (pk mediumint primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1}, {10}, {11},
				},
			},
		},
	},
	{
		Name: "auto increment on int",
		SetUpScript: []string{
			"create table auto (pk int primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1}, {10}, {11},
				},
			},
		},
	},
	{
		Name: "auto increment on bigint",
		SetUpScript: []string{
			"create table auto (pk bigint primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{1}, {10}, {11},
				},
			},
		},
	},
	{
		Name: "auto increment on tinyint unsigned",
		SetUpScript: []string{
			"create table auto (pk tinyint unsigned primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{uint64(1)}, {uint64(10)}, {uint64(11)},
				},
			},
		},
	},
	{
		Name: "auto increment on smallint unsigned",
		SetUpScript: []string{
			"create table auto (pk smallint unsigned primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{uint64(1)}, {uint64(10)}, {uint64(11)},
				},
			},
		},
	},
	{
		Name: "auto increment on mediumint unsigned",
		SetUpScript: []string{
			"create table auto (pk mediumint unsigned primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{uint64(1)}, {uint64(10)}, {uint64(11)},
				},
			},
		},
	},
	{
		Name: "auto increment on int unsigned",
		SetUpScript: []string{
			"create table auto (pk int unsigned primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{uint64(1)}, {uint64(10)}, {uint64(11)},
				},
			},
		},
	},
	{
		Name: "auto increment on bigint unsigned",
		SetUpScript: []string{
			"create table auto (pk bigint unsigned primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{uint64(1)}, {uint64(10)}, {uint64(11)},
				},
			},
		},
	},
	{
		Name: "auto increment on float",
		SetUpScript: []string{
			"create table auto (pk float primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{float64(1)}, {float64(10)}, {float64(11)},
				},
			},
		},
	},
	{
		Name: "auto increment on double",
		SetUpScript: []string{
			"create table auto (pk double primary key auto_increment)",
			"insert into auto values (NULL),(10),(0)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from auto order by 1",
				Expected: []sql.Row{
					{float64(1)}, {float64(10)}, {float64(11)},
				},
			},
		},
	},
	{
		Name: "explicit DEFAULT",
		SetUpScript: []string{
			"CREATE TABLE mytable(id int PRIMARY KEY, v2 int NOT NULL DEFAULT '2')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "INSERT INTO mytable (id, v2)values (1, DEFAULT)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
			},
			{
				Query: "SELECT * FROM mytable",
				Expected: []sql.Row{
					{1, 2},
				},
			},
		},
	},
	{
		Name: "explicit DEFAULT with multiple values",
		SetUpScript: []string{
			"CREATE TABLE mytable(id int PRIMARY KEY, v2 int NOT NULL DEFAULT '2')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "INSERT INTO mytable (id, v2)values (1, DEFAULT), (2, DEFAULT)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
			{
				Query: "SELECT * FROM mytable",
				Expected: []sql.Row{
					{1, 2},
					{2, 2},
				},
			},
		},
	},
	{
		Name: "Try INSERT IGNORE with primary key, non null, and single row violations",
		SetUpScript: []string{
			"CREATE TABLE y (pk int primary key, c1 int NOT NULL);",
			"INSERT IGNORE INTO y VALUES (1, 1), (1,2), (2, 2), (3, 3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM y",
				Expected: []sql.Row{
					{1, 1}, {2, 2}, {3, 3},
				},
			},
			{
				Query: "INSERT IGNORE INTO y VALUES (1, 2), (4,4)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
				ExpectedWarning: mysql.ERDupEntry,
			},
			{
				Query: "INSERT IGNORE INTO y VALUES (5, NULL)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
				ExpectedWarning: mysql.ERBadNullError,
			},
			{
				Query: "INSERT IGNORE INTO y SELECT * FROM y WHERE pk=(SELECT pk FROM y WHERE pk > 1);",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 0}},
				},
				ExpectedWarning: mysql.ERSubqueryNo1Row,
			},
			{
				Query: "INSERT IGNORE INTO y SELECT 10, 0 FROM dual WHERE 1=(SELECT 1 FROM dual UNION SELECT 2 FROM dual);",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 0}},
				},
				ExpectedWarning: mysql.ERSubqueryNo1Row,
			},
			{
				Query: "INSERT IGNORE INTO y SELECT 11, 0 FROM dual WHERE 1=(SELECT 1 FROM dual UNION SELECT 2 FROM dual) UNION SELECT 12, 0 FROM dual;",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
				ExpectedWarning: mysql.ERSubqueryNo1Row,
			},
			{
				Query: "INSERT IGNORE INTO y SELECT 13, 0 FROM dual UNION SELECT 14, 0 FROM dual WHERE 1=(SELECT 1 FROM dual UNION SELECT 2 FROM dual);",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
				ExpectedWarning: mysql.ERSubqueryNo1Row,
			},
			{
				Query: "INSERT IGNORE INTO y VALUES (3, 8)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 0}},
				},
				ExpectedWarning: mysql.ERDupEntry,
			},
		},
	},
	{
		Name: "INSERT Accumulator tests",
		SetUpScript: []string{
			"CREATE TABLE test(pk int primary key, val int)",
			"INSERT INTO test values (1,1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       `INSERT INTO test VALUES (2,2),(2,3)`,
				ExpectedErr: sql.ErrPrimaryKeyViolation,
			},
			{
				Query:    `DELETE FROM test where pk = 1;`,
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 1}}},
			},
			{
				Query: `INSERT INTO test VALUES (1,1)`,
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
			},
		},
	},
	{
		Name: "INSERT Case Sensitivity",
		SetUpScript: []string{
			"CREATE TABLE test (PK int PRIMARY KEY);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "insert into test(pk) values (1)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
		},
	},
}
View Source
var JsonScripts = []ScriptTest{
	{
		Name: "JSON_ARRAYAGG on one column",
		SetUpScript: []string{
			"create table t (o_id int)",
			"INSERT INTO t VALUES (1),(2)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT JSON_ARRAYAGG(o_id) FROM t",
				Expected: []sql.Row{
					{
						sql.MustJSON(`[1,2]`),
					},
				},
			},
		},
	},
	{
		Name: "Simple JSON_ARRAYAGG on two columns",
		SetUpScript: []string{
			"create table t (o_id int, attribute longtext)",
			"INSERT INTO t VALUES (2, 'color'), (2, 'fabric')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT JSON_ARRAYAGG(o_id), JSON_ARRAYAGG(`attribute`) FROM t",
				Expected: []sql.Row{
					{
						sql.MustJSON(`[2,2]`),
						sql.MustJSON(`["color","fabric"]`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_ARRAYAGG on column with string values w/ groupby",
		SetUpScript: []string{
			"create table t (o_id int, attribute longtext, value longtext)",
			"INSERT INTO t VALUES (2, 'color', 'red'), (2, 'fabric', 'silk')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT o_id, JSON_ARRAYAGG(`attribute`) FROM t GROUP BY o_id",
				Expected: []sql.Row{
					{
						2,
						sql.MustJSON(`["color","fabric"]`),
					},
				},
			},
			{
				Query: "SELECT o_id, JSON_ARRAYAGG(value) FROM t GROUP BY o_id",
				Expected: []sql.Row{
					{
						2,
						sql.MustJSON(`["red","silk"]`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_ARRAYAGG on column with int values w/ groupby",
		SetUpScript: []string{
			"create table t2 (o_id int, val int)",
			"INSERT INTO t2 VALUES (1,1), (1,2), (1,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT o_id, JSON_ARRAYAGG(val) FROM t2 GROUP BY o_id",
				Expected: []sql.Row{
					{
						1,
						sql.MustJSON(`[1,2,3]`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_ARRAYAGG on unknown column throws error",
		SetUpScript: []string{
			"create table t2 (o_id int, val int)",
			"INSERT INTO t2 VALUES (1,1), (1,2), (1,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "SELECT o_id, JSON_ARRAYAGG(val2) FROM t2 GROUP BY o_id",
				ExpectedErr: sql.ErrColumnNotFound,
			},
		},
	},
	{
		Name: "JSON_ARRAYAGG on column with no rows returns NULL",
		SetUpScript: []string{
			"create table t2 (o_id int)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT JSON_ARRAYAGG(o_id) FROM t2",
				Expected: []sql.Row{
					{
						sql.MustJSON(`[]`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_ARRAYAGG on row with 1 value, 1 null is fine",
		SetUpScript: []string{
			"create table x(pk int, c1 int)",
			"INSERT INTO x VALUES (1,NULL)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT pk, JSON_ARRAYAGG(c1) FROM x GROUP BY pk",
				Expected: []sql.Row{
					{
						1,
						sql.MustJSON(`[null]`),
					},
				},
			},
			{
				Query: "SELECT JSON_ARRAYAGG(c1) FROM x",
				Expected: []sql.Row{
					{
						sql.MustJSON(`[null]`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_ARRAYAGG and group by use the same field.",
		SetUpScript: []string{
			"create table x(pk int, c1 int)",
			"INSERT INTO x VALUES (1, 1)",
			"INSERT INTO x VALUES (1, 2)",
			"INSERT INTO x VALUES (2, 3)",
			"INSERT INTO x VALUES (2, 3)",
			"INSERT INTO x VALUES (3, 5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT JSON_ARRAYAGG(pk) FROM x GROUP BY pk",
				Expected: []sql.Row{
					{
						sql.MustJSON(`[1,1]`),
					},
					{
						sql.MustJSON(`[2,2]`),
					},
					{
						sql.MustJSON(`[3]`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_ARRAGG with simple and nested json objects.",
		SetUpScript: []string{
			"create table j(field JSON)",
			`INSERT INTO j VALUES('{"key1": {"key": "value"}}')`,
			`INSERT INTO j VALUES('{"key1": "value1", "key2": "value2"}')`,
			`INSERT INTO j VALUES('{"key1": {"key": [2,3]}}')`,
			`INSERT INTO j VALUES('["a", 1]')`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT JSON_ARRAYAGG(field) FROM j GROUP BY field",
				Expected: []sql.Row{
					{
						sql.MustJSON(`[{"key1": "value1", "key2": "value2"}]`),
					},
					{
						sql.MustJSON(`[{"key1": {"key": "value"}}]`),
					},
					{
						sql.MustJSON(`[{"key1":{"key":[2,3]}}]`),
					},
					{
						sql.MustJSON(`[["a",1]]`),
					},
				},
			},
		},
	},
	{
		Name: "Simple JSON_OBJECTAGG with GROUP BY",
		SetUpScript: []string{
			"create table t2 (o_id int, val int)",
			"INSERT INTO t2 VALUES (1,1), (1,2), (1,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT JSON_OBJECTAGG(o_id, val) FROM t2 GROUP BY o_id",
				Expected: []sql.Row{
					{
						sql.MustJSON(`{"1": 3}`),
					},
				},
			},
		},
	},
	{
		Name: "More complex JSON_OBJECTAGG WITH GROUP BY",
		SetUpScript: []string{
			"create table t (o_id int, attribute longtext, value longtext)",
			"INSERT INTO t VALUES (2, 'color', 'red'), (2, 'fabric', 'silk')",
			"INSERT INTO t VALUES (3, 'color', 'green'), (3, 'shape', 'square')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT o_id, JSON_OBJECTAGG(`attribute`, value) FROM t GROUP BY o_id",
				Expected: []sql.Row{
					{
						2, sql.MustJSON(`{"color": "red", "fabric": "silk"}`),
					},
					{
						3, sql.MustJSON(`{"color": "green", "shape": "square"}`),
					},
				},
			},
			{
				Query: `SELECT o_id, JSON_OBJECTAGG(o_id, value) FROM t GROUP BY o_id`,
				Expected: []sql.Row{
					{
						2, sql.MustJSON(`{"2": "silk"}`),
					},
					{
						3, sql.MustJSON(`{"3": "square"}`),
					},
				},
			},
		},
	},
	{
		Name: "3 column table that uses JSON_OBJECTAGG without groupby",
		SetUpScript: []string{
			"create table t (o_id int, attribute longtext, value longtext)",
			"INSERT INTO t VALUES (2, 'color', 'red'), (2, 'fabric', 'silk')",
			"INSERT INTO t VALUES (3, 'color', 'green'), (3, 'shape', 'square')",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `select JSON_OBJECTAGG(o_id, value) from t`,
				Expected: []sql.Row{
					{
						sql.MustJSON(`{"2": "silk", "3": "square"}`),
					},
				},
			},
			{
				Query: "select JSON_OBJECTAGG(`attribute`, value) from t",
				Expected: []sql.Row{
					{
						sql.MustJSON(`{"color": "green", "fabric": "silk", "shape": "square"}`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_OBJECTAGG and null values",
		SetUpScript: []string{
			`create table test (pk int primary key, val longtext)`,
			`insert into test values (1, NULL)`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `SELECT JSON_OBJECTAGG(pk, val) from test`,
				Expected: []sql.Row{
					{
						sql.MustJSON(`{"1": null}`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_OBJECTAGG and nested json values",
		SetUpScript: []string{
			"create table j(pk int, val JSON)",
			`INSERT INTO j VALUES(1, '{"key1": "value1", "key2": "value2"}')`,
			`INSERT INTO j VALUES(1, '{"key1": {"key": [2,3]}}')`,
			`INSERT INTO j VALUES(2, '["a", 1]')`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `SELECT JSON_OBJECTAGG(pk, val) from j`,
				Expected: []sql.Row{
					{
						sql.MustJSON(`{"1": {"key1": {"key": [2, 3]}}, "2": ["a", 1]}`),
					},
				},
			},
		},
	},
	{
		Name: "JSON_OBJECTAGG correctly returns null when no rows are present",
		SetUpScript: []string{
			`create table test (pk int primary key, val longtext)`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `SELECT JSON_OBJECTAGG(pk, val) from test`,
				Expected: []sql.Row{
					{
						nil,
					},
				},
			},
		},
	},
	{
		Name: "JSON_OBJECTAGG handles errors appropriately",
		SetUpScript: []string{
			`create table test (pk int, val longtext)`,
			`insert into test values (1, NULL)`,
			`insert into test values (NULL, 1)`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       `SELECT JSON_OBJECTAGG(pk, notval) from test`,
				ExpectedErr: sql.ErrColumnNotFound,
			},
			{
				Query:       `SELECT JSON_OBJECTAGG(notpk, val) from test`,
				ExpectedErr: sql.ErrColumnNotFound,
			},
			{
				Query:       `SELECT JSON_OBJECTAGG(pk, val) from nottest`,
				ExpectedErr: sql.ErrTableNotFound,
			},
			{
				Query:       `SELECT JSON_OBJECTAGG(pk, val, badarg) from test`,
				ExpectedErr: sql.ErrInvalidArgumentNumber,
			},
			{
				Query:       `SELECT JSON_OBJECTAGG(pk) from test`,
				ExpectedErr: sql.ErrInvalidArgumentNumber,
			},
			{
				Query:       `SELECT JSON_OBJECTAGG(pk, val) from test`,
				ExpectedErr: sql.ErrJSONObjectAggNullKey,
			},
		},
	},
}
View Source
var KeylessQueries = []QueryTest{
	{
		Query: "SELECT * FROM keyless ORDER BY c0",
		Expected: []sql.Row{
			{0, 0},
			{1, 1},
			{1, 1},
			{2, 2},
		},
	},
	{
		Query: "SELECT * FROM keyless ORDER BY c1 DESC",
		Expected: []sql.Row{
			{2, 2},
			{1, 1},
			{1, 1},
			{0, 0},
		},
	},
	{
		Query: "SELECT * FROM keyless JOIN myTable where c0 = i",
		Expected: []sql.Row{
			{1, 1, 1, "first row"},
			{1, 1, 1, "first row"},
			{2, 2, 2, "second row"},
		},
	},
	{
		Query: "SELECT * FROM myTable JOIN keyless WHERE i = c0 ORDER BY i",
		Expected: []sql.Row{
			{1, "first row", 1, 1},
			{1, "first row", 1, 1},
			{2, "second row", 2, 2},
		},
	},
	{
		Query: "DESCRIBE keyless",
		Expected: []sql.Row{
			{"c0", "bigint", "YES", "", "", ""},
			{"c1", "bigint", "YES", "", "", ""},
		},
	},
	{
		Query: "SHOW COLUMNS FROM keyless",
		Expected: []sql.Row{
			{"c0", "bigint", "YES", "", "", ""},
			{"c1", "bigint", "YES", "", "", ""},
		},
	},
	{
		Query: "SHOW FULL COLUMNS FROM keyless",
		Expected: []sql.Row{
			{"c0", "bigint", nil, "YES", "", "", "", "", ""},
			{"c1", "bigint", nil, "YES", "", "", "", "", ""},
		},
	},
	{
		Query: "SHOW CREATE TABLE keyless",
		Expected: []sql.Row{
			{"keyless", "CREATE TABLE `keyless` (\n  `c0` bigint,\n  `c1` bigint\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"},
		},
	},
}
View Source
var LoadDataErrorScripts = []ScriptTest{
	{
		Name:        "Load data into table that doesn't exist throws error.",
		Query:       "LOAD DATA INFILE 'test1.txt' INTO TABLE loadtable",
		ExpectedErr: sql.ErrTableNotFound,
	},
	{
		Name: "Load data with unknown files throws an error.",
		SetUpScript: []string{
			"create table loadtable(pk longtext primary key, c1 int)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "LOAD DATA INFILE '/x/ytx' INTO TABLE loadtable",
				ExpectedErr: sql.ErrLoadDataCannotOpen,
			},
		},
	},
	{
		Name: "Load data with unknown columns throws an error",
		SetUpScript: []string{
			"create table loadtable(pk int primary key)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "LOAD DATA INFILE './testdata/test1.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"' (bad)",
				ExpectedErr: plan.ErrInsertIntoNonexistentColumn,
			},
		},
	},
	{
		Name: "Load data escaped by terms longer than 1 character throws an error",
		SetUpScript: []string{
			"create table loadtable(pk int primary key)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "LOAD DATA INFILE './testdata/test1.txt' INTO TABLE loadtable FIELDS ESCAPED BY 'xx' (pk)",
				ExpectedErr: sql.ErrLoadDataCharacterLength,
			},
		},
	},
	{
		Name: "Load data enclosed by term longer than 1 character throws an error",
		SetUpScript: []string{
			"create table loadtable(pk int primary key)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "LOAD DATA INFILE './testdata/test1.txt' INTO TABLE loadtable FIELDS ENCLOSED BY 'xx' (pk)",
				ExpectedErr: sql.ErrLoadDataCharacterLength,
			},
		},
	},
}
View Source
var LoadDataFailingScripts = []ScriptTest{
	{
		Name: "Escaped values are correctly parsed.",
		SetUpScript: []string{
			"create table loadtable(pk longtext)",
			"LOAD DATA INFILE 'test5.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"' IGNORE 1 LINES",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{"hi"}, {"hello"}, {nil}, {"TryN"}, {fmt.Sprintf("%c", 26)}, {fmt.Sprintf("%c", 0)}, {"new\n"}},
			},
		},
	},
	{
		Name: "Load and terminate have the same values.",
		SetUpScript: []string{
			"create table loadtable(pk int primary key)",
			"LOAD DATA INFILE 'test1.txt' INTO TABLE loadtable FIELDS TERMINATED BY '\"' ENCLOSED BY '\"'",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{int8(1)}, {int8(2)}, {int8(3)}, {int8(4)}},
			},
		},
	},
	{
		Name: "Loading value into different column type results in default value.",
		SetUpScript: []string{
			"create table loadtable(pk longtext, c1 int)",
			"LOAD DATA INFILE 'test4.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"' (c1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{nil, 0}, {nil, 0}},
			},
		},
	},
	{
		Name: "LOAD DATA handles nulls",
		SetUpScript: []string{
			"create table loadtable(pk longtext, c1 int)",
			"LOAD DATA INFILE 'test4.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"'",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{"hi", 1}, {"hello", nil}},
			},
		},
	},
	{
		Name: "LOAD DATA can handle a differing column order",
		SetUpScript: []string{
			"create table loadtable(pk int, c1 string) ",
			"LOAD DATA INFILE 'test4.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"' (c1, pk)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{1, "hi"}, {nil, "hello"}},
			},
		},
	},
}
View Source
var LoadDataScripts = []ScriptTest{
	{
		Name: "Basic load data with enclosed values.",
		SetUpScript: []string{
			"create table loadtable(pk int primary key)",
			"LOAD DATA INFILE './testdata/test1.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"'",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{int8(1)}, {int8(2)}, {int8(3)}, {int8(4)}},
			},
		},
	},
	{
		Name: "Load data with csv",
		SetUpScript: []string{
			"create table loadtable(pk int primary key, c1 longtext)",
			"LOAD DATA INFILE './testdata/test2.csv' INTO TABLE loadtable FIELDS TERMINATED BY ',' IGNORE 1 LINES",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{int8(1), "hi"}, {int8(2), "hello"}},
			},
		},
	},
	{
		Name: "Load data with csv with prefix.",
		SetUpScript: []string{
			"create table loadtable(pk longtext primary key, c1 int)",
			"LOAD DATA INFILE './testdata/test3.csv' INTO TABLE loadtable FIELDS TERMINATED BY ',' LINES STARTING BY 'xxx' IGNORE 1 LINES (`pk`, `c1`)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable",
				Expected: []sql.Row{{"\"abc\"", int8(1)}, {"\"def\"", int8(2)}, {"\"hello\"", nil}},
			},
		},
	},
	{
		Name: "Table has more columns than import.",
		SetUpScript: []string{
			"create table loadtable(pk int primary key, c1 int)",
			"LOAD DATA INFILE './testdata/test1.txt' INTO TABLE loadtable FIELDS ENCLOSED BY '\"'",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select * from loadtable ORDER BY pk",
				Expected: []sql.Row{{1, nil}, {2, nil}, {3, nil}, {4, nil}},
			},
		},
	},
}
View Source
var PlanTests = []QueryPlanTest{}/* 194 elements not displayed */

PlanTests is a test of generating the right query plans for different queries in the presence of indexes and other features. These tests are fragile because they rely on string representations of query plans, but they're much easier to construct this way.

View Source
var ProcedureCallTests = []ScriptTest{
	{
		Name: "OUT param with SET",
		SetUpScript: []string{
			"SET @outparam = 5",
			"CREATE PROCEDURE testabc(OUT x BIGINT) SET x = 9",
			"CALL testabc(@outparam)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						int64(9),
					},
				},
			},
		},
	},
	{
		Name: "OUT param without SET",
		SetUpScript: []string{
			"SET @outparam = 5",
			"CREATE PROCEDURE testabc(OUT x BIGINT) SELECT x",
			"CALL testabc(@outparam)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						nil,
					},
				},
			},
		},
	},
	{
		Name: "INOUT param with SET",
		SetUpScript: []string{
			"SET @outparam = 5",
			"CREATE PROCEDURE testabc(INOUT x BIGINT) BEGIN SET x = x + 1; SET x = x + 3; END;",
			"CALL testabc(@outparam)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						int64(9),
					},
				},
			},
		},
	},
	{
		Name: "INOUT param without SET",
		SetUpScript: []string{
			"SET @outparam = 5",
			"CREATE PROCEDURE testabc(INOUT x BIGINT) SELECT x",
			"CALL testabc(@outparam)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						int64(5),
					},
				},
			},
		},
	},
	{
		Name: "Nested CALL with INOUT param",
		SetUpScript: []string{
			"SET @outparam = 5",
			"CREATE PROCEDURE p3(INOUT z INT) BEGIN SET z = z * 111; END;",
			"CREATE PROCEDURE p2(INOUT y DOUBLE) BEGIN SET y = y + 4; CALL p3(y); END;",
			"CREATE PROCEDURE p1(INOUT x BIGINT) BEGIN SET x = 3; CALL p2(x); END;",
			"CALL p1(@outparam)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						int64(777),
					},
				},
			},
		},
	},
	{
		Name: "OUT param without SET",
		SetUpScript: []string{
			"SET @outparam = 5",
			"CREATE PROCEDURE testabc(OUT x BIGINT) SELECT x",
			"CALL testabc(@outparam)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						nil,
					},
				},
			},
		},
	},
	{
		Name: "Incompatible type for parameter",
		SetUpScript: []string{
			"CREATE PROCEDURE p1(x DATETIME) SELECT x",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "CALL p1('hi')",
				ExpectedErr: sql.ErrConvertingToTime,
			},
		},
	},
	{
		Name: "Incorrect parameter count",
		SetUpScript: []string{
			"CREATE PROCEDURE p1(x BIGINT, y BIGINT) SELECT x + y",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "CALL p1(1)",
				ExpectedErr: sql.ErrCallIncorrectParameterCount,
			},
			{
				Query:       "CALL p1(1, 2, 3)",
				ExpectedErr: sql.ErrCallIncorrectParameterCount,
			},
		},
	},
}
View Source
var ProcedureDropTests = []ScriptTest{
	{
		Name: "DROP procedures",
		SetUpScript: []string{
			"CREATE PROCEDURE p1() SELECT 5",
			"CREATE PROCEDURE p2() SELECT 6",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1",
				Expected: []sql.Row{
					{
						int64(5),
					},
				},
			},
			{
				Query: "CALL p2",
				Expected: []sql.Row{
					{
						int64(6),
					},
				},
			},
			{
				Query:    "DROP PROCEDURE p1",
				Expected: []sql.Row{},
			},
			{
				Query:       "CALL p1",
				ExpectedErr: sql.ErrStoredProcedureDoesNotExist,
			},
			{
				Query:    "DROP PROCEDURE IF EXISTS p2",
				Expected: []sql.Row{},
			},
			{
				Query:       "CALL p2",
				ExpectedErr: sql.ErrStoredProcedureDoesNotExist,
			},
			{
				Query:       "DROP PROCEDURE p3",
				ExpectedErr: sql.ErrStoredProcedureDoesNotExist,
			},
			{
				Query:    "DROP PROCEDURE IF EXISTS p4",
				Expected: []sql.Row{},
			},
		},
	},
}
View Source
var ProcedureLogicTests = []ScriptTest{
	{
		Name: "Simple SELECT",
		SetUpScript: []string{
			"CREATE PROCEDURE testabc(x DOUBLE, y DOUBLE) SELECT x*y",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL testabc(2, 3)",
				Expected: []sql.Row{
					{
						float64(6),
					},
				},
			},
			{
				Query: "CALL testabc(9, 9.5)",
				Expected: []sql.Row{
					{
						float64(85.5),
					},
				},
			},
		},
	},
	{
		Name: "Multiple SELECTs",
		SetUpScript: []string{
			"CREATE TABLE t1(pk VARCHAR(20) PRIMARY KEY)",
			"INSERT INTO t1 VALUES (3), (4), (50)",
			`CREATE PROCEDURE p1()
BEGIN
	SELECT * FROM t1;
	UPDATE t1 SET pk = CONCAT(pk, '0');
	SELECT * FROM t1;
	INSERT INTO t1 VALUES (1), (2);
	SELECT * FROM t1;
	REPLACE INTO t1 VALUES (1), (30);
	DELETE FROM t1 WHERE pk LIKE '%00';
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1()",
				Expected: []sql.Row{
					{"1"},
					{"2"},
					{"30"},
					{"40"},
					{"500"},
				},
			},
			{
				Query: "SELECT * FROM t1 ORDER BY 1",
				Expected: []sql.Row{
					{"1"},
					{"2"},
					{"30"},
					{"40"},
				},
			},
		},
	},
	{
		Name: "IF/ELSE with 1 SELECT at end",
		SetUpScript: []string{
			"SET @outparam = ''",
			`CREATE PROCEDURE p1(OUT s VARCHAR(200), N DOUBLE, m DOUBLE)
BEGIN
	SET s = '';
	IF n = m THEN SET s = 'equals';
	ELSE
		IF n > m THEN SET s = 'greater';
		ELSE SET s = 'less';
		END IF;
		SET s = CONCAT('is ', s, ' than');
	END IF;
	SET s = CONCAT(n, ' ', s, ' ', m, '.');
	SELECT s;
END;`,
			`CREATE PROCEDURE p2(s VARCHAR(200), N DOUBLE, m DOUBLE)
BEGIN
	SET s = '';
	IF n = m THEN SET s = 'equals';
	ELSE
		IF n > m THEN SET s = 'greater';
		ELSE SET s = 'less';
		END IF;
		SET s = CONCAT('is ', s, ' than');
	END IF;
	SET s = CONCAT(n, ' ', s, ' ', m, '.');
	SELECT s;
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1(@outparam, 1, 2)",
				Expected: []sql.Row{
					{
						"1 is less than 2.",
					},
				},
			},
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						"1 is less than 2.",
					},
				},
			},
			{
				Query: "CALL p1(@outparam, null, 2)",
				Expected: []sql.Row{
					{
						nil,
					},
				},
			},
			{
				Query: "CALL p1(@outparam, 7, 4)",
				Expected: []sql.Row{
					{
						"7 is greater than 4.",
					},
				},
			},
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						"7 is greater than 4.",
					},
				},
			},
			{
				Query: "CALL p1(@outparam, 5, 5)",
				Expected: []sql.Row{
					{
						"5 equals 5.",
					},
				},
			},
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						"5 equals 5.",
					},
				},
			},
			{
				Query: "CALL p2(@outparam, 9, 3)",
				Expected: []sql.Row{
					{
						"9 is greater than 3.",
					},
				},
			},
			{
				Query: "SELECT @outparam",
				Expected: []sql.Row{
					{
						"5 equals 5.",
					},
				},
			},
		},
	},
	{
		Name: "IF/ELSE with nested SELECT in branches",
		SetUpScript: []string{
			"CREATE TABLE t1(pk BIGINT PRIMARY KEY)",
			`CREATE PROCEDURE p1(x BIGINT)
BEGIN
	DELETE FROM t1;
	IF x < 10 THEN
		IF x = 0 THEN
			SELECT 1000;
		ELSEIF x = 1 THEN
			SELECT 1001;
		ELSE
			INSERT INTO t1 VALUES (3), (4), (5);
		END IF;
	ELSEIF x < 20 THEN
		IF x = 10 THEN
			INSERT INTO t1 VALUES (1), (2), (6), (7);
		ELSEIF x = 11 THEN
			INSERT INTO t1 VALUES (8), (9), (10), (11), (12);
			SELECT * FROM t1;
		ELSE
			SELECT 2002;
			SELECT 2003;
		END IF;
	END IF;
	INSERT INTO t1 VALUES (1), (2);
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1(0)",
				Expected: []sql.Row{
					{
						int64(1000),
					},
				},
			},
			{
				Query: "CALL p1(1)",
				Expected: []sql.Row{
					{
						int64(1001),
					},
				},
			},
			{
				Query: "CALL p1(2)",
				Expected: []sql.Row{
					{
						sql.NewOkResult(2),
					},
				},
			},
			{
				Query:       "CALL p1(10)",
				ExpectedErr: sql.ErrPrimaryKeyViolation,
			},
			{
				Query: "CALL p1(11)",
				Expected: []sql.Row{
					{int64(8)},
					{int64(9)},
					{int64(10)},
					{int64(11)},
					{int64(12)},
				},
			},
			{
				Query: "CALL p1(12)",
				Expected: []sql.Row{
					{
						int64(2003),
					},
				},
			},
		},
	},
	{
		Name: "SELECT with JOIN and table aliases",
		SetUpScript: []string{
			"CREATE TABLE foo(a BIGINT PRIMARY KEY, b VARCHAR(20))",
			"INSERT INTO foo VALUES (1, 'd'), (2, 'e'), (3, 'f')",
			"CREATE TABLE bar(b VARCHAR(30) PRIMARY KEY, c BIGINT)",
			"INSERT INTO bar VALUES ('x', 3), ('y', 2), ('z', 1)",

			"CREATE PROCEDURE p1() SELECT f.a, bar.b, f.b FROM foo f INNER JOIN bar ON f.a = bar.c ORDER BY 1",

			"CREATE PROCEDURE p2() BEGIN SELECT f.a, bar.b, f.b FROM foo f INNER JOIN bar ON f.a = bar.c ORDER BY 1; END;",

			"CREATE PROCEDURE p3() IF 0 = 0 THEN SELECT f.a, bar.b, f.b FROM foo f INNER JOIN bar ON f.a = bar.c ORDER BY 1; END IF;",

			"CREATE PROCEDURE p4() BEGIN SELECT 7; SELECT f.a, bar.b, f.b FROM foo f INNER JOIN bar ON f.a = bar.c ORDER BY 1; END;",

			"CREATE PROCEDURE p5() IF 0 = 0 THEN SELECT 7; SELECT f.a, bar.b, f.b FROM foo f INNER JOIN bar ON f.a = bar.c ORDER BY 1; END IF;",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT f.a, bar.b, f.b FROM foo f INNER JOIN bar ON f.a = bar.c ORDER BY 1",
				Expected: []sql.Row{
					{int64(1), "z", "d"},
					{int64(2), "y", "e"},
					{int64(3), "x", "f"},
				},
			},
			{
				Query: "CALL p1()",
				Expected: []sql.Row{
					{int64(1), "z", "d"},
					{int64(2), "y", "e"},
					{int64(3), "x", "f"},
				},
			},
			{
				Query: "CALL p2()",
				Expected: []sql.Row{
					{int64(1), "z", "d"},
					{int64(2), "y", "e"},
					{int64(3), "x", "f"},
				},
			},
			{
				Query: "CALL p3()",
				Expected: []sql.Row{
					{int64(1), "z", "d"},
					{int64(2), "y", "e"},
					{int64(3), "x", "f"},
				},
			},
			{
				Query: "CALL p4()",
				Expected: []sql.Row{
					{int64(1), "z", "d"},
					{int64(2), "y", "e"},
					{int64(3), "x", "f"},
				},
			},
			{
				Query: "CALL p5()",
				Expected: []sql.Row{
					{int64(1), "z", "d"},
					{int64(2), "y", "e"},
					{int64(3), "x", "f"},
				},
			},
		},
	},
	{
		Name: "Nested CALL in IF/ELSE branch",
		SetUpScript: []string{
			"CREATE TABLE t1(pk BIGINT PRIMARY KEY)",
			"INSERT INTO t1 VALUES (2), (3)",
			"CREATE PROCEDURE p1(INOUT x BIGINT) BEGIN IF X = 1 THEN CALL p2(10); ELSEIF x = 2 THEN CALL p2(100); ELSE CALL p2(X); END IF; END;",
			"CREATE PROCEDURE p2(INOUT y BIGINT) BEGIN SELECT pk * y FROM t1 ORDER BY 1; END;",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1(1)",
				Expected: []sql.Row{
					{int64(20)},
					{int64(30)},
				},
			},
			{
				Query: "CALL p1(2)",
				Expected: []sql.Row{
					{int64(200)},
					{int64(300)},
				},
			},
			{
				Query: "CALL p1(5)",
				Expected: []sql.Row{
					{int64(10)},
					{int64(15)},
				},
			},
		},
	},
	{
		Name: "INSERT INTO SELECT doesn't override SELECT",
		SetUpScript: []string{
			"CREATE TABLE t1(pk BIGINT PRIMARY KEY)",
			"CREATE TABLE t2(pk BIGINT PRIMARY KEY)",
			"INSERT INTO t1 VALUES (2), (3)",
			"INSERT INTO t2 VALUES (1)",
			`CREATE PROCEDURE p1(x BIGINT)
BEGIN
	DELETE FROM t2 WHERE pk > 1;
	INSERT INTO t2 SELECT pk FROM t1;
	SELECT * FROM t2;
	INSERT INTO t2 SELECT pk + 10 FROM t1;
	IF x = 1 THEN
		SELECT * FROM t2;
	END IF;
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1(0)",
				Expected: []sql.Row{
					{int64(1)},
					{int64(2)},
					{int64(3)},
				},
			},
			{
				Query: "CALL p1(1)",
				Expected: []sql.Row{
					{int64(1)},
					{int64(2)},
					{int64(3)},
					{int64(12)},
					{int64(13)},
				},
			},
		},
	},
	{
		Name: "Parameters resolve inside of INSERT",
		SetUpScript: []string{
			`CREATE TABLE items (
	id INT PRIMARY KEY AUTO_INCREMENT,
	item TEXT NOT NULL
);`,
			`CREATE PROCEDURE add_item (IN txt TEXT) MODIFIES SQL DATA
INSERT INTO items (item) VALUES (txt)`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL add_item('A test item');",
				Expected: []sql.Row{
					{sql.NewOkResult(1)},
				},
			},
			{
				Query: "SELECT * FROM items;",
				Expected: []sql.Row{
					{1, "A test item"},
				},
			},
		},
	},
	{
		Name: "Parameters resolve inside of SELECT UNION",
		SetUpScript: []string{
			"CREATE TABLE t1(pk BIGINT PRIMARY KEY, v1 BIGINT)",
			"INSERT INTO t1 VALUES (1, 2)",
			"SELECT pk, v1 FROM t1 UNION SELECT 1, 2;",
			`CREATE PROCEDURE p1(x BIGINT, y BIGINT)
BEGIN
	SELECT pk+x, v1+y FROM t1 UNION SELECT x, y;
END;`,
			`CREATE PROCEDURE p2(u BIGINT, v BIGINT) SELECT pk+u, v1+v FROM t1 UNION SELECT u, v;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1(3, 4)",
				Expected: []sql.Row{
					{"4", "6"},
					{"3", "4"},
				},
			},
			{
				Query: "CALL p2(5, 6)",
				Expected: []sql.Row{
					{"6", "8"},
					{"5", "6"},
				},
			},
		},
	},
	{
		Name: "Parameters resolve inside of REPLACE",
		SetUpScript: []string{
			`CREATE TABLE items (
	id INT PRIMARY KEY AUTO_INCREMENT,
	item INT NOT NULL
);`,
			`CREATE PROCEDURE add_item (IN num INT) MODIFIES SQL DATA
BEGIN
	REPLACE INTO items (item) VALUES (5), (num), (num+1);
END`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL add_item(6);",
				Expected: []sql.Row{
					{sql.NewOkResult(3)},
				},
			},
			{
				Query: "SELECT * FROM items ORDER BY 1;",
				Expected: []sql.Row{
					{1, 5},
					{2, 6},
					{3, 7},
				},
			},
		},
	},
	{
		Name: "Parameters resolve inside of INSERT INTO SELECT",
		SetUpScript: []string{
			"CREATE TABLE t1(pk BIGINT PRIMARY KEY)",
			"CREATE TABLE t2(pk BIGINT PRIMARY KEY)",
			"INSERT INTO t1 VALUES (1), (2)",
			`CREATE PROCEDURE p1(x BIGINT)
BEGIN
	TRUNCATE t2;
	INSERT INTO t2 SELECT pk+x FROM t1;
	SELECT * FROM t2;
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1(0)",
				Expected: []sql.Row{
					{int64(1)},
					{int64(2)},
				},
			},
			{
				Query: "CALL p1(5)",
				Expected: []sql.Row{
					{int64(6)},
					{int64(7)},
				},
			},
		},
	},
	{
		Name: "Subquery on SET user variable captures parameter",
		SetUpScript: []string{
			`CREATE PROCEDURE p1(x VARCHAR(20))
BEGIN
	SET @randomvar = (SELECT LENGTH(x));
	SELECT @randomvar;
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "CALL p1('hi')",
				Expected: []sql.Row{
					{int64(2)},
				},
			},
			{
				Query: "CALL p1('hello')",
				Expected: []sql.Row{
					{int64(5)},
				},
			},
		},
	},
	{
		Name: "DECLARE CONDITION",
		SetUpScript: []string{
			`CREATE PROCEDURE p1(x INT)
BEGIN
	DECLARE specialty CONDITION FOR SQLSTATE '45000';
	DECLARE specialty2 CONDITION FOR SQLSTATE '02000';
	IF x = 0 THEN
		SIGNAL SQLSTATE '01000';
	ELSEIF x = 1 THEN
		SIGNAL SQLSTATE '45000'
			SET MESSAGE_TEXT = 'A custom error occurred 1';
	ELSEIF x = 2 THEN
		SIGNAL specialty
			SET MESSAGE_TEXT = 'A custom error occurred 2', MYSQL_ERRNO = 1002;
	ELSEIF x = 3 THEN
		SIGNAL specialty;
	ELSEIF x = 4 THEN
		SIGNAL specialty2;
	ELSE
		SIGNAL SQLSTATE '01000'
			SET MESSAGE_TEXT = 'A warning occurred', MYSQL_ERRNO = 1000;
		SIGNAL SQLSTATE '45000'
			SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001;
	END IF;
	BEGIN
		DECLARE specialty3 CONDITION FOR SQLSTATE '45000';
	END;
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:          "CALL p1(0)",
				ExpectedErrStr: "warnings not yet implemented",
			},
			{
				Query:          "CALL p1(1)",
				ExpectedErrStr: "A custom error occurred 1 (errno 1644) (sqlstate 45000)",
			},
			{
				Query:          "CALL p1(2)",
				ExpectedErrStr: "A custom error occurred 2 (errno 1002) (sqlstate 45000)",
			},
			{
				Query:          "CALL p1(3)",
				ExpectedErrStr: "Unhandled user-defined exception condition (errno 1644) (sqlstate 45000)",
			},
			{
				Query:          "CALL p1(4)",
				ExpectedErrStr: "Unhandled user-defined not found condition (errno 1643) (sqlstate 02000)",
			},
		},
	},
	{
		Name: "DECLARE CONDITION nesting priority",
		SetUpScript: []string{
			`CREATE PROCEDURE p1(x INT)
BEGIN
	DECLARE cond_name CONDITION FOR SQLSTATE '02000';
	BEGIN
		DECLARE cond_name CONDITION FOR SQLSTATE '45000';
		IF x = 0 THEN
			SIGNAL cond_name;
		END IF;
	END;
	SIGNAL cond_name;
END;`,
			`CREATE PROCEDURE p2(x INT)
BEGIN
	DECLARE cond_name CONDITION FOR SQLSTATE '45000';
	BEGIN
		DECLARE cond_name CONDITION FOR SQLSTATE '02000';
		IF x = 0 THEN
			SIGNAL cond_name;
		END IF;
	END;
	SIGNAL cond_name;
END;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:          "CALL p1(0)",
				ExpectedErrStr: "Unhandled user-defined exception condition (errno 1644) (sqlstate 45000)",
			},
			{
				Query:          "CALL p1(1)",
				ExpectedErrStr: "Unhandled user-defined not found condition (errno 1643) (sqlstate 02000)",
			},
			{
				Query:          "CALL p2(0)",
				ExpectedErrStr: "Unhandled user-defined not found condition (errno 1643) (sqlstate 02000)",
			},
			{
				Query:          "CALL p2(1)",
				ExpectedErrStr: "Unhandled user-defined exception condition (errno 1644) (sqlstate 45000)",
			},
		},
	},
	{
		Name:        "Duplicate parameter names",
		Query:       "CREATE PROCEDURE p1(abc DATETIME, abc DOUBLE) SELECT abc",
		ExpectedErr: sql.ErrProcedureDuplicateParameterName,
	},
	{
		Name:        "Duplicate parameter names mixed casing",
		Query:       "CREATE PROCEDURE p1(abc DATETIME, ABC DOUBLE) SELECT abc",
		ExpectedErr: sql.ErrProcedureDuplicateParameterName,
	},
	{
		Name:        "Invalid parameter type",
		Query:       "CREATE PROCEDURE p1(x FAKETYPE) SELECT x",
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Name:        "Invalid USE statement",
		Query:       `CREATE PROCEDURE p1() USE mydb`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Name: "Invalid LOCK/UNLOCK statements",
		SetUpScript: []string{
			"CREATE TABLE t1(pk BIGINT PRIMARY KEY)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "CREATE PROCEDURE p1(x BIGINT) LOCK TABLES t1 READ",
				ExpectedErr: sql.ErrSyntaxError,
			},
			{
				Query:       "CREATE PROCEDURE p1(x BIGINT) UNLOCK TABLES",
				ExpectedErr: sql.ErrSyntaxError,
			},
		},
	},
	{
		Name: "DECLARE CONDITION wrong positions",
		Assertions: []ScriptTestAssertion{
			{
				Query: `CREATE PROCEDURE p1(x INT)
BEGIN
	SELECT x;
	DECLARE cond_name CONDITION FOR SQLSTATE '45000';
END;`,
				ExpectedErr: sql.ErrDeclareOrderInvalid,
			},
			{
				Query: `CREATE PROCEDURE p1(x INT)
BEGIN
	BEGIN
		SELECT x;
		DECLARE cond_name CONDITION FOR SQLSTATE '45000';
	END;
END;`,
				ExpectedErr: sql.ErrDeclareOrderInvalid,
			},
			{
				Query: `CREATE PROCEDURE p1(x INT)
BEGIN
	IF x = 0 THEN
		DECLARE cond_name CONDITION FOR SQLSTATE '45000';
	END IF;
END;`,
				ExpectedErr: sql.ErrDeclareOrderInvalid,
			},
			{
				Query: `CREATE PROCEDURE p1(x INT)
BEGIN
	IF x = 0 THEN
		SELECT x;
	ELSE
		DECLARE cond_name CONDITION FOR SQLSTATE '45000';
	END IF;
END;`,
				ExpectedErr: sql.ErrDeclareOrderInvalid,
			},
		},
	},
	{
		Name: "DECLARE CONDITION duplicate name",
		Query: `CREATE PROCEDURE p1()
BEGIN
	DECLARE cond_name CONDITION FOR SQLSTATE '45000';
	DECLARE cond_name CONDITION FOR SQLSTATE '45000';
END;`,
		ExpectedErr: sql.ErrDeclareConditionDuplicate,
	},
	{
		Name: "SIGNAL references condition name for MySQL error code",
		Query: `CREATE PROCEDURE p1(x INT)
BEGIN
	DECLARE mysql_err_code CONDITION FOR 1000;
	SIGNAL mysql_err_code;
END;`,
		ExpectedErr: sql.ErrUnsupportedSyntax,
	},
	{
		Name: "SIGNAL non-existent condition name",
		Query: `CREATE PROCEDURE p1(x INT)
BEGIN
	DECLARE abcdefg CONDITION FOR SQLSTATE '45000';
	SIGNAL abcdef;
END;`,
		ExpectedErr: sql.ErrDeclareConditionNotFound,
	},
}
View Source
var ProcedureShowStatus = []ScriptTest{
	{
		Name: "SHOW procedures",
		SetUpScript: []string{
			"CREATE PROCEDURE p1() COMMENT 'hi' DETERMINISTIC SELECT 6",
			"CREATE definer=`user` PROCEDURE p2() SQL SECURITY INVOKER SELECT 7",
			"CREATE PROCEDURE p21() SQL SECURITY DEFINER SELECT 8",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SHOW PROCEDURE STATUS",
				Expected: []sql.Row{
					{
						"mydb",
						"p1",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"hi",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
					{
						"mydb",
						"p2",
						"PROCEDURE",
						"user",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"INVOKER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
					{
						"mydb",
						"p21",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
				},
			},
			{
				Query: "SHOW PROCEDURE STATUS LIKE 'p2%'",
				Expected: []sql.Row{
					{
						"mydb",
						"p2",
						"PROCEDURE",
						"user",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"INVOKER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
					{
						"mydb",
						"p21",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
				},
			},
			{
				Query:    "SHOW PROCEDURE STATUS LIKE 'p4'",
				Expected: []sql.Row{},
			},
			{
				Query: "SHOW PROCEDURE STATUS WHERE Db = 'mydb'",
				Expected: []sql.Row{
					{
						"mydb",
						"p1",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"hi",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
					{
						"mydb",
						"p2",
						"PROCEDURE",
						"user",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"INVOKER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
					{
						"mydb",
						"p21",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
				},
			},
			{
				Query: "SHOW PROCEDURE STATUS WHERE Name LIKE '%1'",
				Expected: []sql.Row{
					{
						"mydb",
						"p1",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"hi",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
					{
						"mydb",
						"p21",
						"PROCEDURE",
						"",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"DEFINER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
				},
			},
			{
				Query: "SHOW PROCEDURE STATUS WHERE Security_type = 'INVOKER'",
				Expected: []sql.Row{
					{
						"mydb",
						"p2",
						"PROCEDURE",
						"user",
						time.Unix(0, 0).UTC(),
						time.Unix(0, 0).UTC(),
						"INVOKER",
						"",
						"utf8mb4",
						"utf8mb4_0900_bin",
						"utf8mb4_0900_bin",
					},
				},
			},
		},
	},
}
View Source
var QueryPlanTODOs = []QueryPlanTest{
	{

		Query: `SELECT pk,i,f FROM one_pk RIGHT JOIN niltable ON pk=i and pk > 0 ORDER BY 2,3`,
		ExpectedPlan: "Sort(niltable.i ASC, niltable.f ASC)\n" +
			" └─ Project(one_pk.pk, niltable.i, niltable.f)\n" +
			"     └─ RightJoin((one_pk.pk = niltable.i) AND (one_pk.pk > 0))\n" +
			"         ├─ Projected table access on [pk]\n" +
			"         │   └─ Table(one_pk)\n" +
			"         └─ Projected table access on [i f]\n" +
			"             └─ Table(niltable)\n" +
			"",
	},
	{

		Query: `SELECT pk,pk1,pk2 FROM one_pk t1, two_pk t2 WHERE pk=1 AND pk2=1 AND pk1=1 ORDER BY 1,2`,
		ExpectedPlan: "Sort(t1.pk ASC, t2.pk1 ASC)\n" +
			" └─ Project(t1.pk, t2.pk1, t2.pk2)\n" +
			"     └─ CrossJoin\n" +
			"         ├─ Filter(t1.pk = 1)\n" +
			"         │   └─ TableAlias(t1)\n" +
			"         │       └─ Projected table access on [pk]\n" +
			"         │           └─ IndexedTableAccess(one_pk on [one_pk.pk])\n" +
			"         └─ Filter((t2.pk2 = 1) AND (t2.pk1 = 1))\n" +
			"             └─ TableAlias(t2)\n" +
			"                 └─ Table(two_pk)\n" +
			"",
	},
}

Queries where the query planner produces a correct (results) but suboptimal plan.

View Source
var QueryTests = []QueryTest{}/* 956 elements not displayed */
View Source
var ReplaceErrorTests = []GenericErrorQueryTest{
	{
		Name:  "too few values",
		Query: "REPLACE INTO mytable (s, i) VALUES ('x');",
	},
	{
		Name:  "too many values one column",
		Query: "REPLACE INTO mytable (s) VALUES ('x', 999);",
	},
	{
		Name:  "too many values two columns",
		Query: "REPLACE INTO mytable (i, s) VALUES (999, 'x', 'y');",
	},
	{
		Name:  "too few values no columns specified",
		Query: "REPLACE INTO mytable VALUES (999);",
	},
	{
		Name:  "too many values no columns specified",
		Query: "REPLACE INTO mytable VALUES (999, 'x', 'y');",
	},
	{
		Name:  "non-existent column values",
		Query: "REPLACE INTO mytable (i, s, z) VALUES (999, 'x', 999);",
	},
	{
		Name:  "non-existent column set",
		Query: "REPLACE INTO mytable SET i = 999, s = 'x', z = 999;",
	},
	{
		Name:  "duplicate column values",
		Query: "REPLACE INTO mytable (i, s, s) VALUES (999, 'x', 'x');",
	},
	{
		Name:  "duplicate column set",
		Query: "REPLACE INTO mytable SET i = 999, s = 'y', s = 'y';",
	},
	{
		Name:  "null given to non-nullable values",
		Query: "INSERT INTO mytable (i, s) VALUES (null, 'y');",
	},
	{
		Name:  "null given to non-nullable set",
		Query: "INSERT INTO mytable SET i = null, s = 'y';",
	},
}
View Source
var ReplaceQueries = []WriteQueryTest{
	{
		WriteQuery:          "REPLACE INTO mytable VALUES (1, 'first row');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT s FROM mytable WHERE i = 1;",
		ExpectedSelect:      []sql.Row{{"first row"}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable SET i = 1, s = 'first row';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT s FROM mytable WHERE i = 1;",
		ExpectedSelect:      []sql.Row{{"first row"}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable VALUES (1, 'new row same i');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT s FROM mytable WHERE i = 1;",
		ExpectedSelect:      []sql.Row{{"new row same i"}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable SET i = 1, s = 'new row same i';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(2)}},
		SelectQuery:         "SELECT s FROM mytable WHERE i = 1;",
		ExpectedSelect:      []sql.Row{{"new row same i"}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable (s, i) VALUES ('x', 999);",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable SET s = 'x', i = 999;",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable VALUES (999, 'x');",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery:          "REPLACE INTO mytable SET i = 999, s = 'x';",
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT i FROM mytable WHERE s = 'x';",
		ExpectedSelect:      []sql.Row{{int64(999)}},
	},
	{
		WriteQuery: `REPLACE INTO typestable VALUES (
			999, 127, 32767, 2147483647, 9223372036854775807,
			255, 65535, 4294967295, 18446744073709551615,
			3.40282346638528859811704183484516925440e+38, 1.797693134862315708145274237317043567981e+308,
			'2037-04-05 12:51:36', '2231-11-07',
			'random text', true, '{"key":"value"}', 'blobdata'
			);`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(math.MaxInt8), int16(math.MaxInt16), int32(math.MaxInt32), int64(math.MaxInt64),
			uint8(math.MaxUint8), uint16(math.MaxUint16), uint32(math.MaxUint32), uint64(math.MaxUint64),
			float32(math.MaxFloat32), float64(math.MaxFloat64),
			sql.MustConvert(sql.Timestamp.Convert("2037-04-05 12:51:36")), sql.MustConvert(sql.Date.Convert("2231-11-07")),
			"random text", sql.True, sql.MustJSON(`{"key":"value"}`), "blobdata",
		}},
	},
	{
		WriteQuery: `REPLACE INTO typestable SET
			id = 999, i8 = 127, i16 = 32767, i32 = 2147483647, i64 = 9223372036854775807,
			u8 = 255, u16 = 65535, u32 = 4294967295, u64 = 18446744073709551615,
			f32 = 3.40282346638528859811704183484516925440e+38, f64 = 1.797693134862315708145274237317043567981e+308,
			ti = '2037-04-05 12:51:36', da = '2231-11-07',
			te = 'random text', bo = true, js = '{"key":"value"}', bl = 'blobdata'
			;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(math.MaxInt8), int16(math.MaxInt16), int32(math.MaxInt32), int64(math.MaxInt64),
			uint8(math.MaxUint8), uint16(math.MaxUint16), uint32(math.MaxUint32), uint64(math.MaxUint64),
			float32(math.MaxFloat32), float64(math.MaxFloat64),
			sql.MustConvert(sql.Timestamp.Convert("2037-04-05 12:51:36")), sql.MustConvert(sql.Date.Convert("2231-11-07")),
			"random text", sql.True, sql.MustJSON(`{"key":"value"}`), "blobdata",
		}},
	},
	{
		WriteQuery: `REPLACE INTO typestable VALUES (
			999, -128, -32768, -2147483648, -9223372036854775808,
			0, 0, 0, 0,
			1.401298464324817070923729583289916131280e-45, 4.940656458412465441765687928682213723651e-324,
			'0000-00-00 00:00:00', '0000-00-00',
			'', false, '""', ''
			);`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(-math.MaxInt8 - 1), int16(-math.MaxInt16 - 1), int32(-math.MaxInt32 - 1), int64(-math.MaxInt64 - 1),
			uint8(0), uint16(0), uint32(0), uint64(0),
			float32(math.SmallestNonzeroFloat32), float64(math.SmallestNonzeroFloat64),
			sql.Timestamp.Zero(), sql.Date.Zero(),
			"", sql.False, sql.MustJSON(`""`), "",
		}},
	},
	{
		WriteQuery: `REPLACE INTO typestable SET
			id = 999, i8 = -128, i16 = -32768, i32 = -2147483648, i64 = -9223372036854775808,
			u8 = 0, u16 = 0, u32 = 0, u64 = 0,
			f32 = 1.401298464324817070923729583289916131280e-45, f64 = 4.940656458412465441765687928682213723651e-324,
			ti = '0000-00-00 00:00:00', da = '0000-00-00',
			te = '', bo = false, js = '""', bl = ''
			;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect: []sql.Row{{
			int64(999), int8(-math.MaxInt8 - 1), int16(-math.MaxInt16 - 1), int32(-math.MaxInt32 - 1), int64(-math.MaxInt64 - 1),
			uint8(0), uint16(0), uint32(0), uint64(0),
			float32(math.SmallestNonzeroFloat32), float64(math.SmallestNonzeroFloat64),
			sql.Timestamp.Zero(), sql.Date.Zero(),
			"", sql.False, sql.MustJSON(`""`), "",
		}},
	},
	{
		WriteQuery: `REPLACE INTO typestable VALUES (999, null, null, null, null, null, null, null, null,
			null, null, null, null, null, null, null, null);`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect:      []sql.Row{{int64(999), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil}},
	},
	{
		WriteQuery: `REPLACE INTO typestable SET id=999, i8=null, i16=null, i32=null, i64=null, u8=null, u16=null, u32=null, u64=null,
			f32=null, f64=null, ti=null, da=null, te=null, bo=null, js=null, bl=null;`,
		ExpectedWriteResult: []sql.Row{{sql.NewOkResult(1)}},
		SelectQuery:         "SELECT * FROM typestable WHERE id = 999;",
		ExpectedSelect:      []sql.Row{{int64(999), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil}},
	},
}

TODO: none of these tests insert into tables without primary key columns, which have different semantics for

REPLACE INTO queries. Add some tables / data without primary keys.
View Source
var ScriptTests = []ScriptTest{
	{
		Name: "failed statements data validation for INSERT, UPDATE",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, INDEX (v1));",
			"INSERT INTO test VALUES (1,1), (4,4), (5,5);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:          "INSERT INTO test VALUES (2,2), (3,3), (1,1);",
				ExpectedErrStr: "duplicate primary key given: [1]",
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}},
			},
			{
				Query:          "UPDATE test SET pk = pk + 1 ORDER BY pk;",
				ExpectedErrStr: "duplicate primary key given: [5]",
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}},
			},
		},
	},
	{
		Name: "failed statements data validation for DELETE, REPLACE",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, INDEX (v1));",
			"INSERT INTO test VALUES (1,1), (4,4), (5,5);",
			"CREATE TABLE test2 (pk BIGINT PRIMARY KEY, CONSTRAINT fk_test FOREIGN KEY (pk) REFERENCES test (v1));",
			"INSERT INTO test2 VALUES (4);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "DELETE FROM test WHERE pk > 0;",
				ExpectedErr: sql.ErrForeignKeyChildViolation,
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}},
			},
			{
				Query:    "SELECT * FROM test2;",
				Expected: []sql.Row{{4}},
			},
			{
				Query:       "REPLACE INTO test VALUES (1,7), (4,8), (5,9);",
				ExpectedErr: sql.ErrForeignKeyChildViolation,
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}},
			},
			{
				Query:    "SELECT * FROM test2;",
				Expected: []sql.Row{{4}},
			},
		},
	},
	{
		Name: "delete with in clause",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"insert into a values (1), (3), (5)",
			"delete from a where x in (1, 3)",
		},
		Query: "select x from a order by 1",
		Expected: []sql.Row{
			{5},
		},
	},
	{
		Name: "sqllogictest evidence/slt_lang_aggfunc.test",
		SetUpScript: []string{
			"CREATE TABLE t1( x INTEGER, y VARCHAR(8) )",
			"INSERT INTO t1 VALUES(1,'true')",
			"INSERT INTO t1 VALUES(0,'false')",
			"INSERT INTO t1 VALUES(NULL,'NULL')",
		},
		Query: "SELECT count(DISTINCT x) FROM t1",
		Expected: []sql.Row{
			{2},
		},
	},
	{
		Name: "sqllogictest index/commute/10/slt_good_1.test",
		SetUpScript: []string{
			"CREATE TABLE tab0(pk INTEGER PRIMARY KEY, col0 INTEGER, col1 FLOAT, col2 TEXT, col3 INTEGER, col4 FLOAT, col5 TEXT)",
			"INSERT INTO tab0 VALUES(0,42,58.92,'fnbtk',54,68.41,'xmttf')",
			"INSERT INTO tab0 VALUES(1,31,46.55,'sksjf',46,53.20,'wiuva')",
			"INSERT INTO tab0 VALUES(2,30,31.11,'oldqn',41,5.26,'ulaay')",
			"INSERT INTO tab0 VALUES(3,77,44.90,'pmsir',70,84.14,'vcmyo')",
			"INSERT INTO tab0 VALUES(4,23,95.26,'qcwxh',32,48.53,'rvtbr')",
			"INSERT INTO tab0 VALUES(5,43,6.75,'snvwg',3,14.38,'gnfxz')",
			"INSERT INTO tab0 VALUES(6,47,98.26,'bzzva',60,15.2,'imzeq')",
			"INSERT INTO tab0 VALUES(7,98,40.9,'lsrpi',78,66.30,'ephwy')",
			"INSERT INTO tab0 VALUES(8,19,15.16,'ycvjz',55,38.70,'dnkkz')",
			"INSERT INTO tab0 VALUES(9,7,84.4,'ptovf',17,2.46,'hrxsf')",
			"CREATE TABLE tab1(pk INTEGER PRIMARY KEY, col0 INTEGER, col1 FLOAT, col2 TEXT, col3 INTEGER, col4 FLOAT, col5 TEXT)",
			"CREATE INDEX idx_tab1_0 on tab1 (col0)",
			"CREATE INDEX idx_tab1_1 on tab1 (col1)",
			"CREATE INDEX idx_tab1_3 on tab1 (col3)",
			"CREATE INDEX idx_tab1_4 on tab1 (col4)",
			"INSERT INTO tab1 SELECT * FROM tab0",
			"CREATE TABLE tab2(pk INTEGER PRIMARY KEY, col0 INTEGER, col1 FLOAT, col2 TEXT, col3 INTEGER, col4 FLOAT, col5 TEXT)",
			"CREATE UNIQUE INDEX idx_tab2_1 ON tab2 (col4 DESC,col3)",
			"CREATE UNIQUE INDEX idx_tab2_2 ON tab2 (col3 DESC,col0)",
			"CREATE UNIQUE INDEX idx_tab2_3 ON tab2 (col3 DESC,col1)",
			"INSERT INTO tab2 SELECT * FROM tab0",
			"CREATE TABLE tab3(pk INTEGER PRIMARY KEY, col0 INTEGER, col1 FLOAT, col2 TEXT, col3 INTEGER, col4 FLOAT, col5 TEXT)",
			"CREATE INDEX idx_tab3_0 ON tab3 (col3 DESC)",
			"INSERT INTO tab3 SELECT * FROM tab0",
			"CREATE TABLE tab4(pk INTEGER PRIMARY KEY, col0 INTEGER, col1 FLOAT, col2 TEXT, col3 INTEGER, col4 FLOAT, col5 TEXT)",
			"CREATE INDEX idx_tab4_0 ON tab4 (col0 DESC)",
			"CREATE UNIQUE INDEX idx_tab4_2 ON tab4 (col4 DESC,col3)",
			"CREATE INDEX idx_tab4_3 ON tab4 (col3 DESC)",
			"INSERT INTO tab4 SELECT * FROM tab0",
		},
		Query: "SELECT pk FROM tab2 WHERE 78 < col0 AND 19 < col3",
		Expected: []sql.Row{
			{7},
		},
	},
	{
		Name: "3 tables, linear join",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select ya from a join b on ya - 1= xb join c on xc = zb - 2",
				Expected: []sql.Row{{2}},
			},
		},
	},
	{
		Name: "3 tables, v join",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select za from a join b on ya - 1 = xb join c on xa = xc",
				Expected: []sql.Row{{3}},
			},
		},
	},
	{
		Name: "3 tables, linear join, indexes on A,C",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from a join b on xa = yb - 1 join c on yb - 1 = xc",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "4 tables, linear join",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from a join b on ya - 1 = xb join c on xb = xc join d on xc = xd",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "4 tables, linear join, index on D",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from a join b on ya = yb join c on yb = yc join d on yc - 1 = xd",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "4 tables, left join, indexes on all tables",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from a left join b on ya = yb left join c on yb = yc left join d on yc - 1 = xd",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "4 tables, linear join, index on B, D",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from a join b on ya - 1 = xb join c on yc = za - 1 join d on yc - 1 = xd",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "4 tables, all joined to A",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from a join b on xa = xb join c on ya - 1 = xc join d on za - 2 = xd",
				Expected: []sql.Row{{1}},
			},
		},
	},

	{
		Name: "4 tables, all joined to D",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select xa from d join a on yd - 1 = xa join c on zd - 2 = xc join b on xb = zd - 2",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "5 tables, complex join conditions",
		SetUpScript: []string{
			"create table a (xa int primary key, ya int, za int)",
			"create table b (xb int primary key, yb int, zb int)",
			"create table c (xc int primary key, yc int, zc int)",
			"create table d (xd int primary key, yd int, zd int)",
			"create table e (xe int, ye int, ze int, primary key(xe, ye))",
			"insert into a values (1,2,3)",
			"insert into b values (1,2,3)",
			"insert into c values (1,2,3)",
			"insert into d values (1,2,3)",
			"insert into e values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `select xa from a
									join b on ya - 1 = xb
									join c on xc = za - 2
									join d on xd = yb - 1
									join e on xe = zb - 2 and ye = yc`,
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "UUIDs used in the wild.",
		SetUpScript: []string{
			"SET @uuid = '6ccd780c-baba-1026-9564-5b8c656024db'",
			"SET @binuuid = '0011223344556677'",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    `SELECT IS_UUID(UUID())`,
				Expected: []sql.Row{{int8(1)}},
			},
			{
				Query:    `SELECT IS_UUID(@uuid)`,
				Expected: []sql.Row{{int8(1)}},
			},
			{
				Query:    `SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid))`,
				Expected: []sql.Row{{"6ccd780c-baba-1026-9564-5b8c656024db"}},
			},
			{
				Query:    `SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid, 1), 1)`,
				Expected: []sql.Row{{"6ccd780c-baba-1026-9564-5b8c656024db"}},
			},
			{
				Query:    `SELECT UUID_TO_BIN(NULL)`,
				Expected: []sql.Row{{nil}},
			},
			{
				Query:    `SELECT HEX(UUID_TO_BIN(@uuid))`,
				Expected: []sql.Row{{"6CCD780CBABA102695645B8C656024DB"}},
			},
			{
				Query:       `SELECT UUID_TO_BIN(123)`,
				ExpectedErr: sql.ErrUuidUnableToParse,
			},
			{
				Query:       `SELECT BIN_TO_UUID(123)`,
				ExpectedErr: sql.ErrUuidUnableToParse,
			},
			{
				Query:    `SELECT BIN_TO_UUID(X'00112233445566778899aabbccddeeff')`,
				Expected: []sql.Row{{"00112233-4455-6677-8899-aabbccddeeff"}},
			},
			{
				Query:    `SELECT BIN_TO_UUID('0011223344556677')`,
				Expected: []sql.Row{{"30303131-3232-3333-3434-353536363737"}},
			},
			{
				Query:    `SELECT BIN_TO_UUID(@binuuid)`,
				Expected: []sql.Row{{"30303131-3232-3333-3434-353536363737"}},
			},
		},
	},
	{
		Name: "CrossDB Queries",
		SetUpScript: []string{
			"CREATE DATABASE test",
			"CREATE TABLE test.x (pk int primary key)",
			"insert into test.x values (1),(2),(3)",
			"DELETE FROM test.x WHERE pk=2",
			"UPDATE test.x set pk=300 where pk=3",
			"create table a (xa int primary key, ya int, za int)",
			"insert into a values (1,2,3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT pk from test.x",
				Expected: []sql.Row{{1}, {300}},
			},
			{
				Query:    "SELECT * from a",
				Expected: []sql.Row{{1, 2, 3}},
			},
		},
	},
	{

		Name: "Top-level DECLARE statements",
		Assertions: []ScriptTestAssertion{
			{
				Query:       "DECLARE no_such_table CONDITION FOR SQLSTATE '42S02'",
				ExpectedErr: sql.ErrSyntaxError,
			},
			{
				Query:       "DECLARE no_such_table CONDITION FOR 1051",
				ExpectedErr: sql.ErrSyntaxError,
			},
			{
				Query:       "DECLARE a CHAR(16)",
				ExpectedErr: sql.ErrSyntaxError,
			},
			{
				Query:       "DECLARE cur2 CURSOR FOR SELECT i FROM test.t2",
				ExpectedErr: sql.ErrSyntaxError,
			},
			{
				Query:       "DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE",
				ExpectedErr: sql.ErrSyntaxError,
			},
		},
	},
	{
		Name: "last_insert_id() behavior",
		SetUpScript: []string{
			"create table a (x int primary key auto_increment, y int)",
			"create table b (x int primary key)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select last_insert_id()",
				Expected: []sql.Row{{0}},
			},
			{
				Query:    "insert into a (y) values (1)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "select last_insert_id()",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "insert into a (y) values (2), (3)",
				Expected: []sql.Row{{sql.NewOkResult(2)}},
			},
			{
				Query:    "select last_insert_id()",
				Expected: []sql.Row{{2}},
			},
			{
				Query:    "insert into b (x) values (1), (2)",
				Expected: []sql.Row{{sql.NewOkResult(2)}},
			},
			{
				Query:    "select last_insert_id()",
				Expected: []sql.Row{{2}},
			},
		},
	},
	{
		Name: "row_count() behavior",
		SetUpScript: []string{
			"create table b (x int primary key)",
			"insert into b values (1), (2), (3), (4)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{4}},
			},
			{
				Query:    "replace into b values (1)",
				Expected: []sql.Row{{sql.NewOkResult(2)}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{2}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{-1}},
			},
			{
				Query:    "select count(*) from b",
				Expected: []sql.Row{{4}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{-1}},
			},
			{
				Query: "update b set x = x + 10 where x <> 2",
				Expected: []sql.Row{{sql.OkResult{
					RowsAffected: 3,
					Info: plan.UpdateInfo{
						Matched: 3,
						Updated: 3,
					},
				}}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{3}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{-1}},
			},
			{
				Query:    "delete from b where x <> 2",
				Expected: []sql.Row{{sql.NewOkResult(3)}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{3}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{-1}},
			},
			{
				Query:    "alter table b add column y int null",
				Expected: []sql.Row{},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{0}},
			},
			{
				Query:    "select row_count()",
				Expected: []sql.Row{{-1}},
			},
		},
	},
	{
		Name: "found_rows() behavior",
		SetUpScript: []string{
			"create table b (x int primary key)",
			"insert into b values (1), (2), (3), (4)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "select * from b",
				Expected: []sql.Row{{1}, {2}, {3}, {4}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{4}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "select * from b order by x  limit 3",
				Expected: []sql.Row{{1}, {2}, {3}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{3}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "select sql_calc_found_rows * from b order by x limit 3",
				Expected: []sql.Row{{1}, {2}, {3}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{4}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "select sql_calc_found_rows * from b where x <= 2 order by x limit 1",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{2}},
			},
			{
				Query:    "select sql_calc_found_rows * from b where x <= 2 order by x limit 1",
				Expected: []sql.Row{{1}},
			},
			{
				Query:    "insert into b values (10), (11), (12), (13)",
				Expected: []sql.Row{{sql.NewOkResult(4)}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{2}},
			},
			{
				Query:    "update b set x = x where x < 40",
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 8}}}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{8}},
			},
			{
				Query:    "update b set x = x where x > 10",
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 3}}}},
			},
			{
				Query:    "select found_rows()",
				Expected: []sql.Row{{3}},
			},
		},
	},
	{
		Name: "INSERT INTO ... SELECT with AUTO_INCREMENT",
		SetUpScript: []string{
			"create table ai (pk int primary key auto_increment, c0 int);",
			"create table other (pk int primary key);",
			"insert into other values (1), (2), (3)",
			"insert into ai (c0) select * from other order by other.pk;",
		},
		Query: "select * from ai;",
		Expected: []sql.Row{
			{1, 1},
			{2, 2},
			{3, 3},
		},
	},
	{
		Name: "Indexed Join On Keyless Table",
		SetUpScript: []string{
			"create table l (pk int primary key, c0 int, c1 int);",
			"create table r (c0 int, c1 int, third int);",
			"create index r_c0 on r (c0);",
			"create index r_c1 on r (c1);",
			"create index r_third on r (third);",
			"insert into l values (0, 0, 0), (1, 0, 1), (2, 1, 0), (3, 0, 2), (4, 2, 0), (5, 1, 2), (6, 2, 1), (7, 2, 2);",
			"insert into l values (256, 1024, 4096);",
			"insert into r values (1, 1, -1), (2, 2, -1), (2, 2, -1);",
			"insert into r values (-1, -1, 256);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select pk, l.c0, l.c1 from l join r on l.c0 = r.c0 or l.c1 = r.c1 order by 1, 2, 3;",
				Expected: []sql.Row{
					{1, 0, 1},
					{2, 1, 0},
					{3, 0, 2},
					{3, 0, 2},
					{4, 2, 0},
					{4, 2, 0},
					{5, 1, 2},
					{5, 1, 2},
					{5, 1, 2},
					{6, 2, 1},
					{6, 2, 1},
					{6, 2, 1},
					{7, 2, 2},
					{7, 2, 2},
				},
			},
			{
				Query: "select pk, l.c0, l.c1 from l join r on l.c0 = r.c0 or l.c1 = r.c1 or l.pk = r.third order by 1, 2, 3;",
				Expected: []sql.Row{
					{1, 0, 1},
					{2, 1, 0},
					{3, 0, 2},
					{3, 0, 2},
					{4, 2, 0},
					{4, 2, 0},
					{5, 1, 2},
					{5, 1, 2},
					{5, 1, 2},
					{6, 2, 1},
					{6, 2, 1},
					{6, 2, 1},
					{7, 2, 2},
					{7, 2, 2},
					{256, 1024, 4096},
				},
			},
			{
				Query: "select pk, l.c0, l.c1 from l join r on l.c0 = r.c0 or l.c1 < 4 and l.c1 = r.c1 or l.c1 >= 4 and l.c1 = r.c1 order by 1, 2, 3;",
				Expected: []sql.Row{
					{1, 0, 1},
					{2, 1, 0},
					{3, 0, 2},
					{3, 0, 2},
					{4, 2, 0},
					{4, 2, 0},
					{5, 1, 2},
					{5, 1, 2},
					{5, 1, 2},
					{6, 2, 1},
					{6, 2, 1},
					{6, 2, 1},
					{7, 2, 2},
					{7, 2, 2},
				},
			},
		},
	},
	{
		Name: "Group Concat Queries",
		SetUpScript: []string{
			"CREATE TABLE x (pk int)",
			"INSERT INTO x VALUES (1),(2),(3),(4),(NULL)",

			"create table t (o_id int, attribute longtext, value longtext)",
			"INSERT INTO t VALUES (2, 'color', 'red'), (2, 'fabric', 'silk')",
			"INSERT INTO t VALUES (3, 'color', 'green'), (3, 'shape', 'square')",

			"create table nulls(pk int)",
			"INSERT INTO nulls VALUES (NULL)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    `SELECT group_concat(pk ORDER BY pk) FROM x;`,
				Expected: []sql.Row{{"1,2,3,4"}},
			},
			{
				Query:    `SELECT group_concat(DISTINCT pk ORDER BY pk) FROM x;`,
				Expected: []sql.Row{{"1,2,3,4"}},
			},
			{
				Query:    `SELECT group_concat(DISTINCT pk ORDER BY pk SEPARATOR '-') FROM x;`,
				Expected: []sql.Row{{"1-2-3-4"}},
			},
			{
				Query:    "SELECT group_concat(`attribute` ORDER BY `attribute`) FROM t group by o_id order by o_id asc",
				Expected: []sql.Row{{"color,fabric"}, {"color,shape"}},
			},
			{
				Query:    "SELECT group_concat(DISTINCT `attribute` ORDER BY value DESC SEPARATOR ';') FROM t group by o_id order by o_id asc",
				Expected: []sql.Row{{"fabric;color"}, {"shape;color"}},
			},
			{
				Query:    "SELECT group_concat(DISTINCT `attribute` ORDER BY `attribute`) FROM t",
				Expected: []sql.Row{{"color,fabric,shape"}},
			},
			{
				Query:    "SELECT group_concat(`attribute` ORDER BY `attribute`) FROM t",
				Expected: []sql.Row{{"color,color,fabric,shape"}},
			},
			{
				Query:    `SELECT group_concat((SELECT 2)) FROM x;`,
				Expected: []sql.Row{{"2,2,2,2,2"}},
			},
			{
				Query:    `SELECT group_concat(DISTINCT (SELECT 2)) FROM x;`,
				Expected: []sql.Row{{"2"}},
			},
			{
				Query:    "SELECT group_concat(DISTINCT `attribute` ORDER BY `attribute` ASC) FROM t",
				Expected: []sql.Row{{"color,fabric,shape"}},
			},
			{
				Query:    "SELECT group_concat(DISTINCT `attribute` ORDER BY `attribute` DESC) FROM t",
				Expected: []sql.Row{{"shape,fabric,color"}},
			},
			{
				Query:    `SELECT group_concat(pk) FROM nulls`,
				Expected: []sql.Row{{nil}},
			},
			{
				Query:       `SELECT group_concat((SELECT * FROM t LIMIT 1)) from t`,
				ExpectedErr: sql.ErrInvalidOperandColumns,
			},
			{
				Query:       `SELECT group_concat((SELECT * FROM x)) from t`,
				ExpectedErr: sql.ErrExpectedSingleRow,
			},
			{
				Query:    "SELECT group_concat(`attribute`) FROM t where o_id=2",
				Expected: []sql.Row{{"color,fabric"}},
			},
			{
				Query:    "SELECT group_concat(DISTINCT `attribute` ORDER BY value DESC SEPARATOR ';') FROM t group by o_id order by o_id asc",
				Expected: []sql.Row{{"fabric;color"}, {"shape;color"}},
			},
			{
				Query:    "SELECT group_concat(o_id) FROM t WHERE `attribute`='color'",
				Expected: []sql.Row{{"2,3"}},
			},
		},
	},
	{
		Name: "ALTER TABLE ... ALTER COLUMN SET / DROP DEFAULT",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT NOT NULL DEFAULT 88);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "INSERT INTO test (pk) VALUES (1);",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 88}},
			},
			{
				Query:    "ALTER TABLE test ALTER v1 SET DEFAULT (CONVERT('42', SIGNED));",
				Expected: []sql.Row{},
			},
			{
				Query:    "INSERT INTO test (pk) VALUES (2);",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 88}, {2, 42}},
			},
			{
				Query:       "ALTER TABLE test ALTER v2 SET DEFAULT 1;",
				ExpectedErr: sql.ErrTableColumnNotFound,
			},
			{
				Query:    "ALTER TABLE test ALTER v1 DROP DEFAULT;",
				Expected: []sql.Row{},
			},
			{
				Query:       "INSERT INTO test (pk) VALUES (3);",
				ExpectedErr: sql.ErrInsertIntoNonNullableDefaultNullColumn,
			},
			{
				Query:       "ALTER TABLE test ALTER v2 DROP DEFAULT;",
				ExpectedErr: sql.ErrTableColumnNotFound,
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, 88}, {2, 42}},
			},
		},
	},
	{
		Name: "ALTER TABLE AUTO INCREMENT no-ops on table with no original auto increment key",
		SetUpScript: []string{
			"CREATE table test (pk int primary key)",
			"ALTER TABLE `test` auto_increment = 2;",
			"INSERT INTO test VALUES (1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT * FROM test",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "Run through some complex queries with DISTINCT and aggregates",
		SetUpScript: []string{
			"CREATE TABLE tab1(col0 INTEGER, col1 INTEGER, col2 INTEGER)",
			"CREATE TABLE tab2(col0 INTEGER, col1 INTEGER, col2 INTEGER)",
			"INSERT INTO tab1 VALUES(51,14,96)",
			"INSERT INTO tab1 VALUES(85,5,59)",
			"INSERT INTO tab1 VALUES(91,47,68)",
			"INSERT INTO tab2 VALUES(64,77,40)",
			"INSERT INTO tab2 VALUES(75,67,58)",
			"INSERT INTO tab2 VALUES(46,51,23)",
			"CREATE TABLE mytable (pk int, v1 int)",
			"INSERT INTO mytable VALUES(1,1)",
			"INSERT INTO mytable VALUES(1,1)",
			"INSERT INTO mytable VALUES(2,2)",
			"INSERT INTO mytable VALUES(1,2)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT - SUM( DISTINCT - - 71 ) AS col2 FROM tab2 cor0",
				Expected: []sql.Row{{float64(-71)}},
			},
			{
				Query:    "SELECT - SUM ( DISTINCT - - 71 ) AS col2 FROM tab2 cor0",
				Expected: []sql.Row{{float64(-71)}},
			},
			{
				Query:    "SELECT + MAX( DISTINCT ( - col0 ) ) FROM tab1 AS cor0",
				Expected: []sql.Row{{-51}},
			},
			{
				Query:    "SELECT SUM( DISTINCT + col1 ) * - 22 - - ( - COUNT( * ) ) col0 FROM tab1 AS cor0",
				Expected: []sql.Row{{float64(-1455)}},
			},
			{
				Query:    "SELECT MIN (DISTINCT col1) from tab1 GROUP BY col0 ORDER BY col0",
				Expected: []sql.Row{{14}, {5}, {47}},
			},
			{
				Query:    "SELECT SUM (DISTINCT col1) from tab1 GROUP BY col0 ORDER BY col0",
				Expected: []sql.Row{{float64(14)}, {float64(5)}, {float64(47)}},
			},
			{
				Query:    "SELECT pk, SUM(DISTINCT v1), MAX(v1) FROM mytable GROUP BY pk ORDER BY pk",
				Expected: []sql.Row{{int64(1), float64(3), int64(2)}, {int64(2), float64(2), int64(2)}},
			},
			{
				Query:    "SELECT pk, MIN(DISTINCT v1), MAX(DISTINCT v1) FROM mytable GROUP BY pk ORDER BY pk",
				Expected: []sql.Row{{int64(1), int64(1), int64(2)}, {int64(2), int64(2), int64(2)}},
			},
			{
				Query:    "SELECT SUM(DISTINCT pk * v1) from mytable",
				Expected: []sql.Row{{float64(7)}},
			},
			{
				Query:    "SELECT SUM(DISTINCT POWER(v1, 2)) FROM mytable",
				Expected: []sql.Row{{float64(5)}},
			},
			{
				Query:    "SELECT + + 97 FROM tab1 GROUP BY tab1.col1",
				Expected: []sql.Row{{97}, {97}, {97}},
			},
			{
				Query:    "SELECT rand(10) FROM tab1 GROUP BY tab1.col1",
				Expected: []sql.Row{{0.5660920659323543}, {0.5660920659323543}, {0.5660920659323543}},
			},
			{
				Query:    "SELECT ALL - cor0.col0 * + cor0.col0 AS col2 FROM tab1 AS cor0 GROUP BY cor0.col0",
				Expected: []sql.Row{{-2601}, {-7225}, {-8281}},
			},
			{
				Query:    "SELECT cor0.col0 * cor0.col0 + cor0.col0 AS col2 FROM tab1 AS cor0 GROUP BY cor0.col0 order by 1",
				Expected: []sql.Row{{2652}, {7310}, {8372}},
			},
			{
				Query:    "SELECT - floor(cor0.col0) * ceil(cor0.col0) AS col2 FROM tab1 AS cor0 GROUP BY cor0.col0",
				Expected: []sql.Row{{-2601}, {-7225}, {-8281}},
			},
			{
				Query:    "SELECT col0 FROM tab1 AS cor0 GROUP BY cor0.col0",
				Expected: []sql.Row{{51}, {85}, {91}},
			},
			{
				Query:    "SELECT - cor0.col0 FROM tab1 AS cor0 GROUP BY cor0.col0",
				Expected: []sql.Row{{-51}, {-85}, {-91}},
			},
			{
				Query:    "SELECT col0 BETWEEN 2 and 4 from tab1 group by col0",
				Expected: []sql.Row{{false}, {false}, {false}},
			},
			{
				Query:       "SELECT col0, col1 FROM tab1 GROUP by col0;",
				ExpectedErr: analyzer.ErrValidationGroupBy,
			},
			{
				Query:       "SELECT col0, floor(col1) FROM tab1 GROUP by col0;",
				ExpectedErr: analyzer.ErrValidationGroupBy,
			},
			{
				Query:       "SELECT floor(cor0.col1) * ceil(cor0.col0) AS col2 FROM tab1 AS cor0 GROUP BY cor0.col0",
				ExpectedErr: analyzer.ErrValidationGroupBy,
			},
		},
	},
	{
		Name: "Nested Subquery projections (NTC)",
		SetUpScript: []string{
			`CREATE TABLE dcim_site (id char(32) NOT NULL,created date,last_updated datetime,_custom_field_data json NOT NULL,name varchar(100) NOT NULL,_name varchar(100) NOT NULL,slug varchar(100) NOT NULL,facility varchar(50) NOT NULL,asn bigint,time_zone varchar(63) NOT NULL,description varchar(200) NOT NULL,physical_address varchar(200) NOT NULL,shipping_address varchar(200) NOT NULL,latitude decimal(8,6),longitude decimal(9,6),contact_name varchar(50) NOT NULL,contact_phone varchar(20) NOT NULL,contact_email varchar(254) NOT NULL,comments longtext NOT NULL,region_id char(32),status_id char(32),tenant_id char(32),PRIMARY KEY (id),KEY dcim_site_region_id_45210932 (region_id),KEY dcim_site_status_id_e6a50f56 (status_id),KEY dcim_site_tenant_id_15e7df63 (tenant_id),UNIQUE KEY name (name),UNIQUE KEY slug (slug)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`,
			`CREATE TABLE dcim_rackgroup (id char(32) NOT NULL,created date,last_updated datetime,_custom_field_data json NOT NULL,name varchar(100) NOT NULL,slug varchar(100) NOT NULL,description varchar(200) NOT NULL,lft int unsigned NOT NULL,rght int unsigned NOT NULL,tree_id int unsigned NOT NULL,level int unsigned NOT NULL,parent_id char(32),site_id char(32) NOT NULL,PRIMARY KEY (id),KEY dcim_rackgroup_parent_id_cc315105 (parent_id),KEY dcim_rackgroup_site_id_13520e89 (site_id),KEY dcim_rackgroup_slug_3f4582a7 (slug),KEY dcim_rackgroup_tree_id_9c2ad6f4 (tree_id),UNIQUE KEY site_idname (site_id,name),UNIQUE KEY site_idslug (site_id,slug),CONSTRAINT dcim_rackgroup_parent_id_cc315105_fk_dcim_rackgroup_id FOREIGN KEY (parent_id) REFERENCES dcim_rackgroup (id),CONSTRAINT dcim_rackgroup_site_id_13520e89_fk_dcim_site_id FOREIGN KEY (site_id) REFERENCES dcim_site (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`,
			`CREATE TABLE dcim_rack (id char(32) NOT NULL,created date,last_updated datetime,_custom_field_data json NOT NULL,name varchar(100) NOT NULL,_name varchar(100) NOT NULL,facility_id varchar(50),serial varchar(50) NOT NULL,asset_tag varchar(50),type varchar(50) NOT NULL,width smallint unsigned NOT NULL,u_height smallint unsigned NOT NULL,desc_units tinyint NOT NULL,outer_width smallint unsigned,outer_depth smallint unsigned,outer_unit varchar(50) NOT NULL,comments longtext NOT NULL,group_id char(32),role_id char(32),site_id char(32) NOT NULL,status_id char(32),tenant_id char(32),PRIMARY KEY (id),UNIQUE KEY asset_tag (asset_tag),KEY dcim_rack_group_id_44e90ea9 (group_id),KEY dcim_rack_role_id_62d6919e (role_id),KEY dcim_rack_site_id_403c7b3a (site_id),KEY dcim_rack_status_id_ee3dee3e (status_id),KEY dcim_rack_tenant_id_7cdf3725 (tenant_id),UNIQUE KEY group_idfacility_id (group_id,facility_id),UNIQUE KEY group_idname (group_id,name),CONSTRAINT dcim_rack_group_id_44e90ea9_fk_dcim_rackgroup_id FOREIGN KEY (group_id) REFERENCES dcim_rackgroup (id),CONSTRAINT dcim_rack_site_id_403c7b3a_fk_dcim_site_id FOREIGN KEY (site_id) REFERENCES dcim_site (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`,
			`INSERT INTO dcim_site (id, created, last_updated, _custom_field_data, status_id, name, _name, slug, region_id, tenant_id, facility, asn, time_zone, description, physical_address, shipping_address, latitude, longitude, contact_name, contact_phone, contact_email, comments) VALUES ('f0471f313b694d388c8ec39d9590e396', '2021-05-20', '2021-05-20 18:51:46.416695', '{}', NULL, 'Site 1', 'Site 00000001', 'site-1', NULL, NULL, '', NULL, '', '', '', '', NULL, NULL, '', '', '', '')`,
			`INSERT INTO dcim_site (id, created, last_updated, _custom_field_data, status_id, name, _name, slug, region_id, tenant_id, facility, asn, time_zone, description, physical_address, shipping_address, latitude, longitude, contact_name, contact_phone, contact_email, comments) VALUES ('442bab8b517149ab87207e8fb5ba1569', '2021-05-20', '2021-05-20 18:51:47.333720', '{}', NULL, 'Site 2', 'Site 00000002', 'site-2', NULL, NULL, '', NULL, '', '', '', '', NULL, NULL, '', '', '', '')`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('5c107f979f434bf7a7820622f18a5211', '2021-05-20', '2021-05-20 18:51:48.150116', '{}', 'Parent Rack Group 1', 'parent-rack-group-1', 'f0471f313b694d388c8ec39d9590e396', NULL, '', 1, 2, 1, 0)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('6707c20336a2406da6a9d394477f7e8c', '2021-05-20', '2021-05-20 18:51:48.969713', '{}', 'Parent Rack Group 2', 'parent-rack-group-2', '442bab8b517149ab87207e8fb5ba1569', NULL, '', 1, 2, 2, 0)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('6bc0d9b1affe46918b09911359241db6', '2021-05-20', '2021-05-20 18:51:50.566160', '{}', 'Rack Group 1', 'rack-group-1', 'f0471f313b694d388c8ec39d9590e396', '5c107f979f434bf7a7820622f18a5211', '', 2, 3, 1, 1)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('a773cac9dc9842228cdfd8c97a67136e', '2021-05-20', '2021-05-20 18:51:52.126952', '{}', 'Rack Group 2', 'rack-group-2', 'f0471f313b694d388c8ec39d9590e396', '5c107f979f434bf7a7820622f18a5211', '', 4, 5, 1, 1)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('a35a843eb181404bb9da2126c6580977', '2021-05-20', '2021-05-20 18:51:53.706000', '{}', 'Rack Group 3', 'rack-group-3', 'f0471f313b694d388c8ec39d9590e396', '5c107f979f434bf7a7820622f18a5211', '', 6, 7, 1, 1)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('f09a02c95b064533b823e25374f5962a', '2021-05-20', '2021-05-20 18:52:03.037056', '{}', 'Test Rack Group 4', 'test-rack-group-4', '442bab8b517149ab87207e8fb5ba1569', '6707c20336a2406da6a9d394477f7e8c', '', 2, 3, 2, 1)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('ecff5b528c5140d4a58f1b24a1c80ebc', '2021-05-20', '2021-05-20 18:52:05.390373', '{}', 'Test Rack Group 5', 'test-rack-group-5', '442bab8b517149ab87207e8fb5ba1569', '6707c20336a2406da6a9d394477f7e8c', '', 4, 5, 2, 1)`,
			`INSERT INTO dcim_rackgroup (id, created, last_updated, _custom_field_data, name, slug, site_id, parent_id, description, lft, rght, tree_id, level) VALUES ('d31b3772910e4418bdd5725d905e2699', '2021-05-20', '2021-05-20 18:52:07.758547', '{}', 'Test Rack Group 6', 'test-rack-group-6', '442bab8b517149ab87207e8fb5ba1569', '6707c20336a2406da6a9d394477f7e8c', '', 6, 7, 2, 1)`,
			`INSERT INTO dcim_rack (id,created,last_updated,_custom_field_data,name,_name,facility_id,serial,asset_tag,type,width,u_height,desc_units,outer_width,outer_depth,outer_unit,comments,group_id,role_id,site_id,status_id,tenant_id) VALUES ('abc123',  '2021-05-20', '2021-05-20 18:51:48.150116', '{}', "name", "name", "facility", "serial", "assettag", "type", 1, 1, 1, 1, 1, "outer units", "comment", "6bc0d9b1affe46918b09911359241db6", "role", "f0471f313b694d388c8ec39d9590e396", "status", "tenant")`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `SELECT 
                             ((
                               SELECT COUNT(*)
                               FROM dcim_rack
                               WHERE group_id 
                               IN (
                                 SELECT m2.id
                                 FROM dcim_rackgroup m2
                                 WHERE m2.tree_id = dcim_rackgroup.tree_id
                                   AND m2.lft BETWEEN dcim_rackgroup.lft
                                   AND dcim_rackgroup.rght
                               )
                             )) AS rack_count,
                             dcim_rackgroup.id,
                             dcim_rackgroup._custom_field_data,
                             dcim_rackgroup.name,
                             dcim_rackgroup.slug,
                             dcim_rackgroup.site_id,
                             dcim_rackgroup.parent_id,
                             dcim_rackgroup.description,
                             dcim_rackgroup.lft,
                             dcim_rackgroup.rght,
                             dcim_rackgroup.tree_id,
                             dcim_rackgroup.level 
                           FROM dcim_rackgroup
							order by 2 limit 1`,
				Expected: []sql.Row{{1, "5c107f979f434bf7a7820622f18a5211", sql.JSONDocument{Val: map[string]interface{}{}}, "Parent Rack Group 1", "parent-rack-group-1", "f0471f313b694d388c8ec39d9590e396", interface{}(nil), "", uint64(1), uint64(2), uint64(1), uint64(0)}},
			},
		},
	},
	{
		Name: "CREATE TABLE SELECT Queries",
		SetUpScript: []string{
			`CREATE TABLE t1 (pk int PRIMARY KEY, v1 varchar(10))`,
			`INSERT INTO t1 VALUES (1,"1"), (2,"2"), (3,"3")`,
			`CREATE TABLE t2 AS SELECT * FROM t1`,

			`CREATE TABLE t3 AS SELECT pk FROM t1`,
			`CREATE TABLE t4 AS SELECT pk, v1 FROM t1`,
			`CREATE TABLE t5 SELECT * FROM t1 ORDER BY pk LIMIT 1`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    `SELECT * FROM t2`,
				Expected: []sql.Row{{1, "1"}, {2, "2"}, {3, "3"}},
			},
			{
				Query:    `SELECT * FROM t3`,
				Expected: []sql.Row{{1}, {2}, {3}},
			},
			{
				Query:    `SELECT * FROM t4`,
				Expected: []sql.Row{{1, "1"}, {2, "2"}, {3, "3"}},
			},
			{
				Query:    `SELECT * FROM t5`,
				Expected: []sql.Row{{1, "1"}},
			},
			{
				Query: `CREATE TABLE test SELECT * FROM t1`,
				Expected: []sql.Row{sql.Row{sql.OkResult{
					RowsAffected: 3,
					InsertID:     0,
					Info:         nil,
				}}},
			},
		},
	},
	{
		Name: "Issue #499",
		SetUpScript: []string{
			"CREATE TABLE test (time TIMESTAMP, value DOUBLE);",
			`INSERT INTO test VALUES 
			("2021-07-04 10:00:00", 1.0),
			("2021-07-03 10:00:00", 2.0),
			("2021-07-02 10:00:00", 3.0),
			("2021-07-01 10:00:00", 4.0);`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `SELECT
				UNIX_TIMESTAMP(time) DIV 60 * 60 AS "time",
				avg(value) AS "value"
				FROM test
				GROUP BY 1
				ORDER BY UNIX_TIMESTAMP(time) DIV 60 * 60`,
				Expected: []sql.Row{
					{1625133600, 4.0},
					{1625220000, 3.0},
					{1625306400, 2.0},
					{1625392800, 1.0},
				},
			},
		},
	},
	{
		Name: "WHERE clause considers ENUM/SET types for comparisons",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 ENUM('a', 'b', 'c'), v2 SET('a', 'b', 'c'));",
			"INSERT INTO test VALUES (1, 2, 2), (2, 1, 1);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, "b", "b"}, {2, "a", "a"}},
			},
			{
				Query:    "UPDATE test SET v1 = 3 WHERE v1 = 2;",
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}},
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, "c", "b"}, {2, "a", "a"}},
			},
			{
				Query:    "UPDATE test SET v2 = 3 WHERE 2 = v2;",
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}},
			},
			{
				Query:    "SELECT * FROM test;",
				Expected: []sql.Row{{1, "c", "a,b"}, {2, "a", "a"}},
			},
		},
	},
	{
		Name: "Slightly more complex example for the Exists Clause",
		SetUpScript: []string{
			"create table store(store_id int, item_id int, primary key (store_id, item_id))",
			"create table items(item_id int primary key, price int)",
			"insert into store values (0, 1), (0,2),(0,3),(1,2),(1,4),(2,1)",
			"insert into items values (1, 10), (2, 20), (3, 30),(4,40)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT * from store WHERE EXISTS (SELECT price from items where price > 10 and store.item_id = items.item_id)",
				Expected: []sql.Row{{0, 2}, {0, 3}, {1, 2}, {1, 4}},
			},
		},
	},
	{
		Name: "Simple Update Join test that manipulates two tables",
		SetUpScript: []string{
			"CREATE TABLE test (pk int primary key);",
			`CREATE TABLE test2 (pk int primary key, val int);`,
			`INSERT into test values (0),(1),(2),(3)`,
			`INSERT into test2 values (0, 0),(1, 1),(2, 2),(3, 3)`,
			`CREATE TABLE test3(k int, val int, primary key (k, val))`,
			`INSERT into test3 values (1,2),(1,3),(1,4)`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: `update test2 inner join (select * from test3 order by val) as t3 on test2.pk = t3.k SET test2.val=t3.val`,
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{
					Matched:  1,
					Updated:  1,
					Warnings: 0,
				}}}},
			},
			{
				Query: "SELECT val FROM test2 where pk = 1",
				Expected: []sql.Row{
					{2},
				},
			},
			{
				Query: `update test inner join test2 on test.pk = test2.pk SET test.pk=test.pk*10, test2.pk = test2.pk * 4 where test.pk < 10;`,
				Expected: []sql.Row{{sql.OkResult{RowsAffected: 6, Info: plan.UpdateInfo{
					Matched:  6,
					Updated:  6,
					Warnings: 0,
				}}}},
			},
			{
				Query: "SELECT * FROM test",
				Expected: []sql.Row{
					{0},
					{10},
					{20},
					{30},
				},
			},
			{
				Query: "SELECT * FROM test2",
				Expected: []sql.Row{
					{0, 0},
					{4, 2},
					{8, 2},
					{12, 3},
				},
			},
		},
	},
	{
		Name: "Partial indexes are used and return the expected result",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, v2 BIGINT, v3 BIGINT, INDEX vx (v3, v2, v1));",
			"INSERT INTO test VALUES (1,2,3,4), (2,3,4,5), (3,4,5,6), (4,5,6,7), (5,6,7,8);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v3 = 4;",
				Expected: []sql.Row{{"Filter(test.v3 = 4)"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v3,test.v2,test.v1])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v3 = 4;",
				Expected: []sql.Row{{1, 2, 3, 4}},
			},
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v3 = 8 AND v2 = 7;",
				Expected: []sql.Row{{"Filter((test.v3 = 8) AND (test.v2 = 7))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v3,test.v2,test.v1])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v3 = 8 AND v2 = 7;",
				Expected: []sql.Row{{5, 6, 7, 8}},
			},
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v3 >= 6 AND v2 >= 6;",
				Expected: []sql.Row{{"Filter((test.v3 >= 6) AND (test.v2 >= 6))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v3,test.v2,test.v1])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v3 >= 6 AND v2 >= 6;",
				Expected: []sql.Row{{4, 5, 6, 7}, {5, 6, 7, 8}},
			},
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v3 = 7 AND v2 >= 6;",
				Expected: []sql.Row{{"Filter((test.v3 = 7) AND (test.v2 >= 6))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v3,test.v2,test.v1])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v3 = 7 AND v2 >= 6;",
				Expected: []sql.Row{{4, 5, 6, 7}},
			},
		},
	},
	{
		Name: "Multiple indexes on the same columns in a different order",
		SetUpScript: []string{
			"CREATE TABLE test (pk BIGINT PRIMARY KEY, v1 BIGINT, v2 BIGINT, v3 BIGINT, INDEX v123 (v1, v2, v3), INDEX v321 (v3, v2, v1), INDEX v132 (v1, v3, v2));",
			"INSERT INTO test VALUES (1,2,3,4), (2,3,4,5), (3,4,5,6), (4,5,6,7), (5,6,7,8);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v1 = 2 AND v2 > 1;",
				Expected: []sql.Row{{"Filter((test.v1 = 2) AND (test.v2 > 1))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v1 = 2 AND v2 > 1;",
				Expected: []sql.Row{{1, 2, 3, 4}},
			},
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v2 = 4 AND v3 > 1;",
				Expected: []sql.Row{{"Filter((test.v2 = 4) AND (test.v3 > 1))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v3,test.v2,test.v1])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v2 = 4 AND v3 > 1;",
				Expected: []sql.Row{{2, 3, 4, 5}},
			},
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v3 = 6 AND v1 > 1;",
				Expected: []sql.Row{{"Filter((test.v3 = 6) AND (test.v1 > 1))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v1,test.v3,test.v2])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v3 = 6 AND v1 > 1;",
				Expected: []sql.Row{{3, 4, 5, 6}},
			},
			{
				Query: "EXPLAIN SELECT * FROM test WHERE v1 = 5 AND v3 <= 10 AND v2 >= 1;",
				Expected: []sql.Row{{"Filter(((test.v1 = 5) AND (test.v3 <= 10)) AND (test.v2 >= 1))"},
					{" └─ Projected table access on [pk v1 v2 v3]"},
					{"     └─ IndexedTableAccess(test on [test.v1,test.v2,test.v3])"}},
			},
			{
				Query:    "SELECT * FROM test WHERE v1 = 5 AND v3 <= 10 AND v2 >= 1;",
				Expected: []sql.Row{{4, 5, 6, 7}},
			},
		},
	},
	{
		Name: "Ensure proper DECIMAL support (found by fuzzer)",
		SetUpScript: []string{
			"CREATE TABLE `GzaKtwgIya` (`K7t5WY` DECIMAL(64,5), `qBjVrN` VARBINARY(1000), `PvqQtc` SET('c3q6y','kxMqhfkK','XlRI8','dF0N63H','hMPjt0KXRLwCGRr','27fi2s','1FSJ','NcPzIN','Za18lbIgxmZ','on4BKKXykVTbJ','WBfO','RMNG','Sd7','FDzbEO','cLRdLOj1y','syo4','Ul','jfsfDCx6s','yEW3','JyQcWFDl'), `1kv7el` FLOAT, `Y3vfRG` BLOB, `Ijq8CK` TINYTEXT, `tzeStN` MEDIUMINT, `Ak83FQ` BINARY(64), `8Nbp3L` DOUBLE, PRIMARY KEY (`K7t5WY`));",
			"REPLACE INTO `GzaKtwgIya` VALUES ('58567047399981325523662211357420045483361289734772861386428.89028','bvo5~Tt8%kMW2nm2!8HghaeulI6!pMadE+j-J2LeU1O1*-#@Lm8Ibh00bTYiA*H1Q8P1_kQq 24Rrd4@HeF%#7#C#U7%mqOMrQ0%!HVrGV1li.XyYa:7#3V^DtAMDTQ9 cY=07T4|DStrwy4.MAQxOG#1d#fcq+7675$y0e96-2@8-WlQ^p|%E!a^TV!Yj2_eqZZys1z:883l5I%zAT:i56K^T!cx#us $60Tb#gH$1#$P.709E#VrH9FbQ5QZK2hZUH!qUa4Xl8*I*0fT~oAha$8jU5AoWs+Uv!~:14Yq%pLXpP9RlZ:Gd1g|*$Qa.9*^K~YlYWVaxwY~_g6zOMpU$YijT+!_*m3=||cMNn#uN0!!OyCg~GTQlJ11+#@Ohqc7b#2|Jp2Aei56GOmq^I=7cQ=sQh~V.D^HzwK5~4E$QzFXfWNVN5J_w2b4dkR~bB~7F%=@R@9qE~e:-_RnoJcOLfBS@0:*hTIP$5ui|5Ea-l+qU4nx98X6rV2bLBxn8am@p~:xLF#T^_9kJVN76q^18=i *FJo.v-xA2GP==^C^Jz3yBF0OY4bIxC59Y#6G=$w:xh71kMxBcYJKf3+$Ci_uWx0P*AfFNne0_1E0Lwv#3J8vm:. 8Wo~F3VT:@w.t@w .JZz$bok9Tls7RGo=~4 Y$~iELr$s@53YuTPM8oqu!x*1%GswpJR=0K#qs00nW-1MqEUc:0wZv#X4qY^pzVDb:!:!yDhjhh+KIT%2%w@+t8c!f~o!%EnwBIr_OyzL6e1$-R8n0nWPU.toODd*|fW3H$9ZLc9!dMS:QfjI0M$nK 8aGvUVP@9kS~W#Y=Q%=37$@pAUkDTXkJo~-DRvCG6phPp*Xji@9|AEODHi+-6p%X4YM5Y3WasPHcZQ8QgTwi9 N=2RQD_MtVU~0J~3SAx*HrMlKvCPTswZq#q_96ny_A@7g!E2jyaxWFJD:C233onBdchW$WdAc.LZdZHYDR^uwZb9B9p-q.BkD1I',608583,'-7.276514330627342e-28','FN3O_E:$ 5S40T7^Vu1g!Ktn^N|4RE!9GnZiW5dG:%SJb5|SNuuI.d2^qnMY.Xn*_fRfk Eo7OhqY8OZ~pA0^ !2P.uN~r@pZ2!A0+4b*%nxO.tm%S6=$CZ9+c1zu-p $b:7:fOkC%@E3951st@2Q93~8hj:ZGeJ6S@nw-TAG+^lad37aB#xN*rD^9TO0|hleA#.Nh28S2PB72L*TxD0$|XE3S5eVVmbI*pkzE~lPecopX1fUyFj#LC+%~pjmab7^ Kdd4B%8I!ohOCQV.oiw++N|#W2=D4:_sK0@~kTTeNA8_+FMKRwro.M0| LdKHf-McKm0Z-R9+H%!9r l6%7UEB50yNH-ld%eW8!f=LKgZLc*TuTP2DA_o0izvzZokNp3ShR+PA7Fk* 1RcSt5KXe+8tLc+WGP','3RvfN2N.Q1tIffE965#2r=u_-4!u:9w!F1p7+mSsO8ckio|ib 1t@~GtgUkJX',1858932,'DJMaQcI=vS-Jk2L#^2N8qZcRpMJ2Ga!30A+@I!+35d-9bwVEVi5-~i.a%!KdoF5h','1.0354401044541863e+255');",
			"INSERT INTO `GzaKtwgIya` VALUES ('91198031969464085142628031466155813748261645250257051732159.65596','96Lu=focmodq4otVAUN6TD-F$@k^4443higo=KH!1WBDH9|vpEGdO* 1uF6yWjT4:7G|altXnWSv+d:c8Km8vL!b%-nuB8mAxO9E|a5N5#v@z!ij5ifeIEoZGXrhBJl.m*Rx-@%g~t:y$3Pp3Q7Bd3y$=YG%6yibqXWO9$SS+g=*6QzdSCzuR~@v!:.ATye0A@y~DG=uq!PaZd6wN7.2S Aq868-RN3RM61V#N+Qywqo=%iYV*554@h6GPKZ| pmNwQw=PywuyBhr*MHAOXV+u9_-#imKI-wT4gEcA1~lGg1cfL2IvhkwOXRhrjAx-8+R3#4!Ai J6SYP|YUuuGalJ_N8k_8K^~h!JyiH$0JbGQ4AOxO3-eW=BaopOd8FF1.cfFMK!tXR ^I15g:npOuZZO$Vq3yQ4bl4s$E9:t2^.4f.:I4_@u9_UI1ApBthJZNiv~o#*uhs9K@ufZ1YPJQY-pMj$v-lQ2#%=Uu!iEAO3%vQ^5YITKcWRk~$kd1H#F675r@P5#M%*F_xP3Js7$YuEC4YuQjZ A74tMw:KwQ8dR:k_ Sa85G~42-K3%:jk5G9csC@iW3nY|@-:_dg~5@J!FWF5F+nyBgz4fDpdkdk9^:_.t$A3W-C@^Ax.~o|Rq96_i%HeG*7jBjOGhY-e1k@aD@WW.@GmpGAI|T-84gZFG3BU9@#9lpL|U2YCEA.BEA%sxDZ Kw:n+d$Y!SZw0Iml$Bdtyr:02Np=DZpiI%$N9*U=%Jq#$P5BI60WOTK+UynVx9Dd**5q8y9^v+I|PPa#_2XheV5YQU.ONdQQNJxsiRaEl!*=xv4bTWj1wBH#_-eM3T',490529,'-8.419238802182018e+25','|WD!NpWJOfN+_Au 1y!|XF8l38#%%R5%$TRUEaFt%4ywKQ8 O1LD-3qRDrnHAXboH~0uivbo87f+V%=q9~Mvz1EIxsU!whSmPqtb9r*11346R_@L+H#@@Z9H-Dc6j%.D0o##m@B9o7jO#~N81ACI|f#J3z4dho:jc54Xws$8r%cxuov^1$w_58Fv2*.8qbAW$TF153A:8wwj4YIhkd#^Q7 |g7I0iQG0p+yE64rk!Pu!SA-z=ELtLNOCJBk_4!lV$izn%sB6JwM+uq~ 49I7','v|eUA_h2@%t~bn26ci8Ngjm@Lk*G=l2MhxhceV2V|ka#c',8150267,'nX-=1Q$3riw_jlukGuHmjodT_Y_SM$xRbEt$%$%hlIUF1+GpRp~U6JvRX^: k@n#','7.956726808353253e+267');",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "DELETE FROM `GzaKtwgIya` WHERE `K7t5WY` = '58567047399981325523662211357420045483361289734772861386428.89028';",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "SELECT COUNT(*) FROM GzaKtwgIya",
				Expected: []sql.Row{{1}},
			},
		},
	},
	{
		Name: "JOIN on non-index-prefix columns do not panic (Dolt Issue #2366)",
		SetUpScript: []string{
			"CREATE TABLE `player_season_stat_totals` (`player_id` int NOT NULL, `team_id` int NOT NULL, `season_id` int NOT NULL, `minutes` int, `games_started` int, `games_played` int, `2pm` int, `2pa` int, `3pm` int, `3pa` int, `ftm` int, `fta` int, `ast` int, `stl` int, `blk` int, `tov` int, `pts` int, `orb` int, `drb` int, `trb` int, `pf` int, `season_type_id` int NOT NULL, `league_id` int NOT NULL DEFAULT 0, PRIMARY KEY (`player_id`,`team_id`,`season_id`,`season_type_id`,`league_id`));",
			"CREATE TABLE `team_seasons` (`team_id` int NOT NULL, `league_id` int NOT NULL, `season_id` int NOT NULL, `prefix` varchar(100), `nickname` varchar(100), `abbreviation` varchar(100), `city` varchar(100), `state` varchar(100), `country` varchar(100), PRIMARY KEY (`team_id`,`league_id`,`season_id`));",
			"INSERT INTO player_season_stat_totals VALUES (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);",
			"INSERT INTO team_seasons VALUES (1,1,1,'','','','','','');",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "SELECT stats.* FROM player_season_stat_totals stats LEFT JOIN team_seasons ON team_seasons.team_id = stats.team_id AND team_seasons.season_id = stats.season_id;",
				Expected: []sql.Row{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}},
			},
		},
	},
}

ScriptTests are a set of test scripts to run. Unlike other engine tests, ScriptTests must be self-contained. No other tables are created outside the definition of the tests.

View Source
var ShowTableStatusQueries = []QueryTest{
	{
		Query: `SHOW TABLE STATUS FROM mydb`,
		Expected: []sql.Row{
			{"auto_increment_tbl", "InnoDB", "10", "Fixed", uint64(3), uint64(16), uint64(48), uint64(0), int64(0), int64(0), int64(4), nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"mytable", "InnoDB", "10", "Fixed", uint64(3), uint64(88), uint64(264), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"one_pk_three_idx", "InnoDB", "10", "Fixed", uint64(8), uint64(32), uint64(256), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"one_pk_two_idx", "InnoDB", "10", "Fixed", uint64(8), uint64(24), uint64(192), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"othertable", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"tabletest", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"bigtable", "InnoDB", "10", "Fixed", uint64(14), uint64(65540), uint64(917560), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"floattable", "InnoDB", "10", "Fixed", uint64(6), uint64(24), uint64(144), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"fk_tbl", "InnoDB", "10", "Fixed", uint64(3), uint64(96), uint64(288), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"niltable", "InnoDB", "10", "Fixed", uint64(6), uint64(32), uint64(192), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"newlinetable", "InnoDB", "10", "Fixed", uint64(5), uint64(65540), uint64(327700), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"people", "InnoDB", "10", "Fixed", uint64(5), uint64(196620), uint64(983100), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"datetime_table", "InnoDB", "10", "Fixed", uint64(3), uint64(32), uint64(96), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"invert_pk", "InnoDB", "10", "Fixed", uint64(3), uint64(24), uint64(72), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
		},
	},
	{
		Query: `SHOW TABLE STATUS LIKE '%table'`,
		Expected: []sql.Row{
			{"mytable", "InnoDB", "10", "Fixed", uint64(3), uint64(88), uint64(264), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"othertable", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"bigtable", "InnoDB", "10", "Fixed", uint64(14), uint64(65540), uint64(917560), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"floattable", "InnoDB", "10", "Fixed", uint64(6), uint64(24), uint64(144), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"niltable", "InnoDB", "10", "Fixed", uint64(6), uint64(32), uint64(192), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"newlinetable", "InnoDB", "10", "Fixed", uint64(5), uint64(65540), uint64(327700), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"datetime_table", "InnoDB", "10", "Fixed", uint64(3), uint64(32), uint64(96), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
		},
	},
	{
		Query: `SHOW TABLE STATUS FROM mydb LIKE 'othertable'`,
		Expected: []sql.Row{
			{"othertable", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
		},
	},
	{
		Query: `SHOW TABLE STATUS WHERE Name = 'mytable'`,
		Expected: []sql.Row{
			{"mytable", "InnoDB", "10", "Fixed", uint64(3), uint64(88), uint64(264), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
		},
	},
	{
		Query: `SHOW TABLE STATUS`,
		Expected: []sql.Row{
			{"auto_increment_tbl", "InnoDB", "10", "Fixed", uint64(3), uint64(16), uint64(48), uint64(0), int64(0), int64(0), int64(4), nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"mytable", "InnoDB", "10", "Fixed", uint64(3), uint64(88), uint64(264), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"one_pk_three_idx", "InnoDB", "10", "Fixed", uint64(8), uint64(32), uint64(256), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"one_pk_two_idx", "InnoDB", "10", "Fixed", uint64(8), uint64(24), uint64(192), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"othertable", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"tabletest", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"bigtable", "InnoDB", "10", "Fixed", uint64(14), uint64(65540), uint64(917560), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"floattable", "InnoDB", "10", "Fixed", uint64(6), uint64(24), uint64(144), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"fk_tbl", "InnoDB", "10", "Fixed", uint64(3), uint64(96), uint64(288), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"niltable", "InnoDB", "10", "Fixed", uint64(6), uint64(32), uint64(192), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"newlinetable", "InnoDB", "10", "Fixed", uint64(5), uint64(65540), uint64(327700), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"people", "InnoDB", "10", "Fixed", uint64(5), uint64(196620), uint64(983100), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"datetime_table", "InnoDB", "10", "Fixed", uint64(3), uint64(32), uint64(96), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
			{"invert_pk", "InnoDB", "10", "Fixed", uint64(3), uint64(24), uint64(72), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
		},
	},
	{
		Query: `SHOW TABLE STATUS FROM mydb LIKE 'othertable'`,
		Expected: []sql.Row{
			{"othertable", "InnoDB", "10", "Fixed", uint64(3), uint64(65540), uint64(196620), uint64(0), int64(0), int64(0), nil, nil, nil, nil, "utf8mb4_0900_bin", nil, nil, nil},
		},
	},
}
View Source
var SkippedUpdateTests = []WriteQueryTest{
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 SET one_pk.c1 = one_pk.c1 + 1, two_pk.c1 = two_pk.c2 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(8, 6)}},
		SelectQuery:         "SELECT * FROM two_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 2, 1, 2, 3, 4),
			sql.NewRow(0, 1, 12, 11, 12, 13, 14),
			sql.NewRow(1, 0, 22, 21, 22, 23, 24),
			sql.NewRow(1, 1, 32, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE othertable INNER JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.s2 = 'fourth'`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM othertable;",
		ExpectedSelect: []sql.Row{
			sql.NewRow("third", 1),
			sql.NewRow("second", 2),
			sql.NewRow("fourth", 3),
		},
	},
}

These tests return the correct select query answer but the wrong write result.

View Source
var TransactionTests = []TransactionTest{
	{
		Name: "autocommit on",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ insert into t values (3, 3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
		},
	},
	{
		Name: "autocommit off",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},
			{
				Query:    "/* client b */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query: "/* client a */ select * from t order by x",
				Expected: []sql.Row{
					{1, 1},
				},
			},
			{
				Query:    "/* client a */ insert into t values (3,3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client a */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
		},
	},
	{
		Name: "toggle autocommit",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ insert into t values (2,2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},

			{
				Query:    "/* client b */ set autocommit = on",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},

			{
				Query:    "/* client a */ set autocommit = on",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
		},
	},
	{
		Name: "autocommit on with explicit transactions",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},
			{
				Query:    "/* client a */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},

			{
				Query:    "/* client a */ insert into t values (3, 3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
		},
	},
	{
		Name: "rollback",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client a */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t values (3, 3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client a */ rollback",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client a */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client b */ rollback",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
		},
	},
	{
		Name: "rollback to savepoint",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client a */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t values (3, 3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ savepoint spa1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ savepoint spb1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (4, 4)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t values (5, 5)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ savepoint spa2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ savepoint spb2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (6, 6)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t values (7, 7)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}, {6, 6}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}, {5, 5}, {7, 7}},
			},
			{
				Query:    "/* client a */ rollback to SPA2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ rollback to spB2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}, {5, 5}},
			},
			{
				Query:    "/* client a */ rollback to sPa2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ rollback to Spb2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}, {5, 5}},
			},
			{
				Query:    "/* client a */ rollback to spA1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ rollback to SPb1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:       "/* client a */ rollback to spa2",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
			{
				Query:       "/* client b */ rollback to spb2",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
			{
				Query:    "/* client a */ rollback to Spa1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ rollback to spB1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client a */ rollback",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:       "/* client a */ rollback to spa1",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
			{
				Query:       "/* client b */ rollback to spb1",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
		},
	},
	{
		Name: "release savepoint",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client a */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t values (3, 3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ savepoint spa1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ savepoint spb1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ release savepoint Spa1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ release savepoint sPb1",
				Expected: []sql.Row{},
			},
			{
				Query:       "/* client a */ rollback to spa1",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
			{
				Query:       "/* client b */ rollback to spb1",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
		},
	},
	{
		Name: "overwrite savepoint",
		SetUpScript: []string{
			"create table t (x int primary key, y int)",
			"insert into t values (1, 1)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (2, 2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ savepoint spa1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (3, 3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ savepoint spa2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (4, 4)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ savepoint SPA1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ insert into t values (5, 5)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}},
			},
			{
				Query:    "/* client a */ rollback to Spa1",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {4, 4}},
			},
			{
				Query:    "/* client a */ rollback to spa2",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:       "/* client a */ rollback to spa1",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
			{
				Query:       "/* client a */ release savepoint spa1",
				ExpectedErr: sql.ErrSavepointDoesNotExist,
			},
		},
	},
	{
		Name: "Test AUTO INCREMENT with no autocommit",
		SetUpScript: []string{
			"CREATE table t (x int PRIMARY KEY AUTO_INCREMENT, y int);",
			"CREATE table t2 (x int PRIMARY KEY AUTO_INCREMENT, y int);",
			"CREATE table t3 (x int PRIMARY KEY AUTO_INCREMENT, y int);",
			"insert into t (y) values (1);",
			"insert into t2 values (10, 10);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client b */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client c */ set autocommit = off",
				Expected: []sql.Row{{}},
			},

			{
				Query:    "/* client a */ insert into t (y) values (2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},
			{
				Query:    "/* client c*/ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},

			{
				Query:    "/* client b */ insert into t (y) values (3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query: "/* client a */ select * from t order by x",
				Expected: []sql.Row{
					{1, 1}, {2, 2},
				},
			},
			{
				Query: "/* client c */ select * from t order by x",
				Expected: []sql.Row{
					{1, 1},
				},
			},

			{
				Query:    "/* client c */ insert into t2 (y) values (11)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}},
			},
			{
				Query:    "/* client b */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}},
			},
			{
				Query:    "/* client c */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}},
			},

			{
				Query:    "/* client a */ insert into t2 (y) values (12)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {12, 12}},
			},
			{
				Query:    "/* client b */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}},
			},
			{
				Query:    "/* client c */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}},
			},

			{
				Query:    "/* client a */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {3, 3}},
			},
			{
				Query:    "/* client b */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}},
			},
			{
				Query:    "/* client c */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}},
			},
			{
				Query: "/* client c */ select * from t order by x",
				Expected: []sql.Row{
					{1, 1},
				},
			},

			{
				Query:    "/* client b */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client a */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {12, 12}},
			},
			{
				Query:    "/* client c */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}},
			},
			{
				Query:    "/* client c */ select * from t order by x",
				Expected: []sql.Row{{1, 1}},
			},

			{
				Query:    "/* client c */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client a */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {12, 12}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client b */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}},
			},

			{
				Query:    "/* client a */ start transaction",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client c */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
			{
				Query:    "/* client a */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}},
			},
			{
				Query:    "/* client b */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}},
			},
			{
				Query:    "/* client c */ select * from t2 order by x",
				Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}},
			},

			{
				Query:    "/* client a */ insert into t values (10, 10)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t (y) values (11)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},

			{
				Query:    "/* client c */ insert into t values (50, 50)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ insert into t (y) values (51)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {10, 10}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {11, 11}, {51, 51}},
			},
			{
				Query:    "/* client c */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {50, 50}},
			},
			{
				Query:    "/* client a */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client c */ commit",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {10, 10}, {11, 11}, {50, 50}, {51, 51}},
			},
			{
				Query:    "/* client b */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {10, 10}, {11, 11}, {50, 50}, {51, 51}},
			},
			{
				Query:    "/* client c */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {10, 10}, {11, 11}, {50, 50}, {51, 51}},
			},

			{
				Query:    "/* client a */ insert into t values (NULL, 52)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {10, 10}, {11, 11}, {50, 50}, {51, 51}, {52, 52}},
			},
		},
	},
	{
		Name: "AUTO_INCREMENT transactions off",
		SetUpScript: []string{
			"CREATE table t2 (x int PRIMARY KEY AUTO_INCREMENT, y int);",
			"insert into t2 (y) values (1);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ insert into t2 (y) values (2)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client b */ select * from t2 order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}},
			},
			{
				Query:    "/* client b */ insert into t2 (y) values (3)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:    "/* client a */ select * from t2 order by x",
				Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
			},
		},
	},
	{
		Name: "READ ONLY Transactions",
		SetUpScript: []string{
			"create table t2 (pk int primary key, val int)",
			"insert into t2 values (0,0)",
			"commit",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "/* client a */ set autocommit = off",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "/* client a */ create temporary table tmp(pk int primary key)",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */  START TRANSACTION READ ONLY",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ INSERT INTO tmp VALUES (1)",
				Expected: []sql.Row{{sql.NewOkResult(1)}},
			},
			{
				Query:       "/* client a */ insert into t2 values (1, 1)",
				ExpectedErr: sql.ErrReadOnlyTransaction,
			},
			{
				Query:       "/* client a */ insert into t2 values (2, 2)",
				ExpectedErr: sql.ErrReadOnlyTransaction,
			},
			{
				Query:       "/* client a */ delete from t2 where pk = 0",
				ExpectedErr: sql.ErrReadOnlyTransaction,
			},
			{

				Query:    "/* client a */ alter table t2 add val2 int",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client a */ select * from t2",
				Expected: []sql.Row{{0, 0, nil}},
			},
			{
				Query:       "/* client a */ create temporary table tmp2(pk int primary key)",
				ExpectedErr: sql.ErrReadOnlyTransaction,
			},
			{
				Query:    "/* client a */ COMMIT",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ START TRANSACTION READ ONLY",
				Expected: []sql.Row{},
			},
			{
				Query:    "/* client b */ SELECT * FROM t2",
				Expected: []sql.Row{{0, 0, nil}},
			},
		},
	},
}
View Source
var TriggerErrorTests = []ScriptTest{
	{
		Name: "table doesn't exist",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger not_found before insert on y for each row set new.a = new.a + 1",
		ExpectedErr: sql.ErrTableNotFound,
	},
	{
		Name: "trigger errors on execution",
		SetUpScript: []string{
			"create table x (a int primary key, b int)",
			"create table y (c int primary key not null)",
			"create trigger trigger_has_error before insert on x for each row insert into y values (null)",
		},
		Query:       "insert into x values (1,2)",
		ExpectedErr: sql.ErrInsertIntoNonNullableProvidedNull,
	},
	{
		Name: "self update on insert",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger a1 before insert on a for each row insert into a values (new.x * 2)",
		},
		Query:       "insert into a values (1), (2), (3)",
		ExpectedErr: sql.ErrTriggerTableInUse,
	},
	{
		Name: "self update on delete",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger a1 before delete on a for each row delete from a",
		},
		Query:       "delete from a",
		ExpectedErr: sql.ErrTriggerTableInUse,
	},
	{
		Name: "self update on update",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger a1 before update on a for each row update a set x = 1",
		},
		Query:       "update a set x = 2",
		ExpectedErr: sql.ErrTriggerTableInUse,
	},
	{
		Name: "circular dependency",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger a1 before insert on a for each row insert into b values (new.x * 2)",
			"create trigger b1 before insert on b for each row insert into a values (new.y * 7)",
		},
		Query:       "insert into a values (1), (2), (3)",
		ExpectedErr: sql.ErrTriggerTableInUse,
	},
	{
		Name: "circular dependency, nested two deep",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create table c (z int primary key)",
			"create trigger a1 before insert on a for each row insert into b values (new.x * 2)",
			"create trigger b1 before insert on b for each row insert into c values (new.y * 5)",
			"create trigger c1 before insert on c for each row insert into a values (new.z * 7)",
		},
		Query:       "insert into a values (1), (2), (3)",
		ExpectedErr: sql.ErrTriggerTableInUse,
	},
	{
		Name: "reference to old on insert",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger old_on_insert before insert on x for each row set new.c = old.a + 1",
		ExpectedErr: sql.ErrInvalidUseOfOldNew,
	},
	{
		Name: "reference to new on delete",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger new_on_delete before delete on x for each row set new.c = old.a + 1",
		ExpectedErr: sql.ErrInvalidUseOfOldNew,
	},
	{
		Name: "set old row on update",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger update_old before update on x for each row set old.c = new.a + 1",
		ExpectedErr: sql.ErrInvalidUpdateOfOldRow,
	},
	{
		Name: "set old row on update, begin block",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger update_old before update on x for each row BEGIN set old.c = new.a + 1; END",
		ExpectedErr: sql.ErrInvalidUpdateOfOldRow,
	},
	{
		Name: "set new row after insert",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger update_new after insert on x for each row set new.c = new.a + 1",
		ExpectedErr: sql.ErrInvalidUpdateInAfterTrigger,
	},
	{
		Name: "set new row after update",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger update_new after update on x for each row set new.c = new.a + 1",
		ExpectedErr: sql.ErrInvalidUpdateInAfterTrigger,
	},
	{
		Name: "set new row after update, begin block",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger update_new after update on x for each row BEGIN set new.c = new.a + 1; END",
		ExpectedErr: sql.ErrInvalidUpdateInAfterTrigger,
	},

	{
		Name: "source column doesn't exist",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
		},
		Query:       "create trigger not_found before insert on x for each row set new.d = new.d + 1",
		ExpectedErr: sql.ErrTableColumnNotFound,
	},
}
View Source
var TriggerTests = []ScriptTest{

	{
		Name: "trigger after insert, insert into other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger insert_into_b after insert on a for each row insert into b values (new.x + 1)",
			"insert into a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{2}, {4}, {6},
				},
			},
			{
				Query: "insert into a values (7), (9)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
		},
	},
	{
		Name: "trigger after insert, delete from other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into b values (0), (2), (4), (6), (8)",
			"create trigger insert_into_b after insert on a for each row delete from b where y = (new.x + 1)",
			"insert into a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "insert into a values (7), (9)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
		},
	},
	{
		Name: "trigger after insert, update other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into b values (0), (2), (4), (6), (8)",
			"create trigger insert_into_b after insert on a for each row update b set y = new.x where y = new.x + 1",
			"insert into a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {1}, {3}, {5}, {8},
				},
			},
		},
	},
	{
		Name: "trigger before insert, insert into other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger insert_into_b before insert on a for each row insert into b values (new.x + 1)",
			"insert into a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{2}, {4}, {6},
				},
			},
			{
				Query: "insert into a values (7), (9)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
		},
	},
	{
		Name: "trigger before insert, delete from other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into b values (0), (2), (4), (6), (8)",
			"create trigger insert_into_b before insert on a for each row delete from b where y = (new.x + 1)",
			"insert into a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "insert into a values (7), (9)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
		},
	},
	{
		Name: "trigger before insert, update other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into b values (0), (2), (4), (6), (8)",
			"create trigger insert_into_b before insert on a for each row update b set y = new.x where y = new.x + 1",
			"insert into a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {1}, {3}, {5}, {8},
				},
			},
		},
	},
	{
		Name: "trigger before insert, alter inserted value",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger insert_into_a before insert on a for each row set new.x = new.x + 1",
			"insert into a values (1)",
		},
		Query: "select x from a order by 1",
		Expected: []sql.Row{
			{2},
		},
	},
	{
		Name: "trigger before insert, alter inserted value, multiple columns",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
			"create trigger insert_into_x before insert on x for each row set new.a = new.a + 1, new.b = new.c, new.c = 0",
			"insert into x values (1, 10, 100)",
		},
		Query: "select * from x order by 1",
		Expected: []sql.Row{
			{2, 100, 0},
		},
	},
	{
		Name: "trigger before insert, alter inserted value, multiple columns, system var",
		SetUpScript: []string{
			"create table x (a int primary key, b int, c int)",
			"set @@auto_increment_increment = 1",
			"create trigger insert_into_x before insert on x for each row " +
				"set new.a = new.a + 1, new.b = new.c, new.c = 0, @@auto_increment_increment = @@auto_increment_increment + 1",
			"insert into x values (1, 10, 100), (2, 20, 200)",
		},
		Query: "select *, @@auto_increment_increment from x order by 1",
		Expected: []sql.Row{
			{2, 100, 0, 3},
			{3, 200, 0, 3},
		},
	},
	{
		Name: "trigger before insert, alter inserted value, out of order insertion",
		SetUpScript: []string{
			"create table a (x int primary key, y int)",
			"create trigger a1 before insert on a for each row set new.x = new.x * 2, new.y = new.y * 3",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a (y, x) values (5,7), (9,11)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
			{
				Query: "select x, y from a order by 1",
				Expected: []sql.Row{
					{14, 15},
					{22, 27},
				},
			},
		},
	},
	{
		Name: "trigger before insert, alter inserted value, incomplete insertion",
		SetUpScript: []string{
			"create table a (x int primary key, y int, z int default 5)",
			"create trigger a1 before insert on a for each row set new.x = new.x * 2, new.y = new.y * 3, new.z = new.z * 5",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a (y, x) values (5,7), (9,11)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
			{
				Query: "select x, y, z from a order by 1",
				Expected: []sql.Row{
					{14, 15, 25},
					{22, 27, 25},
				},
			},
		},
	},
	{
		Name: "trigger before insert, begin block with multiple set statements",
		SetUpScript: []string{
			"CREATE TABLE test(pk BIGINT PRIMARY KEY, v1 BIGINT);",
			"INSERT INTO test VALUES (0,2),(1,3)",
			"CREATE TRIGGER tt BEFORE INSERT ON test FOR EACH ROW BEGIN SET NEW.v1 = NEW.v1 * 11; SET NEW.v1 = NEW.v1 * -10; END;",
			"INSERT INTO test VALUES (2,4);",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM test ORDER BY 1",
				Expected: []sql.Row{
					{0, 2}, {1, 3}, {2, -440},
				},
			},
		},
	},
	{
		Name: "Create a trigger on a new database and verify that the trigger works when selected on another database",
		SetUpScript: []string{
			"create database test",
			"create table test.a (x int primary key)",
			"create table test.b (y int primary key)",
			"use test",
			"create trigger insert_into_b after insert on test.a for each row insert into test.b values (new.x + 1)",
			"use mydb",
			"insert into test.a values (1), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from test.a order by 1",
				Expected: []sql.Row{
					{1}, {3}, {5},
				},
			},
			{
				Query: "select y from test.b order by 1",
				Expected: []sql.Row{
					{2}, {4}, {6},
				},
			},
			{
				Query: "insert into test.a values (7), (9)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
		},
	},

	{
		Name: "trigger after update, insert into other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (1), (3), (5)",
			"create trigger insert_into_b after update on a for each row insert into b values (old.x + new.x + 1)",
			"update a set x = x + 1 where x in (1, 3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{2}, {4}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{4}, {8},
				},
			},
			{
				Query: "update a set x = x + 1 where x = 5",
				Expected: []sql.Row{
					{sql.OkResult{
						RowsAffected: 1,
						Info: plan.UpdateInfo{
							Matched: 1,
							Updated: 1,
						},
					}},
				},
			},
		},
	},
	{
		Name: "trigger after update, delete from other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (1), (3), (5), (7), (9)",
			"create trigger delete_from_b after update on a for each row delete from b where y = old.x + new.x",
			"update a set x = x + 1 where x in (2,4)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {3}, {5}, {6}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{1}, {3}, {7},
				},
			},
		},
	},
	{
		Name: "trigger after update, update other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (0), (2), (4), (8)",
			"create trigger update_b after update on a for each row update b set y = old.x + new.x + 1 where y = old.x",
			"update a set x = x + 1 where x in (2, 4)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {3}, {5}, {6}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {6}, {8}, {10},
				},
			},
		},
	},
	{
		Name: "trigger before update, insert into other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (1), (3), (5)",
			"create trigger insert_into_b before update on a for each row insert into b values (old.x + new.x + 1)",
			"update a set x = x + 1 where x in (1, 3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{2}, {4}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{4}, {8},
				},
			},
			{
				Query: "update a set x = x + 1 where x = 5",
				Expected: []sql.Row{
					{sql.OkResult{
						RowsAffected: 1,
						Info: plan.UpdateInfo{
							Matched: 1,
							Updated: 1,
						},
					}},
				},
			},
		},
	},
	{
		Name: "trigger before update, delete from other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (1), (3), (5), (7), (9)",
			"create trigger delete_from_b before update on a for each row delete from b where y = old.x + new.x",
			"update a set x = x + 1 where x in (2,4)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {3}, {5}, {6}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{1}, {3}, {7},
				},
			},
		},
	},
	{
		Name: "trigger before update, update other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (0), (2), (4), (8)",
			"create trigger update_b before update on a for each row update b set y = old.x + new.x + 1 where y = old.x",
			"update a set x = x + 1 where x in (2, 4)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {3}, {5}, {6}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {6}, {8}, {10},
				},
			},
		},
	},
	{
		Name: "trigger before update, set new value",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"insert into a values (1), (10)",
			"create trigger update_a before update on a for each row set new.x = new.x + old.x",
			"update a set x = x + 1",
		},
		Query: "select x from a order by 1",
		Expected: []sql.Row{
			{3}, {21},
		},
	},
	{
		Name: "trigger before update, set new value to old value",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"insert into a values (1), (10)",
			"create trigger no_step_on_snek before update on a for each row set new.x = old.x",
			"update a set x = x + 1",
		},
		Query: "select x from a order by 1",
		Expected: []sql.Row{
			{1}, {10},
		},
	},
	{
		Name: "trigger before update, set new values, multiple cols",
		SetUpScript: []string{
			"create table a (x int primary key, y int)",
			"insert into a values (1,3), (10,20)",
			"create trigger update_a before update on a for each row set new.x = new.x + old.y, new.y = new.y + old.x",
			"update a set x = x + 1, y = y + 1",
		},
		Query: "select x, y from a order by 1",
		Expected: []sql.Row{
			{5, 5},
			{31, 31},
		},
	},
	{
		Name: "trigger before update, set new values, multiple cols (2)",
		SetUpScript: []string{
			"create table a (x int primary key, y int)",
			"insert into a values (1,3), (10,20)",
			"create trigger update_a before update on a for each row set new.x = new.x + new.y, new.y = new.y + old.y",
			"update a set x = x + 1, y = y + 1",
		},
		Query: "select x, y from a order by 1",
		Expected: []sql.Row{
			{6, 7},
			{32, 41},
		},
	},
	{
		Name: "trigger before update, with indexed update",
		SetUpScript: []string{
			"create table a (x int primary key, y int, unique key (y))",
			"create table b (z int primary key)",
			"insert into a values (1,3), (10,20)",
			"create trigger insert_b before update on a for each row insert into b values (old.x * 10)",
			"update a set x = x + 1 where y = 20",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x, y from a order by 1",
				Expected: []sql.Row{
					{1, 3},
					{11, 20},
				},
			},
			{
				Query: "select z from b",
				Expected: []sql.Row{
					{100},
				},
			},
		},
	},
	{
		Name: "trigger before update, begin block with multiple set statements",
		SetUpScript: []string{
			"CREATE TABLE test(pk BIGINT PRIMARY KEY, v1 BIGINT);",
			"INSERT INTO test VALUES (0,2),(1,3)",
			"CREATE TRIGGER tt BEFORE UPDATE ON test FOR EACH ROW BEGIN SET NEW.v1 = (OLD.v1 * 2) + NEW.v1; SET NEW.v1 = NEW.v1 * -10; END;",
			"UPDATE test SET v1 = v1 + 1;",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT * FROM test ORDER BY 1",
				Expected: []sql.Row{
					{0, -70}, {1, -100},
				},
			},
		},
	},

	{
		Name: "trigger after delete, insert into other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (1), (3), (5)",
			"create trigger insert_into_b after delete on a for each row insert into b values (old.x + 1)",
			"delete from a where x in (1, 3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{2}, {4},
				},
			},
			{
				Query: "delete from a where x = 5",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
			},
		},
	},
	{
		Name: "trigger after delete, delete from other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (0), (2), (4), (6), (8)",
			"create trigger delete_from_b after delete on a for each row delete from b where y = old.x",
			"delete from a where x in (2,4,6)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
		},
	},
	{
		Name: "trigger after delete, update other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (0), (2), (4), (6), (8)",
			"create trigger update_b after delete on a for each row update b set y = old.x + 1 where y = old.x",
			"delete from a where x in (2,4,6)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{0}, {3}, {5}, {7}, {8},
				},
			},
		},
	},
	{
		Name: "trigger before delete, insert into other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"create trigger insert_into_b before delete on a for each row insert into b values (old.x + 1)",
			"delete from a where x in (2, 4, 6)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{3}, {5}, {7},
				},
			},
			{
				Query: "delete from a where x = 0",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 1}},
				},
			},
		},
	},
	{
		Name: "trigger before delete, delete from other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (1), (3), (5), (7), (9)",
			"create trigger delete_from_b before delete on a for each row delete from b where y = (old.x + 1)",
			"delete from a where x in (2, 4, 6)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{1}, {9},
				},
			},
		},
	},
	{
		Name: "trigger before delete, update other table",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into a values (0), (2), (4), (6), (8)",
			"insert into b values (1), (3), (5), (7), (9)",
			"create trigger update_b before delete on a for each row update b set y = old.x where y = old.x + 1",
			"delete from a where x in (2, 4, 6)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0}, {8},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{1}, {2}, {4}, {6}, {9},
				},
			},
		},
	},
	{
		Name: "trigger before delete, delete with index",
		SetUpScript: []string{
			"create table a (x int primary key, z int, unique key (z))",
			"create table b (y int primary key)",
			"insert into a values (0,1), (2,3), (4,5)",
			"create trigger insert_b before delete on a for each row insert into b values (old.x * 2)",
			"delete from a where z > 2",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{0},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{4}, {8},
				},
			},
		},
	},

	{
		Name: "triggers before and after insert",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger a1 before insert on a for each row insert into b values (NEW.x * 7)",
			"create trigger a2 after insert on a for each row insert into b values (New.x * 11)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a values (2), (3), (5)",
				Expected: []sql.Row{
					{sql.NewOkResult(3)},
				},
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{2}, {3}, {5},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{14}, {21}, {22}, {33}, {35}, {55},
				},
			},
		},
	},
	{
		Name: "multiple triggers before insert",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger a1 before insert on a for each row set new.x = New.x + 1",
			"create trigger a2 before insert on a for each row set new.x = New.x * 2",
			"create trigger a3 before insert on a for each row set new.x = New.x - 5",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a values (1), (3)",
				Expected: []sql.Row{
					{sql.NewOkResult(2)},
				},
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{-1}, {3},
				},
			},
		},
	},
	{
		Name: "multiple triggers before insert, with precedes / follows",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger a1 before insert on a for each row set new.x = New.x + 1",
			"create trigger a2 before insert on a for each row precedes a1 set new.x = New.x * 2",
			"create trigger a3 before insert on a for each row precedes a2 set new.x = New.x - 5",
			"create trigger a4 before insert on a for each row follows a2 set new.x = New.x * 3",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a values (1), (3)",
				Expected: []sql.Row{
					{sql.NewOkResult(2)},
				},
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{-23}, {-11},
				},
			},
		},
	},
	{
		Name: "triggers before and after update",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger a1 before update on a for each row insert into b values (old.x * 7)",
			"create trigger a2 after update on a for each row insert into b values (old.x * 11)",
			"insert into a values (2), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "update a set x = x * 2",
				Expected: []sql.Row{
					{sql.OkResult{
						RowsAffected: 3,
						Info: plan.UpdateInfo{
							Matched: 3,
							Updated: 3,
						},
					}},
				},
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{4}, {6}, {10},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{14}, {21}, {22}, {33}, {35}, {55},
				},
			},
		},
	},
	{
		Name: "multiple triggers before and after update",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger a1 before update on a for each row insert into b values (old.x * 7)",
			"create trigger a2 after update on a for each row insert into b values (old.x * 11)",
			"create trigger a3 before update on a for each row insert into b values (old.x * 13)",
			"create trigger a4 after update on a for each row insert into b values (old.x * 17)",
			"insert into a values (2), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "update a set x = x * 2",
				Expected: []sql.Row{
					{sql.OkResult{
						RowsAffected: 3,
						Info: plan.UpdateInfo{
							Matched: 3,
							Updated: 3,
						},
					}},
				},
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{4}, {6}, {10},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{14}, {21}, {22}, {26}, {33}, {34}, {35}, {39}, {51}, {55}, {65}, {85},
				},
			},
		},
	},
	{
		Name: "triggers before and after delete",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger a1 before delete on a for each row insert into b values (old.x * 7)",
			"create trigger a2 after delete on a for each row insert into b values (old.x * 11)",
			"insert into a values (2), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "delete from a",
				Expected: []sql.Row{
					{sql.NewOkResult(3)},
				},
			},
			{
				Query:    "select x from a order by 1",
				Expected: []sql.Row{},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{14}, {21}, {22}, {33}, {35}, {55},
				},
			},
		},
	},
	{
		Name: "multiple triggers before and after delete",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create trigger a1 before delete on a for each row insert into b values (old.x * 7)",
			"create trigger a2 after delete on a for each row insert into b values (old.x * 11)",
			"create trigger a3 before delete on a for each row insert into b values (old.x * 13)",
			"create trigger a4 after delete on a for each row insert into b values (old.x * 17)",
			"insert into a values (2), (3), (5)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "delete from a",
				Expected: []sql.Row{
					{sql.NewOkResult(3)},
				},
			},
			{
				Query:    "select x from a order by 1",
				Expected: []sql.Row{},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{14}, {21}, {22}, {26}, {33}, {34}, {35}, {39}, {51}, {55}, {65}, {85},
				},
			},
		},
	},
	{
		Name: "multiple triggers before and after insert, with precedes / follows",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into b values (1), (3)",
			"create trigger a1 before insert on a for each row set new.x = New.x + 1",
			"create trigger a2 before insert on a for each row precedes a1 set new.x = New.x * 2",
			"create trigger a3 before insert on a for each row precedes a2 set new.x = New.x - 5",
			"create trigger a4 before insert on a for each row follows a2 set new.x = New.x * 3",

			"create trigger a5 after insert on a for each row update b set y = y + 1 order by y asc",
			"create trigger a6 after insert on a for each row precedes a5 update b set y = y * 2 order by y asc",
			"create trigger a7 after insert on a for each row precedes a6 update b set y = y - 5 order by y asc",
			"create trigger a8 after insert on a for each row follows a6 update b set y = y * 3 order by y asc",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a values (1), (3)",
				Expected: []sql.Row{
					{sql.NewOkResult(2)},
				},
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{-23}, {-11},
				},
			},
			{
				Query: "select y from b order by 1",

				Expected: []sql.Row{
					{-167}, {-95},
				},
			},
		},
	},
	{
		Name: "triggered update query which could project",
		SetUpScript: []string{
			"create table trigger_on_update (id int primary key, first varchar(25), last varchar(25))",
			"create table is_dirty (id int primary key, is_dirty bool)",
			"insert into is_dirty values (1, false)",
			"insert into trigger_on_update values (1, 'george', 'smith')",
			`create trigger trigger_on_update_on_update before update on trigger_on_update for each row
begin
  update is_dirty set is_dirty = true;
end;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select id, is_dirty from is_dirty",
				Expected: []sql.Row{
					{1, 0},
				},
			},
			{
				Query: "update trigger_on_update set id = 1, first = 'george', last = 'smith' where id = 1",
				Expected: []sql.Row{
					{
						sql.OkResult{
							RowsAffected: 0,
							Info: plan.UpdateInfo{
								Matched: 1,
								Updated: 0,
							},
						},
					},
				},
			},
			{
				Query: "select id, is_dirty from is_dirty",
				Expected: []sql.Row{
					{1, 1},
				},
			},
		},
	},

	{
		Name: "trigger before insert with subquery expressions",
		SetUpScript: []string{
			"create table rn (id int primary key, upstream_edge_id int, downstream_edge_id int)",
			"create table sn (id int primary key, target_id int, source_id int)",
			`
create trigger rn_on_insert before insert on rn
for each row
begin
  if
    (select target_id from sn where id = NEW.upstream_edge_id) <> (select source_id from sn where id = NEW.downstream_edge_id)
  then
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'broken';
  end if;
end;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "select id from rn",
				Expected: []sql.Row{},
			},
		},
	},

	{
		Name: "trigger before insert, multiple triggers defined",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create table c (z int primary key)",

			"create trigger a1 before insert on a for each row insert into b values (new.x * 2)",
			"create trigger a2 before update on a for each row insert into b values (new.x * 3)",
			"create trigger a3 before delete on a for each row insert into b values (old.x * 5)",
			"create trigger b1 before insert on b for each row insert into c values (new.y * 7)",
			"create trigger b2 before update on b for each row insert into c values (new.y * 11)",
			"create trigger b3 before delete on b for each row insert into c values (old.y * 13)",
			"insert into a values (1), (2), (3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {2}, {3},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{2}, {4}, {6},
				},
			},
			{
				Query: "select z from c order by 1",
				Expected: []sql.Row{
					{14}, {28}, {42},
				},
			},
		},
	},
	{
		Name: "trigger with signal",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"create table c (z int primary key)",
			"insert into c values (-1)",
			`create trigger trig_with_signal before insert on a for each row
begin
	declare cond_name condition for sqlstate '45000';
	if new.x = 5 then signal cond_name set message_text = 'trig err';
	end if;
	insert into b values (new.x + 1);
	update c set z = new.x;
end;`,
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "insert into a values (1), (3)",
				Expected: []sql.Row{
					{sql.OkResult{RowsAffected: 2}},
				},
			},
			{
				Query:          "insert into a values (5)",
				ExpectedErrStr: "trig err (errno 1644) (sqlstate 45000)",
			},
			{
				Query: "select x from a order by 1",
				Expected: []sql.Row{
					{1}, {3},
				},
			},
			{
				Query: "select y from b order by 1",
				Expected: []sql.Row{
					{2}, {4},
				},
			},
			{
				Query: "select z from c order by 1",
				Expected: []sql.Row{
					{3},
				},
			},
		},
	},

	{
		Name: "infoschema for multiple triggers before and after insert, with precedes / follows",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create table b (y int primary key)",
			"insert into b values (1), (3)",
			"create trigger a1 before insert on a for each row set new.x = New.x + 1",
			"create trigger a2 before insert on a for each row precedes a1 set new.x = New.x * 2",
			"create trigger a3 before insert on a for each row precedes a2 set new.x = New.x - 5",
			"create trigger a4 before insert on a for each row follows a2 set new.x = New.x * 3",

			"create trigger a5 after insert on a for each row update b set y = y + 1 order by y asc",
			"create trigger a6 after insert on a for each row precedes a5 update b set y = y * 2 order by y asc",
			"create trigger a7 after insert on a for each row precedes a6 update b set y = y - 5 order by y asc",
			"create trigger a8 after insert on a for each row follows a6 update b set y = y * 3 order by y asc",

			"insert into a values (1), (3)",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select * from information_schema.triggers",
				Expected: []sql.Row{
					{
						"def",
						"mydb",
						"a1",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(4),
						nil,
						"set new.x = New.x + 1",
						"ROW",
						"BEFORE",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a2",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(2),
						nil,
						"set new.x = New.x * 2",
						"ROW",
						"BEFORE",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a3",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(1),
						nil,
						"set new.x = New.x - 5",
						"ROW",
						"BEFORE",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a4",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(3),
						nil,
						"set new.x = New.x * 3",
						"ROW",
						"BEFORE",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a5",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(4),
						nil,
						"update b set y = y + 1 order by y asc",
						"ROW",
						"AFTER",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a6",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(2),
						nil,
						"update b set y = y * 2 order by y asc",
						"ROW",
						"AFTER",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a7",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(1),
						nil,
						"update b set y = y - 5 order by y asc",
						"ROW",
						"AFTER",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"def",
						"mydb",
						"a8",
						"INSERT",
						"def",
						"mydb",
						"a",
						int64(3),
						nil,
						"update b set y = y * 3 order by y asc",
						"ROW",
						"AFTER",
						nil,
						nil,
						"OLD",
						"NEW",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
		},
	},

	{
		Name: "show create triggers",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger a1 before insert on a for each row set new.x = new.x + 1",
			"create table b (y int primary key)",
			"create trigger b1 before insert on b for each row set new.y = new.y + 2",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "show create trigger a1",
				Expected: []sql.Row{
					{
						"a1",
						"",
						"create trigger a1 before insert on a for each row set new.x = new.x + 1",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
						time.Unix(0, 0).UTC(),
					},
				},
			},
			{
				Query: "show create trigger b1",
				Expected: []sql.Row{
					{
						"b1",
						"",
						"create trigger b1 before insert on b for each row set new.y = new.y + 2",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
						time.Unix(0, 0).UTC(),
					},
				},
			},
			{
				Query:       "show create trigger b2",
				ExpectedErr: sql.ErrTriggerDoesNotExist,
			},
		},
	},

	{
		Name: "show triggers",
		SetUpScript: []string{
			"create table abb (x int primary key)",
			"create table acc (y int primary key)",
			"create trigger t1 before insert on abb for each row set new.x = new.x + 1",
			"create trigger t2 before insert on abb for each row set new.x = new.x + 2",
			"create trigger t3 after insert on acc for each row insert into abb values (new.y)",
			"create trigger t4 before update on acc for each row set new.y = old.y + 2",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "show triggers",
				Expected: []sql.Row{
					{
						"t1",
						"INSERT",
						"abb",
						"set new.x = new.x + 1",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t2",
						"INSERT",
						"abb",
						"set new.x = new.x + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t3",
						"INSERT",
						"acc",
						"insert into abb values (new.y)",
						"AFTER",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t4",
						"UPDATE",
						"acc",
						"set new.y = old.y + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
			{
				Query: "show triggers from mydb",
				Expected: []sql.Row{
					{
						"t1",
						"INSERT",
						"abb",
						"set new.x = new.x + 1",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t2",
						"INSERT",
						"abb",
						"set new.x = new.x + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t3",
						"INSERT",
						"acc",
						"insert into abb values (new.y)",
						"AFTER",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t4",
						"UPDATE",
						"acc",
						"set new.y = old.y + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
			{
				Query: "show triggers like '%cc'",
				Expected: []sql.Row{
					{
						"t3",
						"INSERT",
						"acc",
						"insert into abb values (new.y)",
						"AFTER",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t4",
						"UPDATE",
						"acc",
						"set new.y = old.y + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
			{
				Query: "show triggers where event = 'INSERT'",
				Expected: []sql.Row{
					{
						"t1",
						"INSERT",
						"abb",
						"set new.x = new.x + 1",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t2",
						"INSERT",
						"abb",
						"set new.x = new.x + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t3",
						"INSERT",
						"acc",
						"insert into abb values (new.y)",
						"AFTER",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
			{
				Query: "show triggers where timing = 'AFTER'",
				Expected: []sql.Row{
					{
						"t3",
						"INSERT",
						"acc",
						"insert into abb values (new.y)",
						"AFTER",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
			{
				Query: "show triggers where timing = 'BEFORE' and `Table` like '%bb'",
				Expected: []sql.Row{
					{
						"t1",
						"INSERT",
						"abb",
						"set new.x = new.x + 1",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
					{
						"t2",
						"INSERT",
						"abb",
						"set new.x = new.x + 2",
						"BEFORE",
						time.Unix(0, 0).UTC(),
						"",
						"",
						sql.Collation_Default.CharacterSet().String(),
						sql.Collation_Default.String(),
						sql.Collation_Default.String(),
					},
				},
			},
		},
	},

	{
		Name: "drop trigger",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger t1 before insert on a for each row set new.x = new.x * 1",
			"create trigger t2 before insert on a for each row follows t1 set new.x = new.x * 2",
			"create trigger t3 before insert on a for each row set new.x = new.x * 3",
			"create trigger t4 before insert on a for each row precedes t3 set new.x = new.x * 5",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:       "drop trigger t1",
				ExpectedErr: sql.ErrTriggerCannotBeDropped,
			},
			{
				Query:       "drop trigger t3",
				ExpectedErr: sql.ErrTriggerCannotBeDropped,
			},
			{
				Query:    "drop trigger t4",
				Expected: []sql.Row{},
			},
			{
				Query:    "drop trigger t3",
				Expected: []sql.Row{},
			},
			{
				Query:    "drop trigger if exists t5",
				Expected: []sql.Row{},
			},
			{
				Query:       "drop trigger t5",
				ExpectedErr: sql.ErrTriggerDoesNotExist,
			},
			{
				Query: "select trigger_name from information_schema.triggers order by 1",
				Expected: []sql.Row{
					{"t1"},
					{"t2"},
				},
			},
			{
				Query:    "drop trigger if exists t2",
				Expected: []sql.Row{},
			},
			{
				Query: "select trigger_name from information_schema.triggers order by 1",
				Expected: []sql.Row{
					{"t1"},
				},
			},
		},
	},

	{
		Name: "drop table referenced in triggers",
		SetUpScript: []string{
			"create table a (w int primary key)",
			"create table b (x int primary key)",
			"create table c (y int primary key)",
			"create table d (z int primary key)",
			"create trigger t1 before insert on a for each row set new.w = new.w",
			"create trigger t2 before insert on a for each row set new.w = new.w * 100",
			"create trigger t3 before insert on b for each row set new.x = new.x",
			"create trigger t4 before insert on b for each row set new.x = new.x * 100",
			"create trigger t5 before insert on c for each row set new.y = new.y",
			"create trigger t6 before insert on c for each row set new.y = new.y * 100",
			"create trigger t7 before insert on d for each row set new.z = new.z",
			"create trigger t8 before insert on d for each row set new.z = new.z * 100",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "drop table a",
				Expected: []sql.Row{},
			},
			{
				Query: "select trigger_name from information_schema.triggers order by 1",
				Expected: []sql.Row{
					{"t3"},
					{"t4"},
					{"t5"},
					{"t6"},
					{"t7"},
					{"t8"},
				},
			},
			{
				Query:    "drop table if exists b, d, e",
				Expected: []sql.Row{},
			},
			{
				Query: "select trigger_name from information_schema.triggers order by 1",
				Expected: []sql.Row{
					{"t5"},
					{"t6"},
				},
			},
		},
	},
	{
		Name: "drop table referenced in triggers with follows/precedes",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger t1 before insert on a for each row set new.x = new.x",
			"create trigger t2 before insert on a for each row follows t1 set new.x = new.x * 10",
			"create trigger t3 before insert on a for each row precedes t1 set new.x = new.x * 100",
			"create trigger t4 before insert on a for each row follows t3 set new.x = new.x * 1000",
			"create trigger t5 before insert on a for each row precedes t2 set new.x = new.x * 10000",
			"create trigger t6 before insert on a for each row follows t4 set new.x = new.x * 100000",
			"create trigger t7 before insert on a for each row precedes t1 set new.x = new.x * 1000000",
			"create trigger t8 before insert on a for each row follows t6 set new.x = new.x * 10000000",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query:    "drop table a",
				Expected: []sql.Row{},
			},
			{
				Query:    "show triggers",
				Expected: []sql.Row{},
			},
		},
	},
	{
		Name: "triggers with subquery expressions analyze",
		SetUpScript: []string{
			"create table a (x int primary key)",
			"create trigger t1 before insert on a for each row begin if NEW.x in (select 2+2 from dual) then signal SQLSTATE '45000' SET MESSAGE_TEXT = 'String field contains invalid value, like empty string, ''none'', ''null'', ''n/a'', ''nan'' etc.'; end if; end;",
		},
		Assertions: nil,
	},
}
View Source
var UpdateErrorTests = []QueryErrorTest{
	{
		Query:       `UPDATE keyless INNER JOIN one_pk on keyless.c0 = one_pk.pk SET keyless.c0 = keyless.c0 + 1`,
		ExpectedErr: sql.ErrUnsupportedFeature,
	},
}
View Source
var UpdateTests = []WriteQueryTest{
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated';",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET S = 'updated';",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = ?;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}},
		Bindings: map[string]sql.Expression{
			"v1": expression.NewLiteral("updated", sql.Text),
		},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated' WHERE i > 9999;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(0, 0)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated' WHERE i = 1;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated' WHERE i <> 9999;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}},
	},
	{
		WriteQuery:          "UPDATE floattable SET f32 = f32 + f32, f64 = f32 * f64 WHERE i = 2;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM floattable WHERE i = 2;",
		ExpectedSelect:      []sql.Row{{int64(2), float32(3.0), float64(4.5)}},
	},
	{
		WriteQuery:          "UPDATE floattable SET f32 = 5, f32 = 4 WHERE i = 1;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT f32 FROM floattable WHERE i = 1;",
		ExpectedSelect:      []sql.Row{{float32(4.0)}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'first row' WHERE i = 1;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 0)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "UPDATE niltable SET b = NULL WHERE f IS NULL;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 2)}},
		SelectQuery:         "SELECT i,b FROM niltable WHERE f IS NULL;",
		ExpectedSelect:      []sql.Row{{int64(1), nil}, {int64(2), nil}, {int64(3), nil}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated' ORDER BY i ASC LIMIT 2;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated' ORDER BY i DESC LIMIT 2;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "updated"}, {int64(3), "updated"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated' ORDER BY i LIMIT 1 OFFSET 1;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "updated"}, {int64(3), "third row"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = 'updated';",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}},
	},
	{
		WriteQuery:          "UPDATE mytable SET s = _binary 'updated' WHERE i = 3;",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM mytable;",
		ExpectedSelect:      []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "updated"}},
	},
	{
		WriteQuery:          "UPDATE typestable SET ti = '2020-03-06 00:00:00';",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM typestable;",
		ExpectedSelect: []sql.Row{{
			int64(1),
			int8(2),
			int16(3),
			int32(4),
			int64(5),
			uint8(6),
			uint16(7),
			uint32(8),
			uint64(9),
			float32(10),
			float64(11),
			sql.MustConvert(sql.Timestamp.Convert("2020-03-06 00:00:00")),
			sql.MustConvert(sql.Date.Convert("2019-12-31")),
			"fourteen",
			0,
			nil,
			nil}},
	},
	{
		WriteQuery:          "UPDATE typestable SET ti = '2020-03-06 00:00:00', da = '2020-03-06';",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM typestable;",
		ExpectedSelect: []sql.Row{{
			int64(1),
			int8(2),
			int16(3),
			int32(4),
			int64(5),
			uint8(6),
			uint16(7),
			uint32(8),
			uint64(9),
			float32(10),
			float64(11),
			sql.MustConvert(sql.Timestamp.Convert("2020-03-06 00:00:00")),
			sql.MustConvert(sql.Date.Convert("2020-03-06")),
			"fourteen",
			0,
			nil,
			nil}},
	},
	{
		WriteQuery:          "UPDATE typestable SET da = '0000-00-00', ti = '0000-00-00 00:00:00';",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM typestable;",
		ExpectedSelect: []sql.Row{{
			int64(1),
			int8(2),
			int16(3),
			int32(4),
			int64(5),
			uint8(6),
			uint16(7),
			uint32(8),
			uint64(9),
			float32(10),
			float64(11),
			sql.Timestamp.Zero(),
			sql.Date.Zero(),
			"fourteen",
			0,
			nil,
			nil}},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 SET two_pk.c1 = two_pk.c1 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(4, 4)}},
		SelectQuery:         "SELECT * FROM two_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 1, 1, 2, 3, 4),
			sql.NewRow(0, 1, 11, 11, 12, 13, 14),
			sql.NewRow(1, 0, 21, 21, 22, 23, 24),
			sql.NewRow(1, 1, 31, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          "UPDATE mytable INNER JOIN one_pk ON mytable.i = one_pk.c5 SET mytable.i = mytable.i * 10",
		ExpectedWriteResult: []sql.Row{{newUpdateResult(0, 0)}},
		SelectQuery:         "SELECT * FROM mytable",
		ExpectedSelect: []sql.Row{
			sql.NewRow(int64(1), "first row"),
			sql.NewRow(int64(2), "second row"),
			sql.NewRow(int64(3), "third row"),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 SET two_pk.c1 = two_pk.c1 + 1 WHERE one_pk.c5 < 10`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM two_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 1, 1, 2, 3, 4),
			sql.NewRow(0, 1, 11, 11, 12, 13, 14),
			sql.NewRow(1, 0, 20, 21, 22, 23, 24),
			sql.NewRow(1, 1, 30, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 INNER JOIN othertable on othertable.i2 = two_pk.pk2 SET one_pk.c1 = one_pk.c1 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM one_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 1, 1, 2, 3, 4),
			sql.NewRow(1, 11, 11, 12, 13, 14),
			sql.NewRow(2, 20, 21, 22, 23, 24),
			sql.NewRow(3, 30, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN (SELECT * FROM two_pk order by pk1, pk2) as t2 on one_pk.pk = t2.pk1 SET one_pk.c1 = t2.c1 + 1 where one_pk.pk < 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM one_pk where pk < 1",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 1, 1, 2, 3, 4),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 SET one_pk.c1 = one_pk.c1 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM one_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 1, 1, 2, 3, 4),
			sql.NewRow(1, 11, 11, 12, 13, 14),
			sql.NewRow(2, 20, 21, 22, 23, 24),
			sql.NewRow(3, 30, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 SET one_pk.c1 = one_pk.c1 + 1, one_pk.c2 = one_pk.c2 + 1 ORDER BY one_pk.pk`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM one_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 1, 2, 2, 3, 4),
			sql.NewRow(1, 11, 12, 12, 13, 14),
			sql.NewRow(2, 20, 21, 22, 23, 24),
			sql.NewRow(3, 30, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 SET one_pk.c1 = one_pk.c1 + 1, two_pk.c1 = two_pk.c2 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(8, 6)}},
		SelectQuery:         "SELECT * FROM two_pk;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 2, 1, 2, 3, 4),
			sql.NewRow(0, 1, 12, 11, 12, 13, 14),
			sql.NewRow(1, 0, 22, 21, 22, 23, 24),
			sql.NewRow(1, 1, 32, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE othertable CROSS JOIN tabletest set othertable.i2 = othertable.i2 * 10`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM othertable order by i2",
		ExpectedSelect: []sql.Row{
			sql.NewRow("third", 10),
			sql.NewRow("second", 20),
			sql.NewRow("first", 30),
		},
	},
	{
		WriteQuery:          `UPDATE tabletest cross join tabletest as t2 set tabletest.i = tabletest.i * 10`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM tabletest order by i",
		ExpectedSelect: []sql.Row{
			sql.NewRow(10, "first row"),
			sql.NewRow(20, "second row"),
			sql.NewRow(30, "third row"),
		},
	},
	{
		WriteQuery:          `UPDATE othertable, tabletest set tabletest.i = tabletest.i * 10`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM tabletest order by i",
		ExpectedSelect: []sql.Row{
			sql.NewRow(10, "first row"),
			sql.NewRow(20, "second row"),
			sql.NewRow(30, "third row"),
		},
	},
	{
		WriteQuery:          `UPDATE one_pk INNER JOIN two_pk on one_pk.pk = two_pk.pk1 INNER JOIN two_pk a1 on one_pk.pk = two_pk.pk2 SET two_pk.c1 = two_pk.c1 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}},
		SelectQuery:         "SELECT * FROM two_pk order by pk1 ASC, pk2 ASC;",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 1, 1, 2, 3, 4),
			sql.NewRow(0, 1, 10, 11, 12, 13, 14),
			sql.NewRow(1, 0, 20, 21, 22, 23, 24),
			sql.NewRow(1, 1, 31, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE othertable INNER JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.s2 = 'fourth'`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM othertable order by i2",
		ExpectedSelect: []sql.Row{
			sql.NewRow("third", 1),
			sql.NewRow("second", 2),
			sql.NewRow("fourth", 3),
		},
	},
	{
		WriteQuery:          `UPDATE tabletest cross join tabletest as t2 set t2.i = t2.i * 10`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM tabletest order by i",
		ExpectedSelect: []sql.Row{
			sql.NewRow(10, "first row"),
			sql.NewRow(20, "second row"),
			sql.NewRow(30, "third row"),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.s2 = 'fourth'`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM othertable order by i2",
		ExpectedSelect: []sql.Row{
			sql.NewRow("fourth", 1),
			sql.NewRow("fourth", 2),
			sql.NewRow("fourth", 3),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET tabletest.s = 'fourth row', tabletest.i = tabletest.i + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM tabletest order by i",
		ExpectedSelect: []sql.Row{
			sql.NewRow(1, "first row"),
			sql.NewRow(2, "second row"),
			sql.NewRow(4, "fourth row"),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest t3 on othertable.i2=3 and t3.i=3 SET t3.s = 'fourth row', t3.i = t3.i + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM tabletest order by i",
		ExpectedSelect: []sql.Row{
			sql.NewRow(1, "first row"),
			sql.NewRow(2, "second row"),
			sql.NewRow(4, "fourth row"),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest on othertable.i2=3 and tabletest.i=3 LEFT JOIN one_pk on othertable.i2 = one_pk.pk SET one_pk.c1 = one_pk.c1 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}},
		SelectQuery:         "SELECT * FROM one_pk order by pk",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 1, 2, 3, 4),
			sql.NewRow(1, 11, 11, 12, 13, 14),
			sql.NewRow(2, 21, 21, 22, 23, 24),
			sql.NewRow(3, 31, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest on othertable.i2=3 and tabletest.i=3 LEFT JOIN one_pk on othertable.i2 = one_pk.pk SET one_pk.c1 = one_pk.c1 + 1 where one_pk.pk > 4`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(0, 0)}},
		SelectQuery:         "SELECT * FROM one_pk order by pk",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 1, 2, 3, 4),
			sql.NewRow(1, 10, 11, 12, 13, 14),
			sql.NewRow(2, 20, 21, 22, 23, 24),
			sql.NewRow(3, 30, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest on othertable.i2=3 and tabletest.i=3 LEFT JOIN one_pk on othertable.i2 = 1 and one_pk.pk = 1 SET one_pk.c1 = one_pk.c1 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM one_pk order by pk",
		ExpectedSelect: []sql.Row{
			sql.NewRow(0, 0, 1, 2, 3, 4),
			sql.NewRow(1, 11, 11, 12, 13, 14),
			sql.NewRow(2, 20, 21, 22, 23, 24),
			sql.NewRow(3, 30, 31, 32, 33, 34),
		},
	},
	{
		WriteQuery:          `UPDATE othertable RIGHT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.s2 = 'fourth'`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM othertable order by i2",
		ExpectedSelect: []sql.Row{
			sql.NewRow("third", 1),
			sql.NewRow("second", 2),
			sql.NewRow("fourth", 3),
		},
	},
	{
		WriteQuery:          `UPDATE othertable RIGHT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.i2 = othertable.i2 + 1`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM othertable order by i2",
		ExpectedSelect: []sql.Row{
			sql.NewRow("third", 1),
			sql.NewRow("second", 2),
			sql.NewRow("first", 4),
		},
	},
	{
		WriteQuery:          `UPDATE othertable LEFT JOIN tabletest on othertable.i2=tabletest.i RIGHT JOIN one_pk on othertable.i2 = 1 and one_pk.pk = 1 SET tabletest.s = 'updated';`,
		ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}},
		SelectQuery:         "SELECT * FROM tabletest order by i",
		ExpectedSelect: []sql.Row{
			sql.NewRow(1, "updated"),
			sql.NewRow(2, "second row"),
			sql.NewRow(3, "third row"),
		},
	},
}
View Source
var VariableErrorTests = []QueryErrorTest{
	{
		Query:       "set @@does_not_exist = 100",
		ExpectedErr: sql.ErrUnknownSystemVariable,
	},
	{
		Query:       "set @myvar = bareword",
		ExpectedErr: sql.ErrColumnNotFound,
	},
	{
		Query:       "set @@sql_mode = true",
		ExpectedErr: sql.ErrInvalidSystemVariableValue,
	},
	{
		Query:       `set @@sql_mode = "NOT_AN_OPTION"`,
		ExpectedErr: sql.ErrInvalidSetValue,
	},
	{
		Query:       `set global core_file = true`,
		ExpectedErr: sql.ErrSystemVariableReadOnly,
	},
	{
		Query:       `set global require_row_format = on`,
		ExpectedErr: sql.ErrSystemVariableSessionOnly,
	},
	{
		Query:       `set session default_password_lifetime = 5`,
		ExpectedErr: sql.ErrSystemVariableGlobalOnly,
	},
	{
		Query:       `set @custom_var = default`,
		ExpectedErr: sql.ErrUserVariableNoDefault,
	},
	{
		Query:       `set session @@bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set global @@bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set session @@session.bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set session @@global.bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set global @@session.bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set global @@global.bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set session @myvar = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set global @myvar = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set @@session.@@bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set @@global.@@bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set @@session.@bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set @@global.@bulk_insert_buffer_size = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set @@session.@myvar = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
	{
		Query:       `set @@global.@myvar = 5`,
		ExpectedErr: sql.ErrSyntaxError,
	},
}
View Source
var VariableQueries = []ScriptTest{
	{
		Name: "set system variables",
		SetUpScript: []string{
			"set @@auto_increment_increment = 100, sql_select_limit = 1",
		},
		Query: "SELECT @@auto_increment_increment, @@sql_select_limit",
		Expected: []sql.Row{
			{100, 1},
		},
	},
	{
		Name: "set system variables and user variables",
		SetUpScript: []string{
			"SET @myvar = @@autocommit",
			"SET autocommit = @myvar",
			"SET @myvar2 = @myvar - 1, @myvar3 = @@autocommit - 1",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "select @myvar, @@autocommit, @myvar2, @myvar3",

				Expected: []sql.Row{
					{1, 1, 0, 0.0},
				},
			},
		},
	},
	{
		Name: "set system variables mixed case",
		SetUpScript: []string{
			"set @@auto_increment_INCREMENT = 100, sql_select_LIMIT = 1",
		},
		Query: "SELECT @@auto_increment_increment, @@sql_select_limit",
		Expected: []sql.Row{
			{100, 1},
		},
	},
	{
		Name: "set system variable defaults",
		SetUpScript: []string{
			"set @@auto_increment_increment = 100, sql_select_limit = 1",
			"set @@auto_increment_increment = default, sql_select_limit = default",
		},
		Query: "SELECT @@auto_increment_increment, @@sql_select_limit",
		Expected: []sql.Row{
			{1, math.MaxInt32},
		},
	},
	{
		Name: "set system variable ON / OFF",
		SetUpScript: []string{
			"set @@autocommit = ON, sql_mode = \"\"",
		},
		Query: "SELECT @@autocommit, @@session.sql_mode",
		Expected: []sql.Row{
			{1, ""},
		},
	},
	{
		Name: "set system variable ON / OFF",
		SetUpScript: []string{
			"set @@autocommit = ON, session sql_mode = \"\"",
		},
		Query: "SELECT @@autocommit, @@session.sql_mode",
		Expected: []sql.Row{
			{1, ""},
		},
	},
	{
		Name: "set system variable true / false quoted",
		SetUpScript: []string{
			`set @@autocommit = "true", default_table_encryption = "false"`,
		},
		Query: "SELECT @@autocommit, @@session.default_table_encryption",
		Expected: []sql.Row{
			{1, 0},
		},
	},
	{
		Name: "set system variable true / false",
		SetUpScript: []string{
			`set @@autocommit = true, default_table_encryption = false`,
		},
		Query: "SELECT @@autocommit, @@session.default_table_encryption",
		Expected: []sql.Row{
			{1, 0},
		},
	},
	{
		Name: "set system variable with expressions",
		SetUpScript: []string{
			`set lc_messages = "123", @@auto_increment_increment = 1`,
			`set lc_messages = concat(@@lc_messages, "456"), @@auto_increment_increment = @@auto_increment_increment + 3`,
		},
		Query: "SELECT @@lc_messages, @@auto_increment_increment",
		Expected: []sql.Row{
			{"123456", 4},
		},
	},
	{
		Name: "set system variable to another system variable",
		SetUpScript: []string{
			`set @@auto_increment_increment = 123`,
			`set @@sql_select_limit = @@auto_increment_increment`,
		},
		Query: "SELECT @@sql_select_limit",
		Expected: []sql.Row{
			{123},
		},
	},
	{
		Name: "set names",
		SetUpScript: []string{
			`set names utf8mb4`,
		},
		Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results",
		Expected: []sql.Row{
			{"utf8mb4", "utf8mb4", "utf8mb4"},
		},
	},

	{
		Name: "set names quoted",
		SetUpScript: []string{
			`set NAMES "charset"`,
		},
		Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results",
		Expected: []sql.Row{
			{"charset", "charset", "charset"},
		},
	},
	{
		Name: "set character set",
		SetUpScript: []string{
			`set character set utf8`,
		},
		Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results",
		Expected: []sql.Row{
			{"utf8", "utf8mb4", "utf8"},
		},
	},
	{
		Name: "set charset",
		SetUpScript: []string{
			`set charset utf8`,
		},
		Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results",
		Expected: []sql.Row{
			{"utf8", "utf8mb4", "utf8"},
		},
	},
	{
		Name: "set charset quoted",
		SetUpScript: []string{
			`set charset 'utf8'`,
		},
		Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results",
		Expected: []sql.Row{
			{"utf8", "utf8mb4", "utf8"},
		},
	},
	{
		Name: "set system variable to bareword",
		SetUpScript: []string{
			`set @@sql_mode = ALLOW_INVALID_DATES`,
		},
		Query: "SELECT @@sql_mode",
		Expected: []sql.Row{
			{"ALLOW_INVALID_DATES"},
		},
	},
	{
		Name: "set system variable to bareword, unqualified",
		SetUpScript: []string{
			`set sql_mode = ALLOW_INVALID_DATES`,
		},
		Query: "SELECT @@sql_mode",
		Expected: []sql.Row{
			{"ALLOW_INVALID_DATES"},
		},
	},

	{
		Name: "set user var",
		SetUpScript: []string{
			`set @myvar = "hello"`,
		},
		Query: "SELECT @myvar",
		Expected: []sql.Row{
			{"hello"},
		},
	},
	{
		Name: "set user var, integer type",
		SetUpScript: []string{
			`set @myvar = 123`,
		},
		Query: "SELECT @myvar",
		Expected: []sql.Row{
			{123},
		},
	},
	{
		Name: "set user var, floating point",
		SetUpScript: []string{
			`set @myvar = 123.4`,
		},
		Query: "SELECT @myvar",
		Expected: []sql.Row{
			{123.4},
		},
	},
	{
		Name: "set user var and sys var in same statement",
		SetUpScript: []string{
			`set @myvar = 123.4, @@auto_increment_increment = 1234`,
		},
		Query: "SELECT @myvar, @@auto_increment_increment",
		Expected: []sql.Row{
			{123.4, 1234},
		},
	},
	{
		Name: "set sys var to user var",
		SetUpScript: []string{
			`set @myvar = 1234`,
			`set auto_increment_increment = @myvar`,
		},
		Query: "SELECT @myvar, @@auto_increment_increment",
		Expected: []sql.Row{
			{1234, 1234},
		},
	},
	{
		Name: "local is session",
		SetUpScript: []string{
			`set @@LOCAL.cte_max_recursion_depth = 1234`,
		},
		Query: "SELECT @@SESSION.cte_max_recursion_depth",
		Expected: []sql.Row{
			{1234},
		},
	},
	{
		Name: "user and system var with same name",
		SetUpScript: []string{
			`set @cte_max_recursion_depth = 55`,
			`set cte_max_recursion_depth = 77`,
		},
		Query: "SELECT @cte_max_recursion_depth, @@cte_max_recursion_depth",
		Expected: []sql.Row{
			{55, 77},
		},
	},
	{
		Name: "set transaction",
		Assertions: []ScriptTestAssertion{
			{
				Query:    "set transaction isolation level serializable, read only",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "select @@transaction_isolation, @@transaction_read_only",
				Expected: []sql.Row{{"SERIALIZABLE", 1}},
			},
			{
				Query:    "set transaction read write, isolation level read uncommitted",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "select @@transaction_isolation, @@transaction_read_only",
				Expected: []sql.Row{{"READ-UNCOMMITTED", 0}},
			},
			{
				Query:    "set transaction isolation level read committed",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "select @@transaction_isolation",
				Expected: []sql.Row{{"READ-COMMITTED"}},
			},
			{
				Query:    "set transaction isolation level repeatable read",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "select @@transaction_isolation",
				Expected: []sql.Row{{"REPEATABLE-READ"}},
			},
			{
				Query:    "set session transaction isolation level serializable, read only",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "select @@transaction_isolation, @@transaction_read_only",
				Expected: []sql.Row{{"SERIALIZABLE", 1}},
			},
			{
				Query:    "set global transaction read write, isolation level read uncommitted",
				Expected: []sql.Row{{}},
			},
			{
				Query:    "select @@transaction_isolation, @@transaction_read_only",
				Expected: []sql.Row{{"SERIALIZABLE", 1}},
			},
			{
				Query:    "select @@global.transaction_isolation, @@global.transaction_read_only",
				Expected: []sql.Row{{"READ-UNCOMMITTED", 0}},
			},
		},
	},
}
View Source
var VersionedQueries = []QueryTest{
	{
		Query: "SELECT *  FROM myhistorytable AS OF '2019-01-01' AS foo ORDER BY i",
		Expected: []sql.Row{
			{int64(1), "first row, 1"},
			{int64(2), "second row, 1"},
			{int64(3), "third row, 1"},
		},
	},
	{
		Query: "SELECT *  FROM myhistorytable AS OF '2019-01-02' foo ORDER BY i",
		Expected: []sql.Row{
			{int64(1), "first row, 2"},
			{int64(2), "second row, 2"},
			{int64(3), "third row, 2"},
		},
	},

	{
		Query: "SELECT *  FROM myhistorytable AS OF GREATEST('2019-01-02','2019-01-01','') foo ORDER BY i",
		Expected: []sql.Row{
			{int64(1), "first row, 2"},
			{int64(2), "second row, 2"},
			{int64(3), "third row, 2"},
		},
	},
	{
		Query: "SELECT *  FROM myhistorytable ORDER BY i",
		Expected: []sql.Row{
			{int64(1), "first row, 2"},
			{int64(2), "second row, 2"},
			{int64(3), "third row, 2"},
		},
	},
	{
		Query: "SHOW TABLES AS OF '2019-01-02' LIKE 'myhistorytable'",
		Expected: []sql.Row{
			{"myhistorytable"},
		},
	},
	{
		Query: "SHOW TABLES FROM mydb AS OF '2019-01-02' LIKE 'myhistorytable'",
		Expected: []sql.Row{
			{"myhistorytable"},
		},
	},
}
View Source
var VersionedScripts = []ScriptTest{
	{
		Name: "user var for AS OF expression",
		SetUpScript: []string{
			"SET @rev1 = '2019-01-01', @rev2 = '2019-01-02'",
		},
		Assertions: []ScriptTestAssertion{
			{
				Query: "SELECT *  FROM myhistorytable AS OF @rev1 AS foo ORDER BY i",
				Expected: []sql.Row{
					{int64(1), "first row, 1"},
					{int64(2), "second row, 1"},
					{int64(3), "third row, 1"},
				},
			},
			{
				Query: "SELECT *  FROM myhistorytable AS OF @rev2 AS foo ORDER BY i",
				Expected: []sql.Row{
					{int64(1), "first row, 2"},
					{int64(2), "second row, 2"},
					{int64(3), "third row, 2"},
				},
			},
			{
				Query: "SHOW TABLES AS OF @rev1 LIKE 'myhistorytable'",
				Expected: []sql.Row{
					{"myhistorytable"},
				},
			},
		},
	},
}
View Source
var VersionedViewTests = []QueryTest{
	{
		Query: "SELECT * FROM myview1 ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 2"),
			sql.NewRow(int64(2), "second row, 2"),
			sql.NewRow(int64(3), "third row, 2"),
		},
	},
	{
		Query: "SELECT t.* FROM myview1 AS t ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 2"),
			sql.NewRow(int64(2), "second row, 2"),
			sql.NewRow(int64(3), "third row, 2"),
		},
	},
	{
		Query: "SELECT t.i FROM myview1 AS t ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
			sql.NewRow(int64(2)),
			sql.NewRow(int64(3)),
		},
	},
	{
		Query: "SELECT * FROM myview1 AS OF '2019-01-01' ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 1"),
			sql.NewRow(int64(2), "second row, 1"),
			sql.NewRow(int64(3), "third row, 1"),
		},
	},
	{
		Query: "SELECT * FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 2"),
		},
	},
	{
		Query: "SELECT i FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
		},
	},
	{
		Query: "SELECT myview2.i FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
		},
	},
	{
		Query: "SELECT myview2.* FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 2"),
		},
	},
	{
		Query: "SELECT t.* FROM myview2 as t",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 2"),
		},
	},
	{
		Query: "SELECT t.i FROM myview2 as t",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
		},
	},
	{
		Query: "SELECT * FROM myview2 AS OF '2019-01-01'",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row, 1"),
		},
	},

	{
		Query: "select * from information_schema.views where table_schema = 'mydb'",
		Expected: []sql.Row{
			sql.NewRow("def", "mydb", "myview", "SELECT * FROM mytable", "NONE", "YES", "", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"),
			sql.NewRow("def", "mydb", "myview1", "SELECT * FROM myhistorytable", "NONE", "YES", "", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"),
			sql.NewRow("def", "mydb", "myview2", "SELECT * FROM myview1 WHERE i = 1", "NONE", "YES", "", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"),
		},
	},
	{
		Query: "select table_name from information_schema.tables where table_schema = 'mydb' and table_type = 'VIEW' order by 1",
		Expected: []sql.Row{
			sql.NewRow("myview"),
			sql.NewRow("myview1"),
			sql.NewRow("myview2"),
		},
	},
}
View Source
var ViewTests = []QueryTest{
	{
		Query: "SELECT * FROM myview ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row"),
			sql.NewRow(int64(2), "second row"),
			sql.NewRow(int64(3), "third row"),
		},
	},
	{
		Query: "SELECT myview.* FROM myview ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row"),
			sql.NewRow(int64(2), "second row"),
			sql.NewRow(int64(3), "third row"),
		},
	},
	{
		Query: "SELECT i FROM myview ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
			sql.NewRow(int64(2)),
			sql.NewRow(int64(3)),
		},
	},
	{
		Query: "SELECT t.* FROM myview AS t ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row"),
			sql.NewRow(int64(2), "second row"),
			sql.NewRow(int64(3), "third row"),
		},
	},
	{
		Query: "SELECT t.i FROM myview AS t ORDER BY i",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
			sql.NewRow(int64(2)),
			sql.NewRow(int64(3)),
		},
	},
	{
		Query: "SELECT * FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row"),
		},
	},
	{
		Query: "SELECT i FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
		},
	},
	{
		Query: "SELECT myview2.i FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
		},
	},
	{
		Query: "SELECT myview2.* FROM myview2",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row"),
		},
	},
	{
		Query: "SELECT t.* FROM myview2 as t",
		Expected: []sql.Row{
			sql.NewRow(int64(1), "first row"),
		},
	},
	{
		Query: "SELECT t.i FROM myview2 as t",
		Expected: []sql.Row{
			sql.NewRow(int64(1)),
		},
	},

	{
		Query: "select * from information_schema.views where table_schema = 'mydb' order by table_name",
		Expected: []sql.Row{
			sql.NewRow("def", "mydb", "myview", "SELECT * FROM mytable", "NONE", "YES", "", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"),
			sql.NewRow("def", "mydb", "myview2", "SELECT * FROM myview WHERE i = 1", "NONE", "YES", "", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"),
		},
	},
	{
		Query: "select table_name from information_schema.tables where table_schema = 'mydb' and table_type = 'VIEW' order by 1",
		Expected: []sql.Row{
			sql.NewRow("myview"),
			sql.NewRow("myview2"),
		},
	},
}

Functions

func AssertErr

func AssertErr(t *testing.T, e *sqle.Engine, harness Harness, query string, expectedErrKind *errors.Kind, errStrs ...string)

AssertErr asserts that the given query returns an error during its execution, optionally specifying a type of error.

func AssertErrWithBindings

func AssertErrWithBindings(t *testing.T, e *sqle.Engine, harness Harness, query string, bindings map[string]sql.Expression, expectedErrKind *errors.Kind, errStrs ...string)

AssertErrWithBindings asserts that the given query returns an error during its execution, optionally specifying a type of error.

func AssertErrWithCtx

func AssertErrWithCtx(t *testing.T, e *sqle.Engine, ctx *sql.Context, query string, expectedErrKind *errors.Kind, errStrs ...string)

AssertErrWithCtx is the same as AssertErr, but uses the context given instead of creating one from a harness

func AssertWarningAndTestQuery

func AssertWarningAndTestQuery(
	t *testing.T,
	e *sqle.Engine,
	ctx *sql.Context,
	harness Harness,
	query string,
	expected []sql.Row,
	expectedCols []*sql.Column,
	expectedCode int,
)

AssertWarningAndTestQuery tests the query and asserts an expected warning code. If |ctx| is provided, it will be used. Otherwise the harness will be used to create a fresh context.

func CreateSubsetTestData

func CreateSubsetTestData(t *testing.T, harness Harness, includedTables []string) []sql.Database

createSubsetTestData creates test tables and data. Passing a non-nil slice for includedTables will restrict the table creation to just those tables named.

func CreateTestData

func CreateTestData(t *testing.T, harness Harness) []sql.Database

createTestData uses the provided harness to create test tables and data for many of the other tests.

func DeleteRows

func DeleteRows(t *testing.T, ctx *sql.Context, table sql.DeletableTable, rows ...sql.Row)

func InsertRows

func InsertRows(t *testing.T, ctx *sql.Context, table sql.InsertableTable, rows ...sql.Row)

func NewBaseSession

func NewBaseSession() *sql.BaseSession

NewBaseSession returns a new BaseSession compatible with these tests. Most tests will work with any session implementation, but for full compatibility use a session based on this one.

func NewColumnDefaultValue

func NewColumnDefaultValue(expr sql.Expression, outType sql.Type, representsLiteral bool, mayReturnNil bool) *sql.ColumnDefaultValue

func NewContext

func NewContext(harness Harness) *sql.Context

func NewContextWithEngine

func NewContextWithEngine(harness Harness, engine *sqle.Engine) *sql.Context

func NewEngine

func NewEngine(t *testing.T, harness Harness) *sqle.Engine

NewEngine creates test data and returns an engine using the harness provided.

func NewEngineWithDbs

func NewEngineWithDbs(t *testing.T, harness Harness, databases []sql.Database) *sqle.Engine

NewEngineWithDbs returns a new engine with the databases provided. This is useful if you don't want to implement a full harness but want to run your own tests on DBs you create.

func NewSession

func NewSession(harness Harness) *sql.Context

func RunQuery

func RunQuery(t *testing.T, e *sqle.Engine, harness Harness, query string)

RunQuery runs the query given and asserts that it doesn't result in an error.

func RunQueryTests

func RunQueryTests(t *testing.T, harness Harness, queries []QueryTest)

Runs the query tests given after setting up the engine. Useful for testing out a smaller subset of queries during debugging.

func RunQueryWithContext

func RunQueryWithContext(t *testing.T, e *sqle.Engine, ctx *sql.Context, query string)

RunQueryWithContext runs the query given and asserts that it doesn't result in an error.

func TestAddColumn

func TestAddColumn(t *testing.T, harness Harness)

func TestAddDropPks

func TestAddDropPks(t *testing.T, harness Harness)

func TestAlterTable

func TestAlterTable(t *testing.T, harness Harness)

func TestAmbiguousColumnResolution

func TestAmbiguousColumnResolution(t *testing.T, harness Harness)

func TestChecksOnInsert

func TestChecksOnInsert(t *testing.T, harness Harness)

func TestChecksOnUpdate

func TestChecksOnUpdate(t *testing.T, harness Harness)

func TestClearWarnings

func TestClearWarnings(t *testing.T, harness Harness)

func TestColumnAliases

func TestColumnAliases(t *testing.T, harness Harness)

TestColumnAliases exercises the logic for naming and referring to column aliases, and unlike other tests in this file checks that the name of the columns in the result schema is correct.

func TestColumnDefaults

func TestColumnDefaults(t *testing.T, harness Harness)

func TestComplexIndexQueries

func TestComplexIndexQueries(t *testing.T, harness Harness)

func TestCreateCheckConstraints

func TestCreateCheckConstraints(t *testing.T, harness Harness)

func TestCreateDatabase

func TestCreateDatabase(t *testing.T, harness Harness)

func TestCreateForeignKeys

func TestCreateForeignKeys(t *testing.T, harness Harness)

func TestCreateTable

func TestCreateTable(t *testing.T, harness Harness)

func TestCurrentTimestamp

func TestCurrentTimestamp(t *testing.T, harness Harness)

func TestDateParse

func TestDateParse(t *testing.T, harness Harness)

func TestDelete

func TestDelete(t *testing.T, harness Harness)

func TestDeleteErrors

func TestDeleteErrors(t *testing.T, harness Harness)

func TestDisallowedCheckConstraints

func TestDisallowedCheckConstraints(t *testing.T, harness Harness)

func TestDropCheckConstraints

func TestDropCheckConstraints(t *testing.T, harness Harness)

func TestDropColumn

func TestDropColumn(t *testing.T, harness Harness)

func TestDropConstraints

func TestDropConstraints(t *testing.T, harness Harness)

func TestDropDatabase

func TestDropDatabase(t *testing.T, harness Harness)

func TestDropForeignKeys

func TestDropForeignKeys(t *testing.T, harness Harness)

func TestDropTable

func TestDropTable(t *testing.T, harness Harness)

func TestExplode

func TestExplode(t *testing.T, harness Harness)

func TestInfoSchema

func TestInfoSchema(t *testing.T, harness Harness)

TestInfoSchema runs tests of the information_schema database

func TestInnerNestedInNaturalJoins

func TestInnerNestedInNaturalJoins(t *testing.T, harness Harness)

func TestInsertIgnoreInto

func TestInsertIgnoreInto(t *testing.T, harness Harness)

func TestInsertInto

func TestInsertInto(t *testing.T, harness Harness)

func TestInsertIntoErrors

func TestInsertIntoErrors(t *testing.T, harness Harness)

func TestJsonScripts

func TestJsonScripts(t *testing.T, harness Harness)

func TestLoadData

func TestLoadData(t *testing.T, harness Harness)

func TestLoadDataErrors

func TestLoadDataErrors(t *testing.T, harness Harness)

func TestLoadDataFailing

func TestLoadDataFailing(t *testing.T, harness Harness)

func TestModifyColumn

func TestModifyColumn(t *testing.T, harness Harness)

func TestNaturalJoin

func TestNaturalJoin(t *testing.T, harness Harness)

func TestNaturalJoinDisjoint

func TestNaturalJoinDisjoint(t *testing.T, harness Harness)

func TestNaturalJoinEqual

func TestNaturalJoinEqual(t *testing.T, harness Harness)

func TestOrderByGroupBy

func TestOrderByGroupBy(t *testing.T, harness Harness)

func TestPersist

func TestPersist(t *testing.T, harness Harness, newPersistableSess func(ctx *sql.Context) sql.PersistableSession)

func TestPkOrdinals

func TestPkOrdinals(t *testing.T, harness Harness)

func TestQueries

func TestQueries(t *testing.T, harness Harness)

Tests a variety of queries against databases and tables provided by the given harness.

func TestQuery

func TestQuery(t *testing.T, harness Harness, e *sqle.Engine, q string, expected []sql.Row, expectedCols []*sql.Column, bindings map[string]sql.Expression)

TestQuery runs a query on the engine given and asserts that results are as expected.

func TestQueryErrors

func TestQueryErrors(t *testing.T, harness Harness)

func TestQueryPlan

func TestQueryPlan(t *testing.T, ctx *sql.Context, engine *sqle.Engine, harness Harness, query string, expectedPlan string)

TestQueryPlan analyzes the query given and asserts that its printed plan matches the expected one.

func TestQueryPlans

func TestQueryPlans(t *testing.T, harness Harness)

Tests generating the correct query plans for various queries using databases and tables provided by the given harness.

func TestQueryWithContext

func TestQueryWithContext(t *testing.T, ctx *sql.Context, e *sqle.Engine, q string, expected []sql.Row, expectedCols []*sql.Column, bindings map[string]sql.Expression)

func TestReadOnly

func TestReadOnly(t *testing.T, harness Harness)

func TestReadOnlyDatabases

func TestReadOnlyDatabases(t *testing.T, harness Harness)

func TestRenameColumn

func TestRenameColumn(t *testing.T, harness Harness)

func TestRenameTable

func TestRenameTable(t *testing.T, harness Harness)

func TestReplaceInto

func TestReplaceInto(t *testing.T, harness Harness)

func TestReplaceIntoErrors

func TestReplaceIntoErrors(t *testing.T, harness Harness)

func TestScript

func TestScript(t *testing.T, harness Harness, script ScriptTest) bool

TestScript runs the test script given, making any assertions given

func TestScriptWithEngine

func TestScriptWithEngine(t *testing.T, e *sqle.Engine, harness Harness, script ScriptTest)

TestScriptWithEngine runs the test script given with the engine provided.

func TestScripts

func TestScripts(t *testing.T, harness Harness)

func TestSessionSelectLimit

func TestSessionSelectLimit(t *testing.T, harness Harness)

func TestShowTableStatus

func TestShowTableStatus(t *testing.T, harness Harness)

Runs tests on SHOW TABLE STATUS queries.

func TestStoredProcedures

func TestStoredProcedures(t *testing.T, harness Harness)

func TestTracing

func TestTracing(t *testing.T, harness Harness)

func TestTransactionScript

func TestTransactionScript(t *testing.T, harness Harness, script TransactionTest) bool

TestTransactionScript runs the test script given, making any assertions given

func TestTransactionScriptWithEngine

func TestTransactionScriptWithEngine(t *testing.T, e *sqle.Engine, harness Harness, script TransactionTest)

TestTransactionScriptWithEngine runs the transaction test script given with the engine provided.

func TestTransactionScripts

func TestTransactionScripts(t *testing.T, harness Harness)

func TestTriggerErrors

func TestTriggerErrors(t *testing.T, harness Harness)

func TestTriggers

func TestTriggers(t *testing.T, harness Harness)

func TestTruncate

func TestTruncate(t *testing.T, harness Harness)

func TestUpdate

func TestUpdate(t *testing.T, harness Harness)

func TestUpdateErrors

func TestUpdateErrors(t *testing.T, harness Harness)

func TestUse

func TestUse(t *testing.T, harness Harness)

func TestVariableErrors

func TestVariableErrors(t *testing.T, harness Harness)

func TestVariables

func TestVariables(t *testing.T, harness Harness)

func TestVersionedQueries

func TestVersionedQueries(t *testing.T, harness Harness)

Tests a variety of queries against databases and tables provided by the given harness.

func TestVersionedViews

func TestVersionedViews(t *testing.T, harness Harness)

func TestViews

func TestViews(t *testing.T, harness Harness)

func TestWarnings

func TestWarnings(t *testing.T, harness Harness)

func TestWindowAgg

func TestWindowAgg(t *testing.T, harness Harness)

func WidenRow

func WidenRow(sch sql.Schema, row sql.Row) sql.Row

See WidenRows

func WidenRows

func WidenRows(sch sql.Schema, rows []sql.Row) []sql.Row

For a variety of reasons, the widths of various primitive types can vary when passed through different SQL queries (and different database implementations). We may eventually decide that this undefined behavior is a problem, but for now it's mostly just an issue when comparing results in tests. To get around this, we widen every type to its widest value in actual and expected results.

Types

type ForeignKeyHarness

type ForeignKeyHarness interface {
	Harness
	// SupportsForeignKeys returns whether this harness should accept CREATE FOREIGN KEY statements as part of test
	// setup.
	SupportsForeignKeys() bool
}

ForeignKeyHarness is an extension to Harness that lets an integrator test their implementation with foreign keys. Integrator tables must implement sql.ForeignKeyAlterableTable and sql.ForeignKeyTable.

type GenericErrorQueryTest

type GenericErrorQueryTest struct {
	Name     string
	Query    string
	Bindings map[string]sql.Expression
}

GenericErrorQueryTest is a query test that is used to assert an error occurs for some query, without specifying what the error was.

type Harness

type Harness interface {
	// Parallelism returns how many parallel go routines to use when constructing an engine for test.
	Parallelism() int
	// NewDatabase returns a sql.Database to use for a test. This method will always be called before asking for a
	// context or other information.
	NewDatabase(name string) sql.Database
	// NewDatabases returns a set of new databases, for test setup that requires more than one database.
	NewDatabases(names ...string) []sql.Database
	// NewDatabaseProvider returns a sql.MutableDatabaseProvider to use for a test.
	NewDatabaseProvider(dbs ...sql.Database) sql.MutableDatabaseProvider
	// NewTable takes a database previously created by NewDatabase and returns a table created with the given schema.
	NewTable(db sql.Database, name string, schema sql.PrimaryKeySchema) (sql.Table, error)
	// NewContext allows a harness to specify any sessions or context variables necessary for the proper functioning of
	// their engine implementation. Every harnessed engine test uses the context created by this method, with some
	// additional information (e.g. current DB) set uniformly. To replicated the behavior of tests during setup,
	// harnesses should generally dispatch to enginetest.NewContext(harness), rather than calling this method themselves.
	NewContext() *sql.Context
}

Harness provides a way for database integrators to validate their implementation against the standard set of queries used to develop and test the engine itself. See memory_engine_test.go for an example.

type IndexDriverHarness

type IndexDriverHarness interface {
	Harness
	// InitializeIndexDriver initializes the index driver for this test run with the databases given
	InitializeIndexDriver(dbs []sql.Database)
}

IndexDriverHarness is an extension to Harness that lets an integrator test their implementation alongside an index driver they provide.

type IndexDriverInitalizer

type IndexDriverInitalizer func([]sql.Database) sql.IndexDriver

type IndexHarness

type IndexHarness interface {
	Harness
	// SupportsNativeIndexCreation returns whether this harness should accept CREATE INDEX statements as part of test
	// setup.
	SupportsNativeIndexCreation() bool
}

IndexHarness is an extension to Harness that lets an integrator test their implementation with native (table-supplied) indexes. Integrator tables must implement sql.IndexAlterableTable.

type KeylessTableHarness

type KeylessTableHarness interface {
	Harness
	// SupportsKeylessTables indicates integrator support for keyless tables.
	SupportsKeylessTables() bool
}

KeylessTableHarness is an extension to Harness that lets an integrator test their implementation with keyless tables.

type MemoryHarness

type MemoryHarness struct {
	// contains filtered or unexported fields
}

func NewDefaultMemoryHarness

func NewDefaultMemoryHarness() *MemoryHarness

func NewMemoryHarness

func NewMemoryHarness(name string, parallelism int, numTablePartitions int, useNativeIndexes bool, indexDriverInitalizer IndexDriverInitalizer) *MemoryHarness

func (*MemoryHarness) IndexDriver

func (m *MemoryHarness) IndexDriver(dbs []sql.Database) sql.IndexDriver

func (*MemoryHarness) InitializeIndexDriver

func (m *MemoryHarness) InitializeIndexDriver(dbs []sql.Database)

func (*MemoryHarness) NewContext

func (m *MemoryHarness) NewContext() *sql.Context

func (*MemoryHarness) NewDatabase

func (m *MemoryHarness) NewDatabase(name string) sql.Database

func (*MemoryHarness) NewDatabaseProvider

func (m *MemoryHarness) NewDatabaseProvider(dbs ...sql.Database) sql.MutableDatabaseProvider

func (*MemoryHarness) NewDatabases

func (m *MemoryHarness) NewDatabases(names ...string) []sql.Database

func (*MemoryHarness) NewReadOnlyDatabases

func (m *MemoryHarness) NewReadOnlyDatabases(names ...string) []sql.ReadOnlyDatabase

func (*MemoryHarness) NewSession

func (m *MemoryHarness) NewSession() *sql.Context

func (*MemoryHarness) NewTable

func (m *MemoryHarness) NewTable(db sql.Database, name string, schema sql.PrimaryKeySchema) (sql.Table, error)

func (*MemoryHarness) NewTableAsOf

func (m *MemoryHarness) NewTableAsOf(db sql.VersionedDatabase, name string, schema sql.PrimaryKeySchema, asOf interface{}) sql.Table

func (*MemoryHarness) Parallelism

func (m *MemoryHarness) Parallelism() int

func (*MemoryHarness) QueriesToSkip

func (m *MemoryHarness) QueriesToSkip(queries ...string)

func (*MemoryHarness) SkipQueryTest

func (m *MemoryHarness) SkipQueryTest(query string) bool

func (*MemoryHarness) SnapshotTable

func (m *MemoryHarness) SnapshotTable(db sql.VersionedDatabase, name string, asOf interface{}) error

func (*MemoryHarness) SupportsForeignKeys

func (m *MemoryHarness) SupportsForeignKeys() bool

func (*MemoryHarness) SupportsKeylessTables

func (m *MemoryHarness) SupportsKeylessTables() bool

func (*MemoryHarness) SupportsNativeIndexCreation

func (m *MemoryHarness) SupportsNativeIndexCreation() bool

type MySQLDatabase

type MySQLDatabase struct {
	// contains filtered or unexported fields
}

MySQLDatabase represents a database for a local MySQL server.

type MySQLHarness

type MySQLHarness struct {
	// contains filtered or unexported fields
}

MySQLHarness is a harness for a local MySQL server. This will modify databases and tables as the tests see fit, which may delete pre-existing data. Ensure that the MySQL instance may freely be modified without worry.

func NewMySQLHarness

func NewMySQLHarness(user string, password string, host string, port int) (*MySQLHarness, error)

NewMySQLHarness returns a new MySQLHarness.

func (*MySQLHarness) Close

func (m *MySQLHarness) Close()

Close closes the connection. This will drop all databases created and accessed during the tests.

func (*MySQLHarness) NewContext

func (m *MySQLHarness) NewContext() *sql.Context

NewContext implements the interface Harness.

func (*MySQLHarness) NewDatabase

func (m *MySQLHarness) NewDatabase(name string) sql.Database

NewDatabase implements the interface Harness.

func (*MySQLHarness) NewDatabaseProvider

func (m *MySQLHarness) NewDatabaseProvider(dbs ...sql.Database) sql.MutableDatabaseProvider

NewDatabaseProvider implements the interface Harness.

func (*MySQLHarness) NewDatabases

func (m *MySQLHarness) NewDatabases(names ...string) []sql.Database

NewDatabases implements the interface Harness.

func (*MySQLHarness) NewTable

func (m *MySQLHarness) NewTable(db sql.Database, name string, schema sql.PrimaryKeySchema) (sql.Table, error)

NewTable implements the interface Harness.

func (*MySQLHarness) Parallelism

func (m *MySQLHarness) Parallelism() int

Parallelism implements the interface Harness.

func (*MySQLHarness) QueriesToSkip

func (m *MySQLHarness) QueriesToSkip(queries ...string)

QueriesToSkip adds queries that should be skipped.

func (*MySQLHarness) SkipQueryTest

func (m *MySQLHarness) SkipQueryTest(query string) bool

SkipQueryTest implements the interface SkippingHarness.

func (*MySQLHarness) SupportsForeignKeys

func (m *MySQLHarness) SupportsForeignKeys() bool

SupportsForeignKeys implements the interface ForeignKeyHarness.

func (*MySQLHarness) SupportsKeylessTables

func (m *MySQLHarness) SupportsKeylessTables() bool

SupportsKeylessTables implements the interface KeylessTableHarness.

func (*MySQLHarness) SupportsNativeIndexCreation

func (m *MySQLHarness) SupportsNativeIndexCreation() bool

SupportsNativeIndexCreation implements the interface IndexHarness.

type MySQLTable

type MySQLTable struct {
	// contains filtered or unexported fields
}

MySQLTable represents a table for a local MySQL server.

type QueryErrorTest

type QueryErrorTest struct {
	Query          string
	Bindings       map[string]sql.Expression
	ExpectedErr    *errors.Kind
	ExpectedErrStr string
}

type QueryPlanTest

type QueryPlanTest struct {
	Query        string
	ExpectedPlan string
}

type QueryTest

type QueryTest struct {
	Query           string
	Expected        []sql.Row
	ExpectedColumns sql.Schema // only Name and Type matter here, because that's what we send on the wire
	Bindings        map[string]sql.Expression
}

type ReadOnlyDatabaseHarness

type ReadOnlyDatabaseHarness interface {
	Harness

	// NewReadOnlyDatabases returns a []sql.ReadOnlyDatabase to use for a test.
	NewReadOnlyDatabases(name ...string) []sql.ReadOnlyDatabase
}

type SQLITEDatabase

type SQLITEDatabase struct {
	// contains filtered or unexported fields
}

SQLITEDatabase represents a database for a local SQLITE server.

type SQLITEHarness

type SQLITEHarness struct {
	// contains filtered or unexported fields
}

SQLITEHarness is a harness for a local SQLITE server. This will modify databases and tables as the tests see fit, which may delete pre-existing data. Ensure that the SQLITE instance may freely be modified without worry.

func NewSQLITEHarness

func NewSQLITEHarness(dbname string) (*SQLITEHarness, error)

NewSQLITEHarness returns a new SQLITEHarness.

func (*SQLITEHarness) Close

func (m *SQLITEHarness) Close()

Close closes the connection. This will drop all databases created and accessed during the tests.

func (*SQLITEHarness) NewContext

func (m *SQLITEHarness) NewContext() *sql.Context

NewContext implements the interface Harness.

func (*SQLITEHarness) NewDatabase

func (m *SQLITEHarness) NewDatabase(name string) sql.Database

NewDatabase implements the interface Harness.

func (*SQLITEHarness) NewDatabaseProvider

func (m *SQLITEHarness) NewDatabaseProvider(dbs ...sql.Database) sql.MutableDatabaseProvider

NewDatabaseProvider implements the interface Harness.

func (*SQLITEHarness) NewDatabases

func (m *SQLITEHarness) NewDatabases(names ...string) []sql.Database

NewDatabases implements the interface Harness.

func (*SQLITEHarness) NewTable

func (m *SQLITEHarness) NewTable(db sql.Database, name string, schema sql.PrimaryKeySchema) (sql.Table, error)

NewTable implements the interface Harness.

func (*SQLITEHarness) Parallelism

func (m *SQLITEHarness) Parallelism() int

Parallelism implements the interface Harness.

func (*SQLITEHarness) QueriesToSkip

func (m *SQLITEHarness) QueriesToSkip(queries ...string)

QueriesToSkip adds queries that should be skipped.

func (*SQLITEHarness) SkipQueryTest

func (m *SQLITEHarness) SkipQueryTest(query string) bool

SkipQueryTest implements the interface SkippingHarness.

func (*SQLITEHarness) SupportsForeignKeys

func (m *SQLITEHarness) SupportsForeignKeys() bool

SupportsForeignKeys implements the interface ForeignKeyHarness.

func (*SQLITEHarness) SupportsKeylessTables

func (m *SQLITEHarness) SupportsKeylessTables() bool

SupportsKeylessTables implements the interface KeylessTableHarness.

func (*SQLITEHarness) SupportsNativeIndexCreation

func (m *SQLITEHarness) SupportsNativeIndexCreation() bool

SupportsNativeIndexCreation implements the interface IndexHarness.

type SQLITETable

type SQLITETable struct {
	// contains filtered or unexported fields
}

SQLITETable represents a table for a local SQLITE server.

type ScriptTest

type ScriptTest struct {
	// Name of the script test
	Name string
	// The sql statements to execute as setup, in order. Results are not checked, but statements must not error.
	SetUpScript []string
	// The set of assertions to make after setup, in order
	Assertions []ScriptTestAssertion
	// For tests that make a single assertion, Query can be set for the single assertion
	Query string
	// For tests that make a single assertion, Expected can be set for the single assertion
	Expected []sql.Row
	// For tests that make a single assertion, ExpectedErr can be set for the expected error
	ExpectedErr *errors.Kind
}

type ScriptTestAssertion

type ScriptTestAssertion struct {
	Query       string
	Expected    []sql.Row
	ExpectedErr *errors.Kind
	// ExpectedErrStr should be set for tests that expect a specific error string this is not linked to a custom error.
	// In most cases, errors should be linked to a custom error, however there are exceptions where this is not possible,
	// such as the use of the SIGNAL statement.
	ExpectedErrStr string

	// ExpectedWarning is used for queries that should generate warnings but not errors.
	ExpectedWarning int
}

type SkippingHarness

type SkippingHarness interface {
	// SkipQueryTest returns whether to skip a test of the provided query string.
	SkipQueryTest(query string) bool
}

SkippingHarness provides a way for integrators to skip tests that are known to be broken. E.g., integrators that can't handle every possible SQL type.

type SkippingMemoryHarness

type SkippingMemoryHarness struct {
	MemoryHarness
}

func NewSkippingMemoryHarness

func NewSkippingMemoryHarness() *SkippingMemoryHarness

func (SkippingMemoryHarness) SkipQueryTest

func (s SkippingMemoryHarness) SkipQueryTest(query string) bool

type TransactionHarness

type TransactionHarness interface {
	Harness
	// NewSession returns a context with a new Session, rather than reusing an existing session from previous calls to
	// NewContext()
	NewSession() *sql.Context
}

type TransactionTest

type TransactionTest struct {
	// Name of the script test
	Name string
	// The sql statements to execute as setup, in order. Results are not checked, but statements must not error.
	// Setup scripts are run as a distinct client separate from the client used in any assertions.
	SetUpScript []string
	// The set of assertions to make after setup, in order
	// The transaction test runner augments the ScriptTest runner by allowing embedding of a client string in a query
	// comment to name the client running the query, like so:
	// /* client a */ select * from myTable
	Assertions []ScriptTestAssertion
}

TransactionTest is a script to test transaction correctness. It's similar to ScriptTest, but its assertions name clients that participate

type VersionedDBHarness

type VersionedDBHarness interface {
	Harness
	// NewTableAsOf creates a new table with the given name and schema, optionally handling snapshotting with the asOf
	// identifier. NewTableAsOf must ignore tables that already exist in the database. Tables returned by this method do
	// not need to have any previously created data in them, but they can. This behavior is implementation specific, and
	// the harness works either way.
	NewTableAsOf(db sql.VersionedDatabase, name string, schema sql.PrimaryKeySchema, asOf interface{}) sql.Table
	// SnapshotTable creates a snapshot of the table named with the given asOf label. Depending on the implementation,
	// NewTableAsOf might do all the necessary work to create such snapshots, so this could be a no-op.
	SnapshotTable(db sql.VersionedDatabase, name string, asOf interface{}) error
}

VersionedDBHarness is an extension to Harness that lets an integrator test their implementation of versioned (AS OF) queries. Integrators must implement sql.VersionedDatabase. For each table version being created, there will be a call to NewTableAsOf, some number of Delete and Insert operations, and then a call to SnapshotTable.

type WriteQueryTest

type WriteQueryTest struct {
	WriteQuery          string
	ExpectedWriteResult []sql.Row
	SelectQuery         string
	ExpectedSelect      []sql.Row
	Bindings            map[string]sql.Expression
}

WriteQueryTest is a query test for INSERT, UPDATE, etc. statements. It has a query to run and a select query to validate the results.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL