From f17583b7a01c7ce353b22f1b662aa628e68bde22 Mon Sep 17 00:00:00 2001 From: Max Hoffman Date: Wed, 27 Nov 2024 10:58:38 -0800 Subject: [PATCH 01/12] fix bad merge --- driver/result.go | 4 +- driver/rows.go | 8 +- enginetest/engine_only_test.go | 53 +- enginetest/enginetests.go | 700 ++-- enginetest/evaluation.go | 44 +- enginetest/example_test.go | 14 +- enginetest/harness.go | 4 +- enginetest/histogram_test.go | 20 +- enginetest/join_op_tests.go | 458 +-- enginetest/join_planning_tests.go | 280 +- enginetest/memory_engine_test.go | 14 +- enginetest/mysqlshim/database.go | 20 +- enginetest/mysqlshim/iter.go | 2 +- enginetest/mysqlshim/table.go | 8 +- enginetest/mysqlshim/table_editor.go | 8 +- enginetest/queries/alter_table_queries.go | 442 +-- enginetest/queries/ansi_quotes_queries.go | 92 +- enginetest/queries/blob_queries.go | 58 +- enginetest/queries/call_asof_queries.go | 20 +- .../queries/charset_collation_engine.go | 320 +- enginetest/queries/charset_collation_wire.go | 368 +- enginetest/queries/check_scripts.go | 64 +- enginetest/queries/column_alias_queries.go | 52 +- enginetest/queries/column_default_queries.go | 148 +- enginetest/queries/create_table_queries.go | 338 +- enginetest/queries/delete_queries.go | 158 +- ...ed_table_outer_scope_visibility_queries.go | 24 +- enginetest/queries/event_queries.go | 74 +- .../queries/external_procedure_queries.go | 56 +- enginetest/queries/foreign_key_queries.go | 472 +-- enginetest/queries/fulltext_queries.go | 310 +- enginetest/queries/generated_columns.go | 340 +- enginetest/queries/index_queries.go | 1746 ++++----- .../queries/information_schema_queries.go | 316 +- enginetest/queries/insert_queries.go | 746 ++-- enginetest/queries/join_queries.go | 286 +- enginetest/queries/json_scripts.go | 160 +- enginetest/queries/json_table_queries.go | 124 +- enginetest/queries/load_queries.go | 94 +- enginetest/queries/logic_test_scripts.go | 202 +- enginetest/queries/mysql_db_queries.go | 8 +- enginetest/queries/null_range_tests.go | 30 +- enginetest/queries/numeric_error_queries.go | 24 +- .../queries/order_by_group_by_queries.go | 58 +- enginetest/queries/ordinal_ddl_queries.go | 80 +- enginetest/queries/priv_auth_queries.go | 370 +- enginetest/queries/procedure_queries.go | 324 +- enginetest/queries/queries.go | 3452 ++++++++--------- enginetest/queries/regex_queries.go | 930 ++--- enginetest/queries/replace_queries.go | 56 +- enginetest/queries/script_queries.go | 1982 +++++----- enginetest/queries/stats_queries.go | 50 +- enginetest/queries/table_func_scripts.go | 60 +- enginetest/queries/transaction_queries.go | 398 +- enginetest/queries/trigger_queries.go | 660 ++-- enginetest/queries/type_wire_queries.go | 78 +- enginetest/queries/update_queries.go | 640 +-- enginetest/queries/variable_queries.go | 132 +- enginetest/queries/vector_function_queries.go | 58 - enginetest/queries/vector_index_queries.go | 81 - enginetest/queries/view_queries.go | 48 +- enginetest/server_engine.go | 32 +- enginetest/spatial_index_tests.go | 52 +- .../sqllogictest/harness/memory_harness.go | 2 +- go.sum | 4 - memory/dual_table.go | 2 +- memory/external_stored_procedures.go | 20 +- memory/index.go | 19 +- memory/sequence_table.go | 2 +- memory/stats.go | 14 +- memory/table.go | 82 +- memory/table_data.go | 28 +- memory/table_editor.go | 28 +- memory/table_function.go | 2 +- memory/table_test.go | 76 +- server/golden/proxy.go | 49 +- server/handler.go | 8 +- server/handler_test.go | 12 +- sql/analyzer/biased_coster_test.go | 10 +- sql/analyzer/fix_exec_indexes.go | 2 +- sql/analyzer/index_analyzer_test.go | 1 - sql/analyzer/replace_order_by_distance.go | 23 +- sql/analyzer/replace_sort.go | 4 - sql/analyzer/validate_create_table.go | 4 +- sql/analyzer/validation_rules_test.go | 24 +- sql/analyzer/vector_index_test.go | 113 +- sql/cache.go | 5 +- sql/cache_test.go | 8 +- sql/core.go | 39 +- sql/expression/binary_test.go | 4 +- sql/expression/case_test.go | 20 +- .../{function/vector => }/distance.go | 32 +- .../{function/vector => }/distance_test.go | 5 +- sql/expression/div_test.go | 39 + .../function/aggregation/avg_test.go | 26 +- .../function/aggregation/common_test.go | 2 +- .../function/aggregation/count_test.go | 2 +- .../function/aggregation/first_test.go | 6 +- .../function/aggregation/group_concat.go | 19 +- .../function/aggregation/group_concat_test.go | 10 +- .../function/aggregation/last_test.go | 6 +- .../function/aggregation/max_test.go | 18 +- .../function/aggregation/min_test.go | 22 +- .../function/aggregation/sum_test.go | 42 +- .../function/aggregation/unary_agg_buffers.go | 6 +- .../function/aggregation/window_framer.go | 8 +- .../aggregation/window_framer_test.go | 12 +- .../function/aggregation/window_functions.go | 12 +- .../aggregation/window_functions_test.go | 90 +- .../function/aggregation/window_iter.go | 6 +- .../function/aggregation/window_iter_test.go | 6 +- .../function/aggregation/window_partition.go | 26 +- .../aggregation/window_partition_test.go | 40 +- sql/expression/function/convert_tz_test.go | 2 +- sql/expression/function/date_test.go | 82 +- sql/expression/function/if_test.go | 12 +- .../function/json/json_array_test.go | 16 +- .../function/json/json_contains_test.go | 104 +- sql/expression/function/json/json_search.go | 2 +- .../json/jsontests/json_array_append_test.go | 46 +- .../json/jsontests/json_array_insert_test.go | 40 +- .../jsontests/json_contains_path_tests.go | 40 +- .../json/jsontests/json_depth_test.go | 44 +- .../json/jsontests/json_extract_tests.go | 44 +- .../json/jsontests/json_function_tests.go | 2 +- .../json/jsontests/json_insert_tests.go | 52 +- .../function/json/jsontests/json_keys_test.go | 40 +- .../json/jsontests/json_length_test.go | 36 +- .../json/jsontests/json_merge_patch_test.go | 34 +- .../jsontests/json_merge_preserve_test.go | 36 +- .../json/jsontests/json_overlaps_test.go | 76 +- .../json/jsontests/json_remove_tests.go | 40 +- .../json/jsontests/json_replace_tests.go | 44 +- .../json/jsontests/json_search_test.go | 72 +- .../function/json/jsontests/json_set_tests.go | 46 +- .../function/json/jsontests/json_type_test.go | 48 +- .../json/jsontests/json_valid_test.go | 34 +- .../json/jsontests/json_value_tests.go | 32 +- sql/expression/function/length_test.go | 2 +- sql/expression/function/load_file_test.go | 6 +- sql/expression/function/locate_test.go | 4 +- sql/expression/function/registry.go | 3 - sql/expression/function/substring.go | 2 +- sql/expression/function/uuid_test.go | 18 +- sql/expression/get_field.go | 10 +- sql/expression/in.go | 2 +- sql/expression/interval_test.go | 2 +- sql/expression/matchagainst.go | 10 +- sql/expression/set.go | 6 +- sql/fulltext/fulltext.go | 4 +- sql/fulltext/fulltext_editor.go | 69 +- sql/go_bench_test.go | 25 + sql/in_mem_table/multimapeditors_test.go | 74 +- sql/in_mem_table/multimaptable.go | 2 +- sql/in_mem_table/multimaptable_test.go | 6 +- sql/index.go | 2 - sql/index_builder_test.go | 4 - sql/index_registry_test.go | 1 - sql/information_schema/columns_table.go | 2 +- sql/information_schema/information_schema.go | 66 +- sql/information_schema/innodb_tables.go | 2 +- sql/information_schema/routines_table.go | 4 +- sql/information_schema/schemata_table.go | 2 +- sql/information_schema/tables_table.go | 4 +- sql/information_schema/views_table.go | 2 +- sql/iters/rel_iters.go | 22 +- sql/memo/rel_props_test.go | 4 - sql/mysql_db/db_table.go | 66 +- sql/mysql_db/global_grants_table.go | 32 +- sql/mysql_db/procs_priv.go | 18 +- sql/mysql_db/replica_source_info.go | 34 +- sql/mysql_db/role_edge.go | 24 +- sql/mysql_db/tables_priv.go | 36 +- sql/mysql_db/user.go | 102 +- sql/plan/alter_event.go | 4 +- sql/plan/create_user_data.go | 8 +- sql/plan/create_view.go | 6 +- sql/plan/ddl_event.go | 8 +- sql/plan/drop_role.go | 2 +- sql/plan/drop_user.go | 2 +- sql/plan/drop_view.go | 6 +- sql/plan/flush.go | 2 +- sql/plan/foreign_key_editor.go | 42 +- sql/plan/hash_lookup.go | 2 +- sql/plan/show_charset.go | 8 +- sql/plan/show_create_procedure.go | 4 +- sql/plan/show_events.go | 2 +- sql/plan/show_privileges.go | 132 +- sql/plan/show_status.go | 2 +- sql/plan/subquery.go | 8 +- sql/plan/table_copier.go | 2 +- sql/plan/transaction_committing_iter.go | 14 + sql/plan/update_join.go | 6 +- sql/planbuilder/ddl.go | 80 +- sql/planbuilder/from.go | 4 + sql/planbuilder/priv.go | 2 +- sql/planbuilder/scope.go | 3 +- sql/planbuilder/select.go | 7 +- sql/range_test.go | 6 +- sql/row_frame.go | 2 +- sql/rowexec/agg.go | 6 +- sql/rowexec/cross_join_test.go | 40 +- sql/rowexec/ddl.go | 16 +- sql/rowexec/ddl_iters.go | 62 +- sql/rowexec/delete.go | 4 +- sql/rowexec/describe_test.go | 4 +- sql/rowexec/distinct_test.go | 32 +- sql/rowexec/dml_iters.go | 30 +- sql/rowexec/existssubquery_test.go | 6 +- sql/rowexec/filter_test.go | 20 +- sql/rowexec/fulltext_filter.go | 4 +- sql/rowexec/group_by_test.go | 67 +- sql/rowexec/having_test.go | 20 +- sql/rowexec/insert.go | 47 +- sql/rowexec/insert_test.go | 2 +- sql/rowexec/insubquery_test.go | 10 +- sql/rowexec/join_iters.go | 133 +- sql/rowexec/join_test.go | 8 +- sql/rowexec/limit_test.go | 8 +- sql/rowexec/merge_join.go | 60 +- sql/rowexec/node_builder.gen.go | 3 + sql/rowexec/other.go | 2 +- sql/rowexec/other_iters.go | 12 +- sql/rowexec/process_test.go | 2 +- sql/rowexec/project_test.go | 8 +- sql/rowexec/range_heap_iter.go | 32 +- sql/rowexec/rel.go | 34 +- sql/rowexec/rel_iters.go | 8 +- sql/rowexec/resolved_table_test.go | 22 +- sql/rowexec/show.go | 194 +- sql/rowexec/show_create_database_test.go | 8 +- sql/rowexec/show_iters.go | 4 +- sql/rowexec/show_status_test.go | 4 +- sql/rowexec/show_tables_test.go | 6 +- sql/rowexec/showcolumns_test.go | 14 +- sql/rowexec/showtablestatus_test.go | 8 +- sql/rowexec/showvariables_test.go | 16 +- sql/rowexec/showwarnings_test.go | 6 +- sql/rowexec/sort_test.go | 206 +- sql/rowexec/subquery_test.go | 18 +- sql/rowexec/tablealias_test.go | 8 +- sql/rowexec/union_test.go | 16 +- sql/rowexec/update.go | 24 +- sql/rowexec/update_test.go | 4 +- sql/rows.go | 190 +- sql/schemas.go | 4 +- sql/sqlfmt.go | 10 +- sql/statistics.go | 12 +- sql/stats/distributions.go | 4 +- sql/stats/filter.go | 36 +- sql/stats/filter_test.go | 242 +- sql/stats/iter.go | 8 +- sql/stats/join.go | 12 +- sql/stats/join_test.go | 340 +- sql/stats/statistic.go | 24 +- sql/types/conversion.go | 2 +- sql/types/ok_result.go | 6 +- sql/types/strings.go | 2 +- 258 files changed, 11735 insertions(+), 11745 deletions(-) delete mode 100644 enginetest/queries/vector_function_queries.go delete mode 100644 enginetest/queries/vector_index_queries.go rename sql/expression/{function/vector => }/distance.go (79%) rename sql/expression/{function/vector => }/distance_test.go (89%) create mode 100644 sql/go_bench_test.go diff --git a/driver/result.go b/driver/result.go index 92dddcb732..d6ba6f9b9a 100644 --- a/driver/result.go +++ b/driver/result.go @@ -33,11 +33,11 @@ func getOKResult(ctx *sql.Context, rows sql.RowIter) (types.OkResult, bool, erro return okr, found, err } - if len(row) != 1 { + if row.Len() != 1 { continue } - okr, found = row[0].(types.OkResult) + okr, found = row.GetValue(0).(types.OkResult) } err := rows.Close(ctx) diff --git a/driver/rows.go b/driver/rows.go index 17ac708e56..d5c32c72d1 100644 --- a/driver/rows.go +++ b/driver/rows.go @@ -64,17 +64,17 @@ again: if err != nil { return err } - if len(row) == 0 { + if row.Len() == 0 { return nil } - if _, ok := row[0].(types.OkResult); ok { + if _, ok := row.GetValue(0).(types.OkResult); ok { // skip OK results goto again } - for i := range row { - dest[i] = r.convert(i, row[i]) + for i := range row.Values() { + dest[i] = r.convert(i, row.GetValue(i)) } return nil } diff --git a/enginetest/engine_only_test.go b/enginetest/engine_only_test.go index e8515616de..d2a3835cd8 100644 --- a/enginetest/engine_only_test.go +++ b/enginetest/engine_only_test.go @@ -18,6 +18,7 @@ import ( "context" sql2 "database/sql" "fmt" + "github.com/dolthub/go-mysql-server/sql/variables" "io" "net" "runtime" @@ -243,6 +244,8 @@ func TestShowProcessList(t *testing.T) { addr2 := "127.0.0.1:34568" username := "foo" + variables.InitStatusVariables() + p := sqle.NewProcessList() p.AddConnection(1, addr1) p.AddConnection(2, addr2) @@ -278,7 +281,7 @@ func TestShowProcessList(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {int64(1), username, addr1, nil, "Query", int64(0), ` a (4/5 partitions) @@ -290,7 +293,7 @@ b (2/6 partitions) {int64(2), username, addr2, nil, "Query", int64(0), "\nfoo (1/2 partitions)\n", "SELECT bar"}, } - require.ElementsMatch(expected, rows) + require.ElementsMatch(expected, sql.RowsToUntyped(rows)) } func TestConcurrentProcessList(t *testing.T) { @@ -483,12 +486,12 @@ func TestRecursiveViewDefinition(t *testing.T) { } func TestShowCharset(t *testing.T) { - iterForAllImplemented := func(t *testing.T) []sql.Row { - var rows []sql.Row + iterForAllImplemented := func(t *testing.T) []sql.UntypedSqlRow { + var rows []sql.UntypedSqlRow iter := sql.NewCharacterSetsIterator() for charset, ok := iter.Next(); ok; charset, ok = iter.Next() { if charset.Encoder != nil { - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ charset.Name, charset.Description, charset.DefaultCollation.String(), @@ -501,7 +504,7 @@ func TestShowCharset(t *testing.T) { tests := []struct { Query string - RowGen func(t *testing.T) []sql.Row + RowGen func(t *testing.T) []sql.UntypedSqlRow }{ { Query: "SHOW CHARACTER SET;", @@ -513,12 +516,12 @@ func TestShowCharset(t *testing.T) { }, { Query: "SHOW CHARSET LIKE 'utf8%'", - RowGen: func(t *testing.T) []sql.Row { - var rows []sql.Row + RowGen: func(t *testing.T) []sql.UntypedSqlRow { + var rows []sql.UntypedSqlRow iter := sql.NewCharacterSetsIterator() for charset, ok := iter.Next(); ok; charset, ok = iter.Next() { if charset.Encoder != nil && strings.HasPrefix(charset.Name, "utf8") { - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ charset.Name, charset.Description, charset.DefaultCollation.String(), @@ -531,12 +534,12 @@ func TestShowCharset(t *testing.T) { }, { Query: "SHOW CHARSET WHERE Charset='binary'", - RowGen: func(t *testing.T) []sql.Row { - var rows []sql.Row + RowGen: func(t *testing.T) []sql.UntypedSqlRow { + var rows []sql.UntypedSqlRow iter := sql.NewCharacterSetsIterator() for charset, ok := iter.Next(); ok; charset, ok = iter.Next() { if charset.Encoder != nil && charset.Name == "binary" { - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ charset.Name, charset.Description, charset.DefaultCollation.String(), @@ -549,12 +552,12 @@ func TestShowCharset(t *testing.T) { }, { Query: `SHOW CHARSET WHERE Charset = 'foo'`, - RowGen: func(t *testing.T) []sql.Row { - var rows []sql.Row + RowGen: func(t *testing.T) []sql.UntypedSqlRow { + var rows []sql.UntypedSqlRow iter := sql.NewCharacterSetsIterator() for charset, ok := iter.Next(); ok; charset, ok = iter.Next() { if charset.Encoder != nil && charset.Name == "foo" { - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ charset.Name, charset.Description, charset.DefaultCollation.String(), @@ -658,8 +661,8 @@ func TestTriggerViewWarning(t *testing.T) { ctx := harness.NewContext() enginetest.CreateNewConnectionForServerEngine(ctx, e) - enginetest.TestQueryWithContext(t, ctx, e, harness, "insert into mytable values (4, 'fourth row')", []sql.Row{{types.NewOkResult(1)}}, nil, nil, nil) - enginetest.TestQueryWithContext(t, ctx, e, harness, "SHOW WARNINGS", []sql.Row{{"Warning", 0, "trigger on view is not supported; 'DROP TRIGGER view_trig' to fix"}}, nil, nil, nil) + enginetest.TestQueryWithContext(t, ctx, e, harness, "insert into mytable values (4, 'fourth row')", []sql.UntypedSqlRow{{types.NewOkResult(1)}}, nil, nil, nil) + enginetest.TestQueryWithContext(t, ctx, e, harness, "SHOW WARNINGS", []sql.UntypedSqlRow{{"Warning", 0, "trigger on view is not supported; 'DROP TRIGGER view_trig' to fix"}}, nil, nil, nil) enginetest.AssertErrWithCtx(t, e, harness, ctx, "insert into myview values (5, 'fifth row')", nil, nil, "expected insert destination to be resolved or unresolved table") } @@ -698,13 +701,13 @@ func TestCollationCoercion(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(t, err) require.Equal(t, 1, len(rows)) - require.Equal(t, 1, len(rows[0])) + require.Equal(t, 1, rows[0].Len()) if i == 0 { - num, _, err := types.Int64.Convert(rows[0][0]) + num, _, err := types.Int64.Convert(rows[0].GetValue(0)) require.NoError(t, err) require.Equal(t, test.Coercibility, num.(int64)) } else { - str, _, err := types.LongText.Convert(rows[0][0]) + str, _, err := types.LongText.Convert(rows[0].GetValue(0)) require.NoError(t, err) require.Equal(t, test.Collation.Name(), str.(string)) } @@ -756,25 +759,25 @@ func TestRegex(t *testing.T) { Assertions: []queries.ScriptTestAssertion{ { Query: "SELECT * FROM test1 WHERE v1 REGEXP 'def' ORDER BY v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abcdef"}, }, }, { Query: "SELECT * FROM test2 WHERE v1 REGEXP 'def' ORDER BY v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abcdef"}, }, }, { Query: "SELECT * FROM test3 WHERE v1 REGEXP 'def' ORDER BY v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abcDEF"}, {"abcdef"}, }, }, { Query: "SELECT * FROM test4 WHERE v1 REGEXP 'def' ORDER BY v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abcDEF"}, {"abcdef"}, }, }, @@ -907,7 +910,7 @@ func (itr *SimpleTableFunctionRowIter) Next(_ *sql.Context) (sql.Row, error) { } itr.returnedResults = true - return sql.Row{"foo", 123}, nil + return sql.UntypedSqlRow{"foo", 123}, nil } func (itr *SimpleTableFunctionRowIter) Close(_ *sql.Context) error { diff --git a/enginetest/enginetests.go b/enginetest/enginetests.go index 6dde55b703..81f6aae276 100644 --- a/enginetest/enginetests.go +++ b/enginetest/enginetests.go @@ -307,7 +307,7 @@ func TestInfoSchema(t *testing.T, h Harness) { require.NoError(t, err) p.EndQuery(ctx2) - TestQueryWithContext(t, ctx, e, h, "SELECT * FROM information_schema.processlist ORDER BY id", []sql.Row{ + TestQueryWithContext(t, ctx, e, h, "SELECT * FROM information_schema.processlist ORDER BY id", []sql.UntypedSqlRow{ {uint64(1), "root", "localhost", nil, "Query", 0, "processlist(processlist (0/? partitions))", "SELECT foo"}, {uint64(2), "root", "otherhost", "otherdb", "Sleep", 0, "", ""}, }, nil, nil, nil) @@ -492,7 +492,7 @@ func TestIndexQueryPlans(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, `CREATE TABLE otherdb.a (x int, y int)`) RunQueryWithContext(t, e, harness, ctx, `CREATE INDEX idx1 ON otherdb.a (y);`) - TestQueryWithContext(t, ctx, e, harness, "SHOW INDEXES FROM otherdb.a", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "SHOW INDEXES FROM otherdb.a", []sql.UntypedSqlRow{ {"a", 1, "idx1", 1, "y", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}, }, nil, nil, nil) @@ -666,7 +666,7 @@ func TestOrderByGroupBy(t *testing.T, harness Harness) { require.NoError(t, err) var val int64 - switch v := row[0].(type) { + switch v := row.GetValue(0).(type) { case int64: val = v case int32: @@ -675,7 +675,7 @@ func TestOrderByGroupBy(t *testing.T, harness Harness) { panic(fmt.Sprintf("unexpected type %T", v)) } - team := row[1].(string) + team := row.GetValue(1).(string) switch team { case "red": require.True(t, val == 3 || val == 4) @@ -702,7 +702,7 @@ func TestOrderByGroupBy(t *testing.T, harness Harness) { require.NoError(t, err) var val int64 - switch v := row[0].(type) { + switch v := row.GetValue(0).(type) { case int64: val = v case int32: @@ -711,7 +711,7 @@ func TestOrderByGroupBy(t *testing.T, harness Harness) { panic(fmt.Sprintf("unexpected type %T", v)) } - team := row[1].(string) + team := row.GetValue(1).(string) switch team { case "red": require.True(t, val == 3 || val == 4) @@ -806,7 +806,7 @@ func TestAmbiguousColumnResolution(t *testing.T, harness Harness) { defer e.Close() ctx := NewContext(harness) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {int64(1), "pux", "foo"}, {int64(2), "mux", "bar"}, {int64(3), "qux", "baz"}, @@ -917,7 +917,7 @@ func TestLoadData(t *testing.T, harness Harness) { require.NoError(t, setSecureFilePriv()) TestQueryWithEngine(t, harness, e, queries.QueryTest{ Query: "select @@global.secure_file_priv != '';", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }) for _, script := range queries.LoadDataScripts { @@ -932,7 +932,7 @@ func TestLoadDataErrors(t *testing.T, harness Harness) { require.NoError(t, setSecureFilePriv()) TestQueryWithEngine(t, harness, e, queries.QueryTest{ Query: "select @@global.secure_file_priv != '';", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }) for _, script := range queries.LoadDataErrorScripts { @@ -948,7 +948,7 @@ func TestLoadDataFailing(t *testing.T, harness Harness) { require.NoError(t, setSecureFilePriv()) TestQueryWithEngine(t, harness, e, queries.QueryTest{ Query: "select @@global.secure_file_priv != '';", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }) for _, script := range queries.LoadDataFailingScripts { @@ -968,7 +968,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { require.NoError(t, setSecureFilePriv()) TestQueryWithEngine(t, harness, e, queries.QueryTest{ Query: "select @@global.secure_file_priv != '';", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }) tests := []struct { @@ -1317,14 +1317,14 @@ func TestTruncate(t *testing.T, harness Harness) { t.Run("Standard TRUNCATE", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t1 (pk BIGINT PRIMARY KEY, v1 BIGINT, INDEX(v1))") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t1 VALUES (1,1), (2,2), (3,3)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(2), int64(2)}, {int64(3), int64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "TRUNCATE t1", []sql.Row{{types.NewOkResult(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(2), int64(2)}, {int64(3), int64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "TRUNCATE t1", []sql.UntypedSqlRow{{types.NewOkResult(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t1 VALUES (4,4), (5,5)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 WHERE v1 > 0 ORDER BY 1", []sql.Row{{int64(4), int64(4)}, {int64(5), int64(5)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "TRUNCATE TABLE t1", []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 WHERE v1 > 0 ORDER BY 1", []sql.UntypedSqlRow{{int64(4), int64(4)}, {int64(5), int64(5)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "TRUNCATE TABLE t1", []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t1 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) }) t.Run("Foreign Key References", func(t *testing.T) { @@ -1339,26 +1339,26 @@ func TestTruncate(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t3i (pk BIGINT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "CREATE TRIGGER trig_t3 BEFORE DELETE ON t3 FOR EACH ROW INSERT INTO t3i VALUES (old.pk, old.v1)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t3 VALUES (1,1), (3,3)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t3 ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(3), int64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "TRUNCATE t3", []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t3 ORDER BY 1", []sql.Row{}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t3i ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t3 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(3), int64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "TRUNCATE t3", []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t3 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t3i ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) }) t.Run("auto_increment column", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t4 (pk BIGINT AUTO_INCREMENT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t4(v1) VALUES (5), (6)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t4 ORDER BY 1", []sql.Row{{int64(1), int64(5)}, {int64(2), int64(6)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "TRUNCATE t4", []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t4 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t4 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(5)}, {int64(2), int64(6)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "TRUNCATE t4", []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t4 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t4(v1) VALUES (7)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t4 ORDER BY 1", []sql.Row{{int64(1), int64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t4 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(7)}}, nil, nil, nil) }) t.Run("Naked DELETE", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t5 (pk BIGINT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t5 VALUES (1,1), (2,2)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t5 ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(2), int64(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t5 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(2), int64(2)}}, nil, nil, nil) deleteStr := "DELETE FROM t5" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1379,8 +1379,8 @@ func TestTruncate(t *testing.T, harness Harness) { "Expected Truncate Node, got:\n%s", analyzed.String()) } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t5 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t5 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) }) t.Run("Naked DELETE with Foreign Key References", func(t *testing.T) { @@ -1414,8 +1414,8 @@ func TestTruncate(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TRIGGER trig_t7 BEFORE DELETE ON t7 FOR EACH ROW INSERT INTO t7i VALUES (old.pk, old.v1)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t7 VALUES (1,1), (3,3)") RunQueryWithContext(t, e, harness, ctx, "DELETE FROM t7 WHERE pk = 3") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7 ORDER BY 1", []sql.Row{{int64(1), int64(1)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7i ORDER BY 1", []sql.Row{{int64(3), int64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7i ORDER BY 1", []sql.UntypedSqlRow{{int64(3), int64(3)}}, nil, nil, nil) deleteStr := "DELETE FROM t7" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1435,15 +1435,15 @@ func TestTruncate(t *testing.T, harness Harness) { require.FailNow(t, "Incorrectly converted DELETE with triggers to TRUNCATE") } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(1)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7 ORDER BY 1", []sql.Row{}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7i ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(3), int64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(1)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t7i ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(3), int64(3)}}, nil, nil, nil) }) t.Run("Naked DELETE with auto_increment column", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t8 (pk BIGINT AUTO_INCREMENT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t8(v1) VALUES (4), (5)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t8 ORDER BY 1", []sql.Row{{int64(1), int64(4)}, {int64(2), int64(5)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t8 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(4)}, {int64(2), int64(5)}}, nil, nil, nil) deleteStr := "DELETE FROM t8" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1463,16 +1463,16 @@ func TestTruncate(t *testing.T, harness Harness) { require.FailNow(t, "Incorrectly converted DELETE with auto_increment cols to TRUNCATE") } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t8 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t8 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t8(v1) VALUES (6)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t8 ORDER BY 1", []sql.Row{{int64(3), int64(6)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t8 ORDER BY 1", []sql.UntypedSqlRow{{int64(3), int64(6)}}, nil, nil, nil) }) t.Run("DELETE with WHERE clause", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t9 (pk BIGINT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t9 VALUES (7,7), (8,8)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t9 ORDER BY 1", []sql.Row{{int64(7), int64(7)}, {int64(8), int64(8)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t9 ORDER BY 1", []sql.UntypedSqlRow{{int64(7), int64(7)}, {int64(8), int64(8)}}, nil, nil, nil) deleteStr := "DELETE FROM t9 WHERE pk > 0" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1492,14 +1492,14 @@ func TestTruncate(t *testing.T, harness Harness) { require.FailNow(t, "Incorrectly converted DELETE with WHERE clause to TRUNCATE") } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t9 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t9 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) }) t.Run("DELETE with LIMIT clause", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t10 (pk BIGINT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t10 VALUES (8,8), (9,9)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t10 ORDER BY 1", []sql.Row{{int64(8), int64(8)}, {int64(9), int64(9)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t10 ORDER BY 1", []sql.UntypedSqlRow{{int64(8), int64(8)}, {int64(9), int64(9)}}, nil, nil, nil) deleteStr := "DELETE FROM t10 LIMIT 1000" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1519,14 +1519,14 @@ func TestTruncate(t *testing.T, harness Harness) { require.FailNow(t, "Incorrectly converted DELETE with LIMIT clause to TRUNCATE") } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t10 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t10 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) }) t.Run("DELETE with ORDER BY clause", func(t *testing.T) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t11 (pk BIGINT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t11 VALUES (1,1), (9,9)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t11 ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(9), int64(9)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t11 ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(9), int64(9)}}, nil, nil, nil) deleteStr := "DELETE FROM t11 ORDER BY 1" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1546,8 +1546,8 @@ func TestTruncate(t *testing.T, harness Harness) { require.FailNow(t, "Incorrectly converted DELETE with ORDER BY clause to TRUNCATE") } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t11 ORDER BY 1", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t11 ORDER BY 1", []sql.UntypedSqlRow{}, nil, nil, nil) }) t.Run("Multi-table DELETE", func(t *testing.T) { @@ -1556,8 +1556,8 @@ func TestTruncate(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t12b (pk BIGINT PRIMARY KEY, v1 BIGINT)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t12a VALUES (1,1), (2,2)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t12b VALUES (1,1), (2,2)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12a ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(2), int64(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12b ORDER BY 1", []sql.Row{{int64(1), int64(1)}, {int64(2), int64(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12a ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(2), int64(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12b ORDER BY 1", []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(2), int64(2)}}, nil, nil, nil) deleteStr := "DELETE t12a, t12b FROM t12a INNER JOIN t12b WHERE t12a.pk=t12b.pk" parsed, qFlags, err := planbuilder.Parse(ctx, e.EngineAnalyzer().Catalog, deleteStr) @@ -1577,9 +1577,9 @@ func TestTruncate(t *testing.T, harness Harness) { require.FailNow(t, "Incorrectly converted DELETE with WHERE clause to TRUNCATE") } - TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.Row{{types.NewOkResult(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12a ORDER BY 1", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12b ORDER BY 1", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, deleteStr, []sql.UntypedSqlRow{{types.NewOkResult(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12a ORDER BY 1", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t12b ORDER BY 1", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) }) } @@ -1588,7 +1588,7 @@ func TestConvert(t *testing.T, harness Harness) { for _, tt := range queries.ConvertTests { query := fmt.Sprintf("select count(*) from typestable where %s %s %s", tt.Field, tt.Op, tt.Operand) t.Run(query, func(t *testing.T) { - TestQuery(t, harness, query, []sql.Row{{tt.ExpCnt}}, nil, nil) + TestQuery(t, harness, query, []sql.UntypedSqlRow{{tt.ExpCnt}}, nil, nil) }) } @@ -1599,7 +1599,7 @@ func TestConvertPrepared(t *testing.T, harness Harness) { for _, tt := range queries.ConvertTests { query := fmt.Sprintf("select count(*) from typestable where %s %s %s", tt.Field, tt.Op, tt.Operand) t.Run(query, func(t *testing.T) { - TestPreparedQuery(t, harness, query, []sql.Row{{tt.ExpCnt}}, nil) + TestPreparedQuery(t, harness, query, []sql.UntypedSqlRow{{tt.ExpCnt}}, nil) }) } } @@ -1922,7 +1922,7 @@ func TestUserPrivileges(t *testing.T, harness ClientHarness) { // See the comment on QuickPrivilegeTest for a more in-depth explanation, but essentially we treat // nil in script.Expected as matching "any" non-error result. if script.Expected != nil && (rows != nil || len(script.Expected) != 0) { - CheckResults(t, harness, script.Expected, nil, sch, rows, lastQuery, engine) + CheckResults(t, harness, script.Expected, nil, sch, sql.RowsToUntyped(rows), lastQuery, engine) } }) } @@ -2048,15 +2048,15 @@ func TestTriggers(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "create table mydb.a (i int primary key, j int)") RunQueryWithContext(t, e, harness, ctx, "create table mydb.b (x int primary key)") - TestQueryWithContext(t, ctx, e, harness, "CREATE TRIGGER mydb.trig BEFORE INSERT ON mydb.a FOR EACH ROW BEGIN SET NEW.j = (SELECT COALESCE(MAX(x),1) FROM mydb.b); UPDATE mydb.b SET x = x + 1; END", []sql.Row{{types.OkResult{}}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "CREATE TRIGGER mydb.trig BEFORE INSERT ON mydb.a FOR EACH ROW BEGIN SET NEW.j = (SELECT COALESCE(MAX(x),1) FROM mydb.b); UPDATE mydb.b SET x = x + 1; END", []sql.UntypedSqlRow{{types.OkResult{}}}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "insert into mydb.b values (1)") RunQueryWithContext(t, e, harness, ctx, "insert into mydb.a values (1,0), (2,0), (3,0)") - TestQueryWithContext(t, ctx, e, harness, "select * from mydb.a order by i", []sql.Row{{1, 1}, {2, 2}, {3, 3}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "select * from mydb.a order by i", []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "DROP TRIGGER mydb.trig", []sql.Row{{types.OkResult{}}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW TRIGGERS FROM mydb", []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "DROP TRIGGER mydb.trig", []sql.UntypedSqlRow{{types.OkResult{}}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SHOW TRIGGERS FROM mydb", []sql.UntypedSqlRow{}, nil, nil, nil) }) } @@ -2078,19 +2078,19 @@ func TestShowTriggers(t *testing.T, harness Harness) { var ctx *sql.Context setupTriggers := []struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow }{ - {"create table a (x int primary key)", []sql.Row{{types.NewOkResult(0)}}}, - {"create table b (y int primary key)", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a1 before insert on a for each row set new.x = New.x + 1", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a2 before insert on a for each row precedes a1 set new.x = New.x * 2", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a3 before insert on a for each row precedes a2 set new.x = New.x - 5", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a4 before insert on a for each row follows a2 set new.x = New.x * 3", []sql.Row{{types.NewOkResult(0)}}}, + {"create table a (x int primary key)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create table b (y int primary key)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a1 before insert on a for each row set new.x = New.x + 1", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a2 before insert on a for each row precedes a1 set new.x = New.x * 2", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a3 before insert on a for each row precedes a2 set new.x = New.x - 5", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a4 before insert on a for each row follows a2 set new.x = New.x * 3", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, // order of execution should be: a3, a2, a4, a1 - {"create trigger a5 after insert on a for each row update b set y = y + 1 order by y asc", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a6 after insert on a for each row precedes a5 update b set y = y * 2 order by y asc", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a7 after insert on a for each row precedes a6 update b set y = y - 5 order by y asc", []sql.Row{{types.NewOkResult(0)}}}, - {"create trigger a8 after insert on a for each row follows a6 update b set y = y * 3 order by y asc", []sql.Row{{types.NewOkResult(0)}}}, + {"create trigger a5 after insert on a for each row update b set y = y + 1 order by y asc", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a6 after insert on a for each row precedes a5 update b set y = y * 2 order by y asc", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a7 after insert on a for each row precedes a6 update b set y = y - 5 order by y asc", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, + {"create trigger a8 after insert on a for each row follows a6 update b set y = y * 3 order by y asc", []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, // order of execution should be: a7, a6, a8, a5 } for _, tt := range setupTriggers { @@ -2106,11 +2106,11 @@ func TestShowTriggers(t *testing.T, harness Harness) { // Test selecting these queries expectedResults := []struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow }{ { Query: "select * from information_schema.triggers", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "def", // trigger_catalog "mydb", // trigger_schema @@ -2366,10 +2366,10 @@ func TestStoredProcedures(t *testing.T, harness Harness) { }) } - TestQueryWithContext(t, ctx, e, harness, "CREATE PROCEDURE mydb.p1() SELECT 5", []sql.Row{{types.OkResult{}}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "CREATE PROCEDURE mydb.p2() SELECT 6", []sql.Row{{types.OkResult{}}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "CREATE PROCEDURE mydb.p1() SELECT 5", []sql.UntypedSqlRow{{types.OkResult{}}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "CREATE PROCEDURE mydb.p2() SELECT 6", []sql.UntypedSqlRow{{types.OkResult{}}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW PROCEDURE STATUS", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "SHOW PROCEDURE STATUS", []sql.UntypedSqlRow{ {"mydb", "p1", "PROCEDURE", "", time.Unix(0, 0).UTC(), time.Unix(0, 0).UTC(), "DEFINER", "", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, {"mydb", "p2", "PROCEDURE", "", time.Unix(0, 0).UTC(), time.Unix(0, 0).UTC(), @@ -2378,9 +2378,9 @@ func TestStoredProcedures(t *testing.T, harness Harness) { "DEFINER", "", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "DROP PROCEDURE mydb.p1", []sql.Row{{types.OkResult{}}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "DROP PROCEDURE mydb.p1", []sql.UntypedSqlRow{{types.OkResult{}}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW PROCEDURE STATUS", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "SHOW PROCEDURE STATUS", []sql.UntypedSqlRow{ {"mydb", "p2", "PROCEDURE", "", time.Unix(0, 0).UTC(), time.Unix(0, 0).UTC(), "DEFINER", "", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, {"mydb", "p5", "PROCEDURE", "", time.Unix(0, 0).UTC(), time.Unix(0, 0).UTC(), @@ -2436,21 +2436,21 @@ func TestViews(t *testing.T, harness Harness) { // Views with non-standard select statements RunQueryWithContext(t, e, harness, ctx, "create view unionView as (select * from myTable order by i limit 1) union all (select * from mytable order by i limit 1)") t.Run("select * from unionview order by i", func(t *testing.T) { - TestQueryWithContext(t, ctx, e, harness, "select * from unionview order by i", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "select * from unionview order by i", []sql.UntypedSqlRow{ {1, "first row"}, {1, "first row"}, }, nil, nil, nil) }) t.Run("create view with algorithm, definer, security defined", func(t *testing.T) { - TestQueryWithContext(t, ctx, e, harness, "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW newview AS SELECT * FROM myview WHERE i = 1", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM newview ORDER BY i", []sql.Row{ - sql.NewRow(int64(1), "first row"), + TestQueryWithContext(t, ctx, e, harness, "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW newview AS SELECT * FROM myview WHERE i = 1", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM newview ORDER BY i", []sql.UntypedSqlRow{ + {int64(1), "first row"}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "CREATE OR REPLACE ALGORITHM=MERGE DEFINER=doltUser SQL SECURITY INVOKER VIEW newview AS SELECT * FROM myview WHERE i = 2", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM newview ORDER BY i", []sql.Row{ - sql.NewRow(int64(2), "second row"), + TestQueryWithContext(t, ctx, e, harness, "CREATE OR REPLACE ALGORITHM=MERGE DEFINER=doltUser SQL SECURITY INVOKER VIEW newview AS SELECT * FROM myview WHERE i = 2", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM newview ORDER BY i", []sql.UntypedSqlRow{ + {int64(2), "second row"}, }, nil, nil, nil) }) @@ -2584,7 +2584,7 @@ func TestCreateTable(t *testing.T, harness Harness) { ctx.SetCurrentDatabase("") TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE mydb.t11 (a INTEGER NOT NULL PRIMARY KEY, "+ - "b VARCHAR(10) NOT NULL)", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + "b VARCHAR(10) NOT NULL)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) db, err := e.EngineAnalyzer().Catalog.Database(ctx, "mydb") require.NoError(t, err) @@ -2606,7 +2606,7 @@ func TestCreateTable(t *testing.T, harness Harness) { ctx.SetCurrentDatabase("") TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE mydb.t12 (a INTEGER NOT NULL PRIMARY KEY, "+ - "b VARCHAR(10) UNIQUE, c varchar(10) UNIQUE)", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + "b VARCHAR(10) UNIQUE, c varchar(10) UNIQUE)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) db, err := e.EngineAnalyzer().Catalog.Database(ctx, "mydb") require.NoError(t, err) @@ -2639,10 +2639,10 @@ func TestCreateTable(t *testing.T, harness Harness) { t.Run("create table with blob column with null default", func(t *testing.T) { ctx := NewContext(harness) RunQueryWithContext(t, e, harness, ctx, "USE mydb") - TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t_blob_default_null(c BLOB DEFAULT NULL)", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t_blob_default_null(c BLOB DEFAULT NULL)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t_blob_default_null VALUES ()") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t_blob_default_null", []sql.Row{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t_blob_default_null", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) }) t.Run("create table like works and can have keys removed", func(t *testing.T) { @@ -2653,12 +2653,12 @@ func TestCreateTable(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE test2 like test") RunQueryWithContext(t, e, harness, ctx, "ALTER TABLE test2 modify pk int") - TestQueryWithContext(t, ctx, e, harness, "DESCRIBE test2", []sql.Row{{"pk", "int", "NO", "PRI", nil, ""}, + TestQueryWithContext(t, ctx, e, harness, "DESCRIBE test2", []sql.UntypedSqlRow{{"pk", "int", "NO", "PRI", nil, ""}, {"val", "int", "YES", "", nil, ""}}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "ALTER TABLE test2 drop primary key") - TestQueryWithContext(t, ctx, e, harness, "DESCRIBE test2", []sql.Row{{"pk", "int", "NO", "", nil, ""}, + TestQueryWithContext(t, ctx, e, harness, "DESCRIBE test2", []sql.UntypedSqlRow{{"pk", "int", "NO", "", nil, ""}, {"val", "int", "YES", "", nil, ""}}, nil, nil, nil) }) @@ -2683,7 +2683,7 @@ func TestDropTable(t *testing.T, harness Harness) { _, ok, err := db.GetTableInsensitive(ctx, "mytable") require.True(ok) - TestQueryWithContext(t, ctx, e, harness, "DROP TABLE IF EXISTS mytable, not_exist", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "DROP TABLE IF EXISTS mytable, not_exist", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) _, ok, err = db.GetTableInsensitive(ctx, "mytable") require.NoError(err) @@ -2697,7 +2697,7 @@ func TestDropTable(t *testing.T, harness Harness) { require.NoError(err) require.True(ok) - TestQueryWithContext(t, ctx, e, harness, "DROP TABLE IF EXISTS othertable, tabletest", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "DROP TABLE IF EXISTS othertable, tabletest", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) _, ok, err = db.GetTableInsensitive(ctx, "othertable") require.NoError(err) @@ -2727,7 +2727,7 @@ func TestDropTable(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE DATABASE otherdb") otherdb, err := e.EngineAnalyzer().Catalog.Database(ctx, "otherdb") - TestQueryWithContext(t, ctx, e, harness, "DROP TABLE mydb.one_pk", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "DROP TABLE mydb.one_pk", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) _, ok, err := db.GetTableInsensitive(ctx, "mydb.one_pk") require.NoError(err) @@ -2836,12 +2836,12 @@ func TestRenameTable(t *testing.T, harness Harness) { if se, ok := e.(*ServerQueryEngine); ok { se.NewConnection(ctx) } - TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.Row{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) t.Skip("broken") - TestQueryWithContext(t, ctx, e, harness, "RENAME TABLE mydb.emptytable TO mydb.emptytable2", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "RENAME TABLE mydb.emptytable TO mydb.emptytable2", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) AssertErrWithCtx(t, e, harness, ctx, "SELECT COUNT(*) FROM mydb.emptytable", nil, sql.ErrTableNotFound) - TestQueryWithContext(t, ctx, e, harness, "SELECT COUNT(*) FROM mydb.emptytable2", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT COUNT(*) FROM mydb.emptytable2", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) AssertErrWithCtx(t, e, harness, ctx, "RENAME TABLE mydb.emptytable2 TO emptytable3", nil, sql.ErrNoDatabaseSelected) }) } @@ -2861,9 +2861,9 @@ func TestRenameColumn(t *testing.T, harness Harness) { if se, ok := e.(*ServerQueryEngine); ok { se.NewConnection(ctx) } - TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.Row{{nil}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.tabletest RENAME COLUMN s TO i1", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.tabletest", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.tabletest RENAME COLUMN s TO i1", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.tabletest", []sql.UntypedSqlRow{ {"i", "int", nil, "NO", "PRI", nil, "", "", ""}, {"i1", "varchar(20)", "utf8mb4_0900_bin", "NO", "", nil, "", "", ""}, }, nil, nil, nil) @@ -2885,9 +2885,9 @@ func TestAddColumn(t *testing.T, harness Harness) { if se, ok := e.(*ServerQueryEngine); ok { se.NewConnection(ctx) } - TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.Row{{nil}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.mytable ADD COLUMN s10 VARCHAR(26)", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.mytable", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.mytable ADD COLUMN s10 VARCHAR(26)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.mytable", []sql.UntypedSqlRow{ {"s3", "varchar(25)", "utf8mb4_0900_bin", "YES", "", "'yay'", "", "", "hello"}, {"s4", "varchar(1)", "utf8mb4_0900_bin", "NO", "", nil, "", "", ""}, {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, @@ -2916,9 +2916,9 @@ func TestModifyColumn(t *testing.T, harness Harness) { if se, ok := e.(*ServerQueryEngine); ok { se.NewConnection(ctx) } - TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.Row{{nil}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.mytable MODIFY COLUMN s VARCHAR(21) NULL COMMENT 'changed again'", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.mytable", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.mytable MODIFY COLUMN s VARCHAR(21) NULL COMMENT 'changed again'", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.mytable", []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", "ok"}, {"s", "varchar(21)", "utf8mb4_0900_bin", "YES", "", nil, "", "", "changed again"}, {"i2", "bigint", nil, "YES", "", nil, "", "", ""}, @@ -2942,9 +2942,9 @@ func TestDropColumn(t *testing.T, harness Harness) { se.NewConnection(ctx) } - TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.Row{{nil}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.tabletest DROP COLUMN s", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.tabletest", []sql.Row{{"i", "int", nil, "NO", "PRI", nil, "", "", ""}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.tabletest DROP COLUMN s", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.tabletest", []sql.UntypedSqlRow{{"i", "int", nil, "NO", "PRI", nil, "", "", ""}}, nil, nil, nil) }) } @@ -2964,9 +2964,9 @@ func TestDropColumnKeylessTables(t *testing.T, harness Harness) { se.NewConnection(ctx) } - TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.Row{{nil}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.tabletest DROP COLUMN s", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.tabletest", []sql.Row{{"i", "int", nil, "NO", "PRI", nil, "", "", ""}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "select database()", []sql.UntypedSqlRow{{nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "ALTER TABLE mydb.tabletest DROP COLUMN s", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SHOW FULL COLUMNS FROM mydb.tabletest", []sql.UntypedSqlRow{{"i", "int", nil, "NO", "PRI", nil, "", "", ""}}, nil, nil, nil) }) } @@ -2997,133 +2997,133 @@ func TestPkOrdinalsDML(t *testing.T, harness Harness) { insert string mutate string sel string - exp []sql.Row + exp []sql.UntypedSqlRow }{ { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,0,0,0), (1,1,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE x = 0", sel: "select * from a", - exp: []sql.Row{{1, 1, 1, 1}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{1, 1, 1, 1}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x,w))", insert: "INSERT INTO a values (0,0,0,0), (1,1,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE x = 0 and z = 0", sel: "select * from a", - exp: []sql.Row{{1, 1, 1, 1}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{1, 1, 1, 1}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y = 2", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y in (2)", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y not in (NULL)", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y IS NOT NULL", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y IS NULL", sel: "select * from a", - exp: []sql.Row{{2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y = NULL", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y = NULL or y in (2,4)", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y IS NULL or y in (2,4)", sel: "select * from a", - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y IS NULL AND z != 0", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y != NULL", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x,w))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE x in (0,2) and z in (0,4)", sel: "select * from a", - exp: []sql.Row{{1, nil, 1, 1}, {2, 2, 2, 2}}, + exp: []sql.UntypedSqlRow{{1, nil, 1, 1}, {2, 2, 2, 2}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y in (2,-1)", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y < 3", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y > 0 and z = 2", sel: "select * from a", - exp: []sql.Row{{0, nil, 0, 0}, {1, nil, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, nil, 0, 0}, {1, nil, 1, 1}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, primary key (z,x))", insert: "INSERT INTO a values (0,NULL,0,0), (1,NULL,1,1), (2,2,2,2)", mutate: "DELETE FROM a WHERE y = 2", sel: "select y from a", - exp: []sql.Row{{nil}, {nil}}, + exp: []sql.UntypedSqlRow{{nil}, {nil}}, }, { create: "CREATE TABLE a (x int, y int, z int, w int, index idx1 (y))", insert: "INSERT INTO a values (0,0,0,0), (1,1,1,1), (2,2,2,2)", mutate: "", sel: "select * from a where y = 3", - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, } @@ -3267,14 +3267,14 @@ func TestWindowFunctions(t *testing.T, harness Harness) { ctx := NewContext(harness) RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE empty_tbl (a int, b int)") - TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (order by b) FROM empty_tbl order by a`, []sql.Row{}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (order by b) FROM empty_tbl order by a`, []sql.Row{}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (order by b) FROM empty_tbl order by a`, []sql.Row{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (order by b) FROM empty_tbl order by a`, []sql.UntypedSqlRow{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (order by b) FROM empty_tbl order by a`, []sql.UntypedSqlRow{}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (order by b) FROM empty_tbl order by a`, []sql.UntypedSqlRow{}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE results (name varchar(20), subject varchar(20), mark int)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO results VALUES ('Pratibha', 'Maths', 100),('Ankita','Science',80),('Swarna','English',100),('Ankita','Maths',65),('Pratibha','Science',80),('Swarna','Science',50),('Pratibha','English',70),('Swarna','Maths',85),('Ankita','English',90)") - TestQueryWithContext(t, ctx, e, harness, `SELECT subject, name, mark, rank() OVER (partition by subject order by mark desc ) FROM results order by subject, mark desc, name`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT subject, name, mark, rank() OVER (partition by subject order by mark desc ) FROM results order by subject, mark desc, name`, []sql.UntypedSqlRow{ {"English", "Swarna", 100, uint64(1)}, {"English", "Ankita", 90, uint64(2)}, {"English", "Pratibha", 70, uint64(3)}, @@ -3286,7 +3286,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {"Science", "Swarna", 50, uint64(3)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT subject, name, mark, dense_rank() OVER (partition by subject order by mark desc ) FROM results order by subject, mark desc, name`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT subject, name, mark, dense_rank() OVER (partition by subject order by mark desc ) FROM results order by subject, mark desc, name`, []sql.UntypedSqlRow{ {"English", "Swarna", 100, uint64(1)}, {"English", "Ankita", 90, uint64(2)}, {"English", "Pratibha", 70, uint64(3)}, @@ -3298,7 +3298,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {"Science", "Swarna", 50, uint64(2)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT subject, name, mark, percent_rank() OVER (partition by subject order by mark desc ) FROM results order by subject, mark desc, name`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT subject, name, mark, percent_rank() OVER (partition by subject order by mark desc ) FROM results order by subject, mark desc, name`, []sql.UntypedSqlRow{ {"English", "Swarna", 100, float64(0)}, {"English", "Ankita", 90, float64(0.5)}, {"English", "Pratibha", 70, float64(1)}, @@ -3313,7 +3313,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t1 (a INTEGER PRIMARY KEY, b INTEGER, c integer)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t1 VALUES (0,0,0), (1,1,1), (2,2,0), (3,0,0), (4,1,0), (5,3,0)") - TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0.0}, {1, 0.4}, {2, 0.8}, @@ -3322,7 +3322,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 1.0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(3)}, {2, uint64(5)}, @@ -3331,7 +3331,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(6)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(2)}, {2, uint64(3)}, @@ -3340,7 +3340,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(4)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (order by b desc) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (order by b desc) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0.8}, {1, 0.4}, {2, 0.2}, @@ -3349,7 +3349,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 0.0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (order by b desc) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (order by b desc) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(5)}, {1, uint64(3)}, {2, uint64(2)}, @@ -3358,7 +3358,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(1)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (order by b desc) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (order by b desc) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(4)}, {1, uint64(3)}, {2, uint64(2)}, @@ -3367,7 +3367,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(1)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (partition by c order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (partition by c order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0.0}, {1, 0.0}, {2, 0.75}, @@ -3376,7 +3376,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 1.0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (partition by c order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (partition by c order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(1)}, {2, uint64(4)}, @@ -3385,7 +3385,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(5)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (partition by c order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (partition by c order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(1)}, {2, uint64(3)}, @@ -3394,7 +3394,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(4)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (partition by b order by c) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (partition by b order by c) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0.0}, {1, 1.0}, {2, 0.0}, @@ -3403,7 +3403,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 0.0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (partition by b order by c) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (partition by b order by c) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(2)}, {2, uint64(1)}, @@ -3412,7 +3412,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(1)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (partition by b order by c) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (partition by b order by c) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(2)}, {2, uint64(1)}, @@ -3422,7 +3422,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { }, nil, nil, nil) // no order by clause -> all rows are peers - TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (partition by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, percent_rank() over (partition by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0.0}, {1, 0.0}, {2, 0.0}, @@ -3432,7 +3432,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { }, nil, nil, nil) // no order by clause -> all rows are peers - TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (partition by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, rank() over (partition by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(1)}, {2, uint64(1)}, @@ -3442,7 +3442,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { }, nil, nil, nil) // no order by clause -> all rows are peers - TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (partition by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, dense_rank() over (partition by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, uint64(1)}, {1, uint64(1)}, {2, uint64(1)}, @@ -3451,7 +3451,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, uint64(1)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(b) over (partition by c order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(b) over (partition by c order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 0}, @@ -3460,7 +3460,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(a) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(a) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -3469,7 +3469,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 5}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(a-1) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(a-1) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, -1}, {1, 0}, {2, 1}, @@ -3478,7 +3478,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(c) over (partition by b order by a) FROM t1 order by a*b,a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, first_value(c) over (partition by b order by a) FROM t1 order by a*b,a`, []sql.UntypedSqlRow{ {0, 0}, {3, 0}, {1, 1}, @@ -3487,7 +3487,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 2}, {1, nil}, {2, 3}, @@ -3496,7 +3496,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, nil}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 2}, {1, nil}, {2, 3}, @@ -3505,7 +3505,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, nil}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a+2) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a+2) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 4}, {1, nil}, {2, 5}, @@ -3514,7 +3514,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, nil}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 1, a-1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 1, a-1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {2, 3}, @@ -3523,7 +3523,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 0) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 0) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -3532,7 +3532,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 5}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 1, -1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 1, -1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 2}, {1, -1}, {2, 3}, @@ -3541,7 +3541,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, -1}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 3, -1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead(a, 3, -1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 4}, {1, -1}, {2, 5}, @@ -3550,7 +3550,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, -1}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead('s') over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lead('s') over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, "s"}, {1, nil}, {2, "s"}, @@ -3559,7 +3559,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, nil}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(b) over (partition by c order by b) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(b) over (partition by c order by b) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -3568,7 +3568,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 3}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(a) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(a) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -3577,7 +3577,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 5}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(a-1) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(a-1) over (partition by b order by a ASC, c ASC) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, -1}, {1, 0}, {2, 1}, @@ -3586,7 +3586,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(c) over (partition by b order by c) FROM t1 order by a*b,a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, last_value(c) over (partition by b order by c) FROM t1 order by a*b,a`, []sql.UntypedSqlRow{ {0, 0}, {3, 0}, {1, 1}, @@ -3595,7 +3595,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 0}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, nil}, {1, nil}, {2, 0}, @@ -3604,7 +3604,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, nil}, {1, nil}, {2, 0}, @@ -3613,7 +3613,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a+2) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a+2) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, nil}, {1, nil}, {2, 2}, @@ -3622,7 +3622,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 6}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 1, a-1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 1, a-1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, -1}, {1, 0}, {2, 0}, @@ -3631,7 +3631,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 0) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 0) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -3640,7 +3640,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 5}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 1, -1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 1, -1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, -1}, {1, -1}, {2, 0}, @@ -3649,7 +3649,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 4}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 3, -1) over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag(a, 3, -1) over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, -1}, {1, -1}, {2, -1}, @@ -3658,7 +3658,7 @@ func TestWindowFunctions(t *testing.T, harness Harness) { {5, 2}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag('s') over (partition by c order by a) FROM t1 order by a`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, lag('s') over (partition by c order by a) FROM t1 order by a`, []sql.UntypedSqlRow{ {0, nil}, {1, nil}, {2, "s"}, @@ -3672,37 +3672,37 @@ func TestWindowFunctions(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t2 (a int, b int, c int)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t2 VALUES (1,1,1), (3,2,2), (7,4,5)") - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_and(a), bit_or(b), bit_xor(c) FROM t2`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_and(a), bit_or(b), bit_xor(c) FROM t2`, []sql.UntypedSqlRow{ {uint64(1), uint64(7), uint64(6)}, }, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t3 (x varchar(100))") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t3 VALUES ('these'), ('are'), ('strings')") - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_and(x) from t3`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_and(x) from t3`, []sql.UntypedSqlRow{ {uint64(0)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_or(x) from t3`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_or(x) from t3`, []sql.UntypedSqlRow{ {uint64(0)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_xor(x) from t3`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_xor(x) from t3`, []sql.UntypedSqlRow{ {uint64(0)}, }, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t4 (x int)") - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_and(x) from t4`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_and(x) from t4`, []sql.UntypedSqlRow{ {^uint64(0)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_or(x) from t4`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_or(x) from t4`, []sql.UntypedSqlRow{ {uint64(0)}, }, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT bit_xor(x) from t4`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT bit_xor(x) from t4`, []sql.UntypedSqlRow{ {uint64(0)}, }, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE t5 (a INTEGER, b INTEGER)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t5 VALUES (0,0), (0,1), (1,0), (1,1)") - TestQueryWithContext(t, ctx, e, harness, `SELECT a, b, row_number() over (partition by a, b) FROM t5 order by a, b`, []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, `SELECT a, b, row_number() over (partition by a, b) FROM t5 order by a, b`, []sql.UntypedSqlRow{ {0, 0, 1}, {0, 1, 1}, {1, 0, 1}, @@ -3718,18 +3718,18 @@ func TestWindowRowFrames(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE a (x INTEGER PRIMARY KEY, y INTEGER, z INTEGER)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO a VALUES (0,0,0), (1,1,0), (2,2,0), (3,0,0), (4,1,0), (5,3,0)") - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows unbounded preceding) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows 2 preceding) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and 1 following) FROM a order by x`, []sql.Row{{float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 1 preceding and current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and 2 following) FROM a order by x`, []sql.Row{{float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and unbounded following) FROM a order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 1 preceding and 1 following) FROM a order by x`, []sql.Row{{float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 1 preceding and unbounded following) FROM a order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between unbounded preceding and unbounded following) FROM a order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 2 preceding and 1 preceding) FROM a order by x`, []sql.Row{{nil}, {float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows unbounded preceding) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows 2 preceding) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and 1 following) FROM a order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 1 preceding and current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and 2 following) FROM a order by x`, []sql.UntypedSqlRow{{float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between current row and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 1 preceding and 1 following) FROM a order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 1 preceding and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between unbounded preceding and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x rows between 2 preceding and 1 preceding) FROM a order by x`, []sql.UntypedSqlRow{{nil}, {float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}}, nil, nil, nil) } func TestWindowRangeFrames(t *testing.T, harness Harness) { @@ -3740,46 +3740,46 @@ func TestWindowRangeFrames(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE a (x INTEGER PRIMARY KEY, y INTEGER, z INTEGER)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO a VALUES (0,0,0), (1,1,0), (2,2,0), (3,0,0), (4,1,0), (5,3,0)") - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range unbounded preceding) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range 2 preceding) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and 1 following) FROM a order by x`, []sql.Row{{float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 1 preceding and current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and 2 following) FROM a order by x`, []sql.Row{{float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and unbounded following) FROM a order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 1 preceding and 1 following) FROM a order by x`, []sql.Row{{float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 1 preceding and unbounded following) FROM a order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between unbounded preceding and unbounded following) FROM a order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 2 preceding and 1 preceding) FROM a order by x`, []sql.Row{{nil}, {float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range unbounded preceding) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range 2 preceding) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and 1 following) FROM a order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 1 preceding and current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and 2 following) FROM a order by x`, []sql.UntypedSqlRow{{float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between current row and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 1 preceding and 1 following) FROM a order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 1 preceding and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(7)}, {float64(6)}, {float64(4)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between unbounded preceding and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by x range between 2 preceding and 1 preceding) FROM a order by x`, []sql.UntypedSqlRow{{nil}, {float64(0)}, {float64(1)}, {float64(3)}, {float64(2)}, {float64(1)}}, nil, nil, nil) // range framing without an order by clause - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between unbounded preceding and unbounded following) FROM a order by x`, []sql.Row{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between unbounded preceding and current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between current row and unbounded following) FROM a order by x`, []sql.Row{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between current row and current row) FROM a order by x`, []sql.Row{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between unbounded preceding and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between unbounded preceding and current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between current row and unbounded following) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by y range between current row and current row) FROM a order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(2)}, {float64(2)}, {float64(0)}, {float64(2)}, {float64(3)}}, nil, nil, nil) // fixed frame size, 3 days RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE b (x INTEGER PRIMARY KEY, y INTEGER, z INTEGER, date DATE)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO b VALUES (0,0,0,'2022-01-26'), (1,0,0,'2022-01-27'), (2,0,0, '2022-01-28'), (3,1,0,'2022-01-29'), (4,1,0,'2022-01-30'), (5,3,0,'2022-01-31')") - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 2 DAY preceding and interval 1 DAY preceding) FROM b order by x`, []sql.Row{{nil}, {float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY preceding and interval 1 DAY following) FROM b order by x`, []sql.Row{{float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(5)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY following and interval 2 DAY following) FROM b order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(2)}, {float64(4)}, {float64(3)}, {nil}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range interval 1 DAY preceding) FROM b order by x`, []sql.Row{{float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY preceding and current row) FROM b order by x`, []sql.Row{{float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY preceding and unbounded following) FROM b order by x`, []sql.Row{{float64(5)}, {float64(5)}, {float64(5)}, {float64(5)}, {float64(5)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between unbounded preceding and interval 1 DAY following) FROM b order by x`, []sql.Row{{float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(5)}, {float64(5)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 2 DAY preceding and interval 1 DAY preceding) FROM b order by x`, []sql.UntypedSqlRow{{nil}, {float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY preceding and interval 1 DAY following) FROM b order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(5)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY following and interval 2 DAY following) FROM b order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(2)}, {float64(4)}, {float64(3)}, {nil}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range interval 1 DAY preceding) FROM b order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY preceding and current row) FROM b order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval 1 DAY preceding and unbounded following) FROM b order by x`, []sql.UntypedSqlRow{{float64(5)}, {float64(5)}, {float64(5)}, {float64(5)}, {float64(5)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between unbounded preceding and interval 1 DAY following) FROM b order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(0)}, {float64(1)}, {float64(2)}, {float64(5)}, {float64(5)}}, nil, nil, nil) // variable range size, 1 or many days RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE c (x INTEGER PRIMARY KEY, y INTEGER, z INTEGER, date DATE)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO c VALUES (0,0,0,'2022-01-26'), (1,0,0,'2022-01-26'), (2,0,0, '2022-01-26'), (3,1,0,'2022-01-27'), (4,1,0,'2022-01-29'), (5,3,0,'2022-01-30'), (6,0,0, '2022-02-03'), (7,1,0,'2022-02-03'), (8,1,0,'2022-02-04'), (9,3,0,'2022-02-04')") - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval '2' DAY preceding and interval '1' DAY preceding) FROM c order by x`, []sql.Row{{nil}, {nil}, {nil}, {float64(0)}, {float64(1)}, {float64(1)}, {nil}, {nil}, {float64(1)}, {float64(1)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval '1' DAY preceding and interval '1' DAY following) FROM c order by x`, []sql.Row{{float64(1)}, {float64(1)}, {float64(1)}, {float64(1)}, {float64(4)}, {float64(4)}, {float64(5)}, {float64(5)}, {float64(5)}, {float64(5)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval '1' DAY preceding and current row) FROM c order by x`, []sql.Row{{float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(1)}, {float64(4)}, {float64(1)}, {float64(1)}, {float64(5)}, {float64(5)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT avg(y) over (partition by z order by date range between interval '1' DAY preceding and unbounded following) FROM c order by x`, []sql.Row{{float64(1)}, {float64(1)}, {float64(1)}, {float64(1)}, {float64(3) / float64(2)}, {float64(3) / float64(2)}, {float64(5) / float64(4)}, {float64(5) / float64(4)}, {float64(5) / float64(4)}, {float64(5) / float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between unbounded preceding and interval '1' DAY following) FROM c order by x`, []sql.Row{{float64(1)}, {float64(1)}, {float64(1)}, {float64(1)}, {float64(5)}, {float64(5)}, {float64(10)}, {float64(10)}, {float64(10)}, {float64(10)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT count(y) over (partition by z order by date range between interval '1' DAY following and interval '2' DAY following) FROM c order by x`, []sql.Row{{1}, {1}, {1}, {1}, {1}, {0}, {2}, {2}, {0}, {0}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT count(y) over (partition by z order by date range between interval '1' DAY preceding and interval '2' DAY following) FROM c order by x`, []sql.Row{{4}, {4}, {4}, {5}, {2}, {2}, {4}, {4}, {4}, {4}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval '2' DAY preceding and interval '1' DAY preceding) FROM c order by x`, []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {float64(0)}, {float64(1)}, {float64(1)}, {nil}, {nil}, {float64(1)}, {float64(1)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval '1' DAY preceding and interval '1' DAY following) FROM c order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(1)}, {float64(1)}, {float64(1)}, {float64(4)}, {float64(4)}, {float64(5)}, {float64(5)}, {float64(5)}, {float64(5)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between interval '1' DAY preceding and current row) FROM c order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(0)}, {float64(0)}, {float64(1)}, {float64(1)}, {float64(4)}, {float64(1)}, {float64(1)}, {float64(5)}, {float64(5)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT avg(y) over (partition by z order by date range between interval '1' DAY preceding and unbounded following) FROM c order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(1)}, {float64(1)}, {float64(1)}, {float64(3) / float64(2)}, {float64(3) / float64(2)}, {float64(5) / float64(4)}, {float64(5) / float64(4)}, {float64(5) / float64(4)}, {float64(5) / float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (partition by z order by date range between unbounded preceding and interval '1' DAY following) FROM c order by x`, []sql.UntypedSqlRow{{float64(1)}, {float64(1)}, {float64(1)}, {float64(1)}, {float64(5)}, {float64(5)}, {float64(10)}, {float64(10)}, {float64(10)}, {float64(10)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT count(y) over (partition by z order by date range between interval '1' DAY following and interval '2' DAY following) FROM c order by x`, []sql.UntypedSqlRow{{1}, {1}, {1}, {1}, {1}, {0}, {2}, {2}, {0}, {0}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT count(y) over (partition by z order by date range between interval '1' DAY preceding and interval '2' DAY following) FROM c order by x`, []sql.UntypedSqlRow{{4}, {4}, {4}, {5}, {2}, {2}, {4}, {4}, {4}, {4}}, nil, nil, nil) AssertErr(t, e, harness, "SELECT sum(y) over (partition by z range between unbounded preceding and interval '1' DAY following) FROM c order by x", nil, aggregation.ErrRangeInvalidOrderBy) AssertErr(t, e, harness, "SELECT sum(y) over (partition by z order by date range interval 'e' DAY preceding) FROM c order by x", nil, sql.ErrInvalidValue) @@ -3794,12 +3794,12 @@ func TestNamedWindows(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, ctx, "CREATE TABLE a (x INTEGER PRIMARY KEY, y INTEGER, z INTEGER)") RunQueryWithContext(t, e, harness, ctx, "INSERT INTO a VALUES (0,0,0), (1,1,0), (2,2,0), (3,0,0), (4,1,0), (5,3,0)") - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (w1) FROM a WINDOW w1 as (order by z) order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (w1) FROM a WINDOW w1 as (partition by z) order by x`, []sql.Row{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over w FROM a WINDOW w as (partition by z order by x rows unbounded preceding) order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(7)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over w FROM a WINDOW w as (partition by z order by x rows current row) order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (w) FROM a WINDOW w as (partition by z order by x rows 2 preceding) order by x`, []sql.Row{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}}, nil, nil, nil) - TestQueryWithContext(t, ctx, e, harness, `SELECT row_number() over (w3) FROM a WINDOW w3 as (w2), w2 as (w1), w1 as (partition by z order by x) order by x`, []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}, {int64(4)}, {int64(5)}, {int64(6)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (w1) FROM a WINDOW w1 as (order by z) order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (w1) FROM a WINDOW w1 as (partition by z) order by x`, []sql.UntypedSqlRow{{float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over w FROM a WINDOW w as (partition by z order by x rows unbounded preceding) order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(4)}, {float64(7)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over w FROM a WINDOW w as (partition by z order by x rows current row) order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(2)}, {float64(0)}, {float64(1)}, {float64(3)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT sum(y) over (w) FROM a WINDOW w as (partition by z order by x rows 2 preceding) order by x`, []sql.UntypedSqlRow{{float64(0)}, {float64(1)}, {float64(3)}, {float64(3)}, {float64(3)}, {float64(4)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, `SELECT row_number() over (w3) FROM a WINDOW w3 as (w2), w2 as (w1), w1 as (partition by z order by x) order by x`, []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}, {int64(4)}, {int64(5)}, {int64(6)}}, nil, nil, nil) // errors AssertErr(t, e, harness, "SELECT sum(y) over (w1 partition by x) FROM a WINDOW w1 as (partition by z) order by x", nil, sql.ErrInvalidWindowInheritance) @@ -3823,7 +3823,7 @@ func TestNaturalJoin(t *testing.T, harness Harness) { e := mustNewEngine(t, harness) defer e.Close() - TestQuery(t, harness, `SELECT * FROM t1 NATURAL JOIN t2`, []sql.Row{ + TestQuery(t, harness, `SELECT * FROM t1 NATURAL JOIN t2`, []sql.UntypedSqlRow{ {"a_1", "b_1", "c_1", "d_1"}, {"a_2", "b_2", "c_2", "d_2"}, {"a_3", "b_3", "c_3", "d_3"}, @@ -3841,7 +3841,7 @@ func TestNaturalJoinEqual(t *testing.T, harness Harness) { }}) e := mustNewEngine(t, harness) defer e.Close() - TestQuery(t, harness, `SELECT * FROM t1 NATURAL JOIN t2`, []sql.Row{ + TestQuery(t, harness, `SELECT * FROM t1 NATURAL JOIN t2`, []sql.UntypedSqlRow{ {"a_1", "b_1", "c_1"}, {"a_2", "b_2", "c_2"}, {"a_3", "b_3", "c_3"}, @@ -3859,7 +3859,7 @@ func TestNaturalJoinDisjoint(t *testing.T, harness Harness) { }}) e := mustNewEngine(t, harness) defer e.Close() - TestQuery(t, harness, `SELECT * FROM t1 NATURAL JOIN t2`, []sql.Row{ + TestQuery(t, harness, `SELECT * FROM t1 NATURAL JOIN t2`, []sql.UntypedSqlRow{ {"a1", "b1"}, {"a1", "b2"}, {"a1", "b3"}, @@ -3886,7 +3886,7 @@ func TestInnerNestedInNaturalJoins(t *testing.T, harness Harness) { e := mustNewEngine(t, harness) defer e.Close() - TestQuery(t, harness, `SELECT table1.i, t, i2, t2, t3 FROM table1 INNER JOIN table2 ON table1.i = table2.i2 NATURAL JOIN table3`, []sql.Row{ + TestQuery(t, harness, `SELECT table1.i, t, i2, t2, t3 FROM table1 INNER JOIN table2 ON table1.i = table2.i2 NATURAL JOIN table3`, []sql.UntypedSqlRow{ {int32(1), "table1", int32(1), "table2", "table3"}, {int32(1), "table1", int32(1), "table2", "table3"}, }, nil, nil) @@ -3911,61 +3911,61 @@ func TestVariables(t *testing.T, harness Harness) { for _, assertion := range []queries.ScriptTestAssertion{ { Query: "SELECT @@binlog_row_metadata", - Expected: []sql.Row{{"MINIMAL"}}, + Expected: []sql.UntypedSqlRow{{"MINIMAL"}}, }, { Query: "SELECT @@binlog_row_image", - Expected: []sql.Row{{"FULL"}}, + Expected: []sql.UntypedSqlRow{{"FULL"}}, }, { Query: "SELECT @@binlog_expire_logs_seconds", - Expected: []sql.Row{{2592000}}, + Expected: []sql.UntypedSqlRow{{2592000}}, }, { Query: "SELECT @@select_into_buffer_size", - Expected: []sql.Row{{131072}}, + Expected: []sql.UntypedSqlRow{{131072}}, }, { Query: "SELECT @@GLOBAL.select_into_buffer_size", - Expected: []sql.Row{{131072}}, + Expected: []sql.UntypedSqlRow{{131072}}, }, { Query: "SET GLOBAL select_into_buffer_size = 9001", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT @@SESSION.select_into_buffer_size", - Expected: []sql.Row{{131072}}, + Expected: []sql.UntypedSqlRow{{131072}}, }, { Query: "SELECT @@GLOBAL.select_into_buffer_size", - Expected: []sql.Row{{9001}}, + Expected: []sql.UntypedSqlRow{{9001}}, }, { Query: "SET @@GLOBAL.select_into_buffer_size = 9002", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT @@GLOBAL.select_into_buffer_size", - Expected: []sql.Row{{9002}}, + Expected: []sql.UntypedSqlRow{{9002}}, }, { // For boolean types, OFF/ON is converted Query: "SET @@GLOBAL.activate_all_roles_on_login = 'ON'", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT @@GLOBAL.activate_all_roles_on_login", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // For non-boolean types, OFF/ON is not converted Query: "SET @@GLOBAL.delay_key_write = 'OFF'", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT @@GLOBAL.delay_key_write", - Expected: []sql.Row{{"OFF"}}, + Expected: []sql.UntypedSqlRow{{"OFF"}}, }, } { t.Run(assertion.Query, func(t *testing.T) { @@ -3979,15 +3979,15 @@ func TestVariables(t *testing.T, harness Harness) { for _, assertion := range []queries.ScriptTestAssertion{ { Query: "SELECT @@select_into_buffer_size", - Expected: []sql.Row{{9002}}, + Expected: []sql.UntypedSqlRow{{9002}}, }, { Query: "SELECT @@GLOBAL.select_into_buffer_size", - Expected: []sql.Row{{9002}}, + Expected: []sql.UntypedSqlRow{{9002}}, }, { Query: "SET GLOBAL select_into_buffer_size = 131072", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, } { t.Run(assertion.Query, func(t *testing.T) { @@ -4015,7 +4015,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v1": mustBuildBindVariable(1), "v2": mustBuildBindVariable(1), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -4034,7 +4034,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v2": mustBuildBindVariable([]byte("10.5")), "v3": mustBuildBindVariable(20.40), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, InsertID: 1}}, }, }, @@ -4067,7 +4067,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v5": mustBuildBindVariable("milo"), "v6": mustBuildBindVariable("on"), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -4081,13 +4081,13 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v5": mustBuildBindVariable("milo"), "v6": mustBuildBindVariable("on"), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from nodes", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"id1", "milo", "on", 1}, {"id2", "dabe", "off", 3}, }, @@ -4119,7 +4119,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v3": mustBuildBindVariable("on"), "v4": mustBuildBindVariable(2), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -4131,13 +4131,13 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v3": mustBuildBindVariable("off"), "v4": mustBuildBindVariable(3), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from nodes", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"id1", "milo", "on", 1}, {"id2", "dabe", "off", 3}, }, @@ -4170,7 +4170,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v3": mustBuildBindVariable("dabe"), "v4": mustBuildBindVariable("id1"), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -4182,13 +4182,13 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v3": mustBuildBindVariable("dabe"), "v4": mustBuildBindVariable("id2"), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from nodes", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"id1", "dabe", "off", "green", 1}, {"id2", "dabe", nil, "blue", 3}, }, @@ -4222,7 +4222,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v4": mustBuildBindVariable("green"), "v5": mustBuildBindVariable(2), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -4235,13 +4235,13 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v4": mustBuildBindVariable("blue"), "v5": mustBuildBindVariable(3), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from nodes", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"id1", "dabe", "on", "green", 1}, {"id2", "dabe", "off", "blue", 3}, }, @@ -4276,7 +4276,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v4": mustBuildBindVariable("dabe"), "v5": mustBuildBindVariable("id1"), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -4289,13 +4289,13 @@ func TestPreparedInsert(t *testing.T, harness Harness) { "v4": mustBuildBindVariable("dabe"), "v5": mustBuildBindVariable("id2"), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from nodes", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"id1", "dabe", "off", "green", "medium", 1}, {"id2", "dabe", nil, "blue", "small", 3}, }, @@ -4328,7 +4328,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable([]byte{0x99, 0x98, 0x97}), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -4337,7 +4337,7 @@ func TestPreparedInsert(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(string([]byte{0x99, 0x98, 0x97})), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -4414,7 +4414,7 @@ func TestWarnings(t *testing.T, harness Harness) { Query: ` SHOW WARNINGS `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Note", 1051, "Unknown table 'table3'"}, {"Note", 1051, "Unknown table 'table2'"}, {"Note", 1051, "Unknown table 'table1'"}, @@ -4424,7 +4424,7 @@ func TestWarnings(t *testing.T, harness Harness) { Query: ` SHOW WARNINGS LIMIT 1 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Note", 1051, "Unknown table 'table3'"}, }, }, @@ -4432,7 +4432,7 @@ func TestWarnings(t *testing.T, harness Harness) { Query: ` SHOW WARNINGS LIMIT 1,2 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Note", 1051, "Unknown table 'table2'"}, {"Note", 1051, "Unknown table 'table1'"}, }, @@ -4447,7 +4447,7 @@ func TestWarnings(t *testing.T, harness Harness) { Query: ` SHOW WARNINGS LIMIT 2,1 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Note", 1051, "Unknown table 'table1'"}, }, }, @@ -4455,7 +4455,7 @@ func TestWarnings(t *testing.T, harness Harness) { Query: ` SHOW WARNINGS LIMIT 10 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Note", 1051, "Unknown table 'table3'"}, {"Note", 1051, "Unknown table 'table2'"}, {"Note", 1051, "Unknown table 'table1'"}, @@ -4541,7 +4541,7 @@ func TestUse(t *testing.T, harness Harness) { Assertions: []queries.ScriptTestAssertion{ { Query: "SELECT DATABASE();", - Expected: []sql.Row{{"mydb"}}, + Expected: []sql.UntypedSqlRow{{"mydb"}}, }, { Query: "USE bar;", @@ -4549,23 +4549,23 @@ func TestUse(t *testing.T, harness Harness) { }, { Query: "SELECT DATABASE();", - Expected: []sql.Row{{"mydb"}}, + Expected: []sql.UntypedSqlRow{{"mydb"}}, }, { Query: "USE foo;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DATABASE();", - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Query: "USE MYDB;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DATABASE();", - Expected: []sql.Row{{"mydb"}}, + Expected: []sql.UntypedSqlRow{{"mydb"}}, }, }, } @@ -4709,43 +4709,43 @@ func TestSessionSelectLimit(t *testing.T, harness Harness) { q := []queries.QueryTest{ { Query: "SELECT i FROM mytable ORDER BY i", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "SELECT i FROM (SELECT i FROM mytable ORDER BY i LIMIT 3) t", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "SELECT i FROM (SELECT i FROM mytable ORDER BY i DESC) t ORDER BY i LIMIT 3", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "SELECT i FROM (SELECT i FROM mytable ORDER BY i DESC) t ORDER BY i LIMIT 3", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select count(*), y from a group by y;", - Expected: []sql.Row{{2, 1}, {3, 2}}, + Expected: []sql.UntypedSqlRow{{2, 1}, {3, 2}}, }, { Query: "select count(*), y from (select y from a) b group by y;", - Expected: []sql.Row{{2, 1}, {3, 2}}, + Expected: []sql.UntypedSqlRow{{2, 1}, {3, 2}}, }, { Query: "select count(*), y from (select y from a) b group by y;", - Expected: []sql.Row{{2, 1}, {3, 2}}, + Expected: []sql.UntypedSqlRow{{2, 1}, {3, 2}}, }, { Query: "with b as (select y from a order by x) select * from b", - Expected: []sql.Row{{1}, {1}}, + Expected: []sql.UntypedSqlRow{{1}, {1}}, }, { Query: "select x, row_number() over (partition by y) from a order by x;", - Expected: []sql.Row{{0, 1}, {1, 2}}, + Expected: []sql.UntypedSqlRow{{0, 1}, {1, 2}}, }, { Query: "select y from a where x < 1 union select y from a where x > 1", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, } @@ -4834,31 +4834,31 @@ func TestCurrentTimestamp(t *testing.T, harness Harness) { testCases := []queries.QueryTest{ { Query: `SELECT CURRENT_TIMESTAMP(0)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 0, time.UTC)}}, }, { Query: `SELECT CURRENT_TIMESTAMP(1)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 900000000, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 900000000, time.UTC)}}, }, { Query: `SELECT CURRENT_TIMESTAMP(2)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 980000000, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 980000000, time.UTC)}}, }, { Query: `SELECT CURRENT_TIMESTAMP(3)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 987000000, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 987000000, time.UTC)}}, }, { Query: `SELECT CURRENT_TIMESTAMP(4)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 987600000, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 987600000, time.UTC)}}, }, { Query: `SELECT CURRENT_TIMESTAMP(5)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 987650000, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 987650000, time.UTC)}}, }, { Query: `SELECT CURRENT_TIMESTAMP(6)`, - Expected: []sql.Row{{time.Date(2000, time.December, 12, 10, 15, 45, 987654000, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2000, time.December, 12, 10, 15, 45, 987654000, time.UTC)}}, }, } @@ -5020,7 +5020,7 @@ func TestColumnDefaults(t *testing.T, harness Harness) { // ctx = NewContext(harness) // e.Query(ctx, "set @@session.time_zone='SYSTEM';") TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t10(pk BIGINT PRIMARY KEY, v1 DATETIME(6) DEFAULT NOW(6), v2 DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6),"+ - "v3 TIMESTAMP(6) DEFAULT NOW(6), v4 TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6))", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + "v3 TIMESTAMP(6) DEFAULT NOW(6), v4 TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6))", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) // truncating time to microseconds for compatibility with integrators who may store more precision (go gives nanos) now := time.Now().Truncate(time.Microsecond).UTC() @@ -5030,7 +5030,7 @@ func TestColumnDefaults(t *testing.T, harness Harness) { RunQueryWithContext(t, e, harness, nil, "insert into t10(pk) values (1)") return nil }) - TestQueryWithContext(t, ctx, e, harness, "select * from t10 order by 1", []sql.Row{ + TestQueryWithContext(t, ctx, e, harness, "select * from t10 order by 1", []sql.UntypedSqlRow{ {1, now, now, now, now}, }, nil, nil, nil) }) @@ -5042,30 +5042,30 @@ func TestColumnDefaults(t *testing.T, harness Harness) { t.Skip("TODO: fix result formatting for server engine tests") } TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t10zero(pk BIGINT PRIMARY KEY, v1 DATETIME DEFAULT '2020-01-01 01:02:03', v2 DATETIME DEFAULT 0,"+ - "v3 TIMESTAMP DEFAULT '2020-01-01 01:02:03', v4 TIMESTAMP DEFAULT 0)", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + "v3 TIMESTAMP DEFAULT '2020-01-01 01:02:03', v4 TIMESTAMP DEFAULT 0)", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "insert into t10zero(pk) values (1)") // TODO: the string conversion does not transform to UTC like other NOW() calls, fix this - TestQueryWithContext(t, ctx, e, harness, "select * from t10zero order by 1", []sql.Row{{1, time.Date(2020, 1, 1, 1, 2, 3, 0, time.UTC), types.Datetime.Zero(), time.Date(2020, 1, 1, 1, 2, 3, 0, time.UTC), types.Timestamp.Zero()}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "select * from t10zero order by 1", []sql.UntypedSqlRow{{1, time.Date(2020, 1, 1, 1, 2, 3, 0, time.UTC), types.Datetime.Zero(), time.Date(2020, 1, 1, 1, 2, 3, 0, time.UTC), types.Timestamp.Zero()}}, nil, nil, nil) }) t.Run("Non-DATETIME/TIMESTAMP NOW/CURRENT_TIMESTAMP expression", func(t *testing.T) { - TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t11(pk BIGINT PRIMARY KEY, v1 DATE DEFAULT (NOW()), v2 VARCHAR(20) DEFAULT (CURRENT_TIMESTAMP()))", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t11(pk BIGINT PRIMARY KEY, v1 DATE DEFAULT (NOW()), v2 VARCHAR(20) DEFAULT (CURRENT_TIMESTAMP()))", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) now := time.Now() expectedDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.UTC) expectedDatetimeString := now.Truncate(time.Second).Format(sql.TimestampDatetimeLayout) ctx.SetQueryTime(now) RunQueryWithContext(t, e, harness, ctx, "insert into t11(pk) values (1)") - TestQueryWithContext(t, ctx, e, harness, "select * from t11 order by 1", []sql.Row{{1, expectedDate, expectedDatetimeString}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "select * from t11 order by 1", []sql.UntypedSqlRow{{1, expectedDate, expectedDatetimeString}}, nil, nil, nil) }) t.Run("Table referenced with column", func(t *testing.T) { - TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t28(pk BIGINT PRIMARY KEY, v1 BIGINT DEFAULT (t28.pk))", []sql.Row{{types.NewOkResult(0)}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "CREATE TABLE t28(pk BIGINT PRIMARY KEY, v1 BIGINT DEFAULT (t28.pk))", []sql.UntypedSqlRow{{types.NewOkResult(0)}}, nil, nil, nil) RunQueryWithContext(t, e, harness, ctx, "INSERT INTO t28 (pk) VALUES (1), (2)") - TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t28 order by 1", []sql.Row{{1, 1}, {2, 2}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, "SELECT * FROM t28 order by 1", []sql.UntypedSqlRow{{1, 1}, {2, 2}}, nil, nil, nil) ctx := NewContext(harness) t28, _, err := e.EngineAnalyzer().Catalog.Table(ctx, ctx.GetCurrentDatabase(), "t28") @@ -5081,23 +5081,23 @@ func TestPersist(t *testing.T, harness Harness, newPersistableSess func(ctx *sql q := []struct { Name string Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow ExpectedGlobal interface{} ExpectedPersist interface{} }{ { Query: "SET PERSIST max_connections = 1000;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, ExpectedGlobal: int64(1000), ExpectedPersist: int64(1000), }, { Query: "SET @@PERSIST.max_connections = 1000;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, ExpectedGlobal: int64(1000), ExpectedPersist: int64(1000), }, { Query: "SET PERSIST_ONLY max_connections = 1000;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, ExpectedGlobal: int64(151), ExpectedPersist: int64(1000), }, @@ -5120,7 +5120,7 @@ func TestPersist(t *testing.T, harness Harness, newPersistableSess func(ctx *sql require.Equal(t, tt.ExpectedGlobal, res) showGlobalVarsQuery := "SHOW GLOBAL VARIABLES LIKE 'max_connections'" - TestQueryWithContext(t, ctx, e, harness, showGlobalVarsQuery, []sql.Row{{"max_connections", tt.ExpectedGlobal}}, nil, nil, nil) + TestQueryWithContext(t, ctx, e, harness, showGlobalVarsQuery, []sql.UntypedSqlRow{{"max_connections", tt.ExpectedGlobal}}, nil, nil, nil) } if tt.ExpectedPersist != nil { @@ -5155,7 +5155,7 @@ func TestPrepared(t *testing.T, harness Harness) { qtests := []queries.QueryTest{ { Query: "select 1,2 limit ?,?", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(0.0), "v2": mustBuildBindVariable(1.0), @@ -5163,7 +5163,7 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM (SELECT i FROM mYtABLE WHERE i = ?) AS a ORDER BY foo, i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 2}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(2)), @@ -5171,7 +5171,7 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM (SELECT i FROM mYtABLE WHERE i = ?) AS a HAVING bar = ? ORDER BY foo, i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 2}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(2)), @@ -5180,14 +5180,14 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM MyTable HAVING bar = ? ORDER BY foo, i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(1)), }, }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM MyTable HAVING bar = ? AND foo = ? ORDER BY foo, i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(1)), "v2": mustBuildBindVariable(int64(1)), @@ -5195,7 +5195,7 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT ? * 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, Bindings: map[string]sqlparser.Expr{ @@ -5204,7 +5204,7 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT i from mytable where i in (?, ?) order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, @@ -5215,7 +5215,7 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT i from mytable where i = ? * 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, Bindings: map[string]sqlparser.Expr{ @@ -5224,7 +5224,7 @@ func TestPrepared(t *testing.T, harness Harness) { }, { Query: "SELECT i from mytable where 4 = ? * 2 order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -5238,14 +5238,14 @@ func TestPrepared(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(1), }, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT i FROM mytable ORDER BY i LIMIT ? OFFSET 2;", Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(1), }, - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, // todo(max): sort function expressions w/ bindvars are aliased incorrectly // { @@ -5254,7 +5254,7 @@ func TestPrepared(t *testing.T, harness Harness) { // "v1": querypb.&query{Val: 1, Type: sql.Int8}, // "v2": {Value: mustConvertToValue().Val1, Type: sql.Int8}, // }, - // Expected: []sql.Row{{float64(3)}}, + // Expected: []sql.UntypedSqlRow{{float64(3)}}, // }, { Query: "SELECT (select sum(?) from mytable) as x FROM mytable ORDER BY (select sum(?) from mytable)", @@ -5262,7 +5262,7 @@ func TestPrepared(t *testing.T, harness Harness) { "v1": mustBuildBindVariable(1), "v2": mustBuildBindVariable(1), }, - Expected: []sql.Row{{float64(3)}, {float64(3)}, {float64(3)}}, + Expected: []sql.UntypedSqlRow{{float64(3)}, {float64(3)}, {float64(3)}}, }, { Query: "With x as (select sum(?) from mytable) select sum(?) from x ORDER BY (select sum(?) from mytable)", @@ -5271,7 +5271,7 @@ func TestPrepared(t *testing.T, harness Harness) { "v2": mustBuildBindVariable(1), "v3": mustBuildBindVariable(1), }, - Expected: []sql.Row{{float64(1)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}}, }, { Query: "SELECT CAST(? as CHAR) UNION SELECT CAST(? as CHAR)", @@ -5279,64 +5279,64 @@ func TestPrepared(t *testing.T, harness Harness) { "v1": mustBuildBindVariable(1), "v2": mustBuildBindVariable("1"), }, - Expected: []sql.Row{{"1"}}, + Expected: []sql.UntypedSqlRow{{"1"}}, }, { Query: "SELECT GET_LOCK(?, 10)", Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable("10"), }, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "Select IS_FREE_LOCK(?)", Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable("10"), }, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "Select IS_USED_LOCK(?)", Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable("10"), }, - Expected: []sql.Row{{uint64(1)}}, + Expected: []sql.UntypedSqlRow{{uint64(1)}}, }, { Query: "Select RELEASE_LOCK(?)", Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable("10"), }, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "Select RELEASE_ALL_LOCKS()", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT DATE_ADD(TIMESTAMP(?), INTERVAL 1 DAY);", - Expected: []sql.Row{{"2022-10-27 13:14:15"}}, + Expected: []sql.UntypedSqlRow{{"2022-10-27 13:14:15"}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(time.Date(2022, time.October, 26, 13, 14, 15, 0, time.UTC)), }, }, { Query: "SELECT DATE_ADD(TIMESTAMP(?), INTERVAL 1 DAY);", - Expected: []sql.Row{{"2022-10-27 13:14:15"}}, + Expected: []sql.UntypedSqlRow{{"2022-10-27 13:14:15"}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable("2022-10-26 13:14:15"), }, }, { Query: "SELECT DATE_ADD(?, INTERVAL 1 DAY);", - Expected: []sql.Row{{"2022-10-27 13:14:15"}}, + Expected: []sql.UntypedSqlRow{{"2022-10-27 13:14:15"}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(time.Date(2022, time.October, 26, 13, 14, 15, 0, time.UTC)), }, }, { Query: "SELECT DATE_ADD(?, INTERVAL 1 DAY);", - Expected: []sql.Row{{"2022-10-27 13:14:15"}}, + Expected: []sql.UntypedSqlRow{{"2022-10-27 13:14:15"}}, Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable("2022-10-26 13:14:15"), }, @@ -5384,7 +5384,7 @@ func TestPrepared(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(2)), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, float64(4)}, }, }, @@ -5392,7 +5392,7 @@ func TestPrepared(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(2)), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, float64(4)}, }, }, @@ -5400,7 +5400,7 @@ func TestPrepared(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(0)), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, float64(2)}, {2, float64(4)}, }, @@ -5409,7 +5409,7 @@ func TestPrepared(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(3)), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, float64(2)}, }, }, @@ -5417,7 +5417,7 @@ func TestPrepared(t *testing.T, harness Harness) { Bindings: map[string]sqlparser.Expr{ "v1": mustBuildBindVariable(int64(1)), }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, float64(1)}, {2, float64(4)}, }, @@ -5477,7 +5477,7 @@ func TestCharsetCollationEngine(t *testing.T, harness Harness) { require.NoError(t, err) rows, err := sql.RowIterToRows(ctx, iter) require.NoError(t, err) - require.Equal(t, query.Expected, rows) + require.Equal(t, query.Expected, sql.RowsToUntyped(rows)) } }) } @@ -5561,7 +5561,7 @@ func testCharsetCollationWire(t *testing.T, h Harness, sessionBuilder server.Ses } err = r.Scan(interfaceRow...) require.NoError(t, err) - outRow := make(sql.Row, len(connRow)) + outRow := make(sql.UntypedSqlRow, len(connRow)) for i, str := range connRow { if str == nil { outRow[i] = nil @@ -5662,7 +5662,7 @@ func TestTypesOverWire(t *testing.T, harness ClientHarness, sessionBuilder serve } expectedRow := expectedRowSet[expectedRowIdx] expectedRowIdx++ - connRow := make([]*string, len(engineRow)) + connRow := make([]*string, engineRow.Len()) interfaceRow := make([]any, len(connRow)) for i := range connRow { interfaceRow[i] = &connRow[i] @@ -5671,7 +5671,7 @@ func TestTypesOverWire(t *testing.T, harness ClientHarness, sessionBuilder serve if !assert.NoError(t, err) { break } - expectedEngineRow := make([]*string, len(engineRow)) + expectedEngineRow := make([]*string, engineRow.Len()) row, err := server.RowToSQL(ctx, sch, engineRow, nil) if !assert.NoError(t, err) { break @@ -5889,18 +5889,6 @@ func TestIndexes(t *testing.T, h Harness) { } } -func TestVectorIndexes(t *testing.T, h Harness) { - for _, tt := range queries.VectorIndexQueries { - TestScript(t, h, tt) - } -} - -func TestVectorFunctions(t *testing.T, h Harness) { - for _, tt := range queries.VectorFunctionQueries { - TestScript(t, h, tt) - } -} - func TestIndexPrefix(t *testing.T, h Harness) { for _, tt := range queries.IndexPrefixQueries { TestScript(t, h, tt) diff --git a/enginetest/evaluation.go b/enginetest/evaluation.go index c5b9b64137..c82c48d23b 100644 --- a/enginetest/evaluation.go +++ b/enginetest/evaluation.go @@ -302,7 +302,7 @@ func TestTransactionScriptWithEngine(t *testing.T, e QueryEngine, harness Harnes // TestQuery runs a query on the engine given and asserts that results are as expected. // TODO: this should take en engine -func TestQuery(t *testing.T, harness Harness, q string, expected []sql.Row, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr) { +func TestQuery(t *testing.T, harness Harness, q string, expected []sql.UntypedSqlRow, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr) { t.Run(q, func(t *testing.T) { if sh, ok := harness.(SkippingHarness); ok { if sh.SkipQueryTest(q) { @@ -318,7 +318,7 @@ func TestQuery(t *testing.T, harness Harness, q string, expected []sql.Row, expe } // TestQuery runs a query on the engine given and asserts that results are as expected. -func TestQuery2(t *testing.T, harness Harness, e QueryEngine, q string, expected []sql.Row, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr) { +func TestQuery2(t *testing.T, harness Harness, e QueryEngine, q string, expected []sql.UntypedSqlRow, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr) { t.Run(q, func(t *testing.T) { if sh, ok := harness.(SkippingHarness); ok { if sh.SkipQueryTest(q) { @@ -351,7 +351,7 @@ func TestQueryWithContext( e QueryEngine, harness Harness, q string, - expected []sql.Row, + expected []sql.UntypedSqlRow, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr, qFlags *sql.QueryFlags, @@ -370,7 +370,7 @@ func TestQueryWithContext( require.NoError(err, "Unexpected error for query %s: %s", q, err) if expected != nil { - CheckResults(t, harness, expected, expectedCols, sch, rows, q, e) + CheckResults(t, harness, expected, expectedCols, sch, sql.RowsToUntyped(rows), q, e) } require.Equal( @@ -392,7 +392,7 @@ func GetFilterIndex(n sql.Node) sql.IndexLookup { return lookup } -func TestQueryWithIndexCheck(t *testing.T, ctx *sql.Context, e QueryEngine, harness Harness, q string, expected []sql.Row, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr) { +func TestQueryWithIndexCheck(t *testing.T, ctx *sql.Context, e QueryEngine, harness Harness, q string, expected []sql.UntypedSqlRow, expectedCols []*sql.Column, bindings map[string]sqlparser.Expr) { ctx = ctx.WithQuery(q) require := require.New(t) if len(bindings) > 0 { @@ -413,7 +413,7 @@ func TestQueryWithIndexCheck(t *testing.T, ctx *sql.Context, e QueryEngine, harn require.NoError(err, "Unexpected error for query %s: %s", q, err) if expected != nil { - CheckResults(t, harness, expected, expectedCols, sch, rows, q, e) + CheckResults(t, harness, expected, expectedCols, sch, sql.RowsToUntyped(rows), q, e) } require.Equal( @@ -436,7 +436,7 @@ func CheckIndexedAccess(n sql.Node) bool { } // TestPreparedQuery runs a prepared query on the engine given and asserts that results are as expected. -func TestPreparedQuery(t *testing.T, harness Harness, q string, expected []sql.Row, expectedCols []*sql.Column) { +func TestPreparedQuery(t *testing.T, harness Harness, q string, expected []sql.UntypedSqlRow, expectedCols []*sql.Column) { t.Run(q, func(t *testing.T) { if sh, ok := harness.(SkippingHarness); ok { if sh.SkipQueryTest(q) { @@ -462,7 +462,7 @@ func TestPreparedQueryWithEngine(t *testing.T, harness Harness, e QueryEngine, t }) } -func TestPreparedQueryWithContext(t *testing.T, ctx *sql.Context, e QueryEngine, h Harness, q string, expected []sql.Row, expectedCols []*sql.Column, bindVars map[string]sqlparser.Expr, checkIndexedAccess bool) { +func TestPreparedQueryWithContext(t *testing.T, ctx *sql.Context, e QueryEngine, h Harness, q string, expected []sql.UntypedSqlRow, expectedCols []*sql.Column, bindVars map[string]sqlparser.Expr, checkIndexedAccess bool) { require := require.New(t) rows, sch, err := runQueryPreparedWithCtx(t, ctx, e, q, bindVars, false) if err != nil { @@ -472,7 +472,7 @@ func TestPreparedQueryWithContext(t *testing.T, ctx *sql.Context, e QueryEngine, if expected != nil { // TODO fix expected cols for prepared? - CheckResults(t, h, expected, expectedCols, sch, rows, q, e) + CheckResults(t, h, expected, expectedCols, sch, sql.RowsToUntyped(rows), q, e) } require.Equal(0, ctx.Memory.NumCaches()) @@ -483,10 +483,10 @@ func TestPreparedQueryWithContext(t *testing.T, ctx *sql.Context, e QueryEngine, func CheckResults( t *testing.T, h Harness, - expected []sql.Row, + expected []sql.UntypedSqlRow, expectedCols []*sql.Column, sch sql.Schema, - rows []sql.Row, + rows []sql.UntypedSqlRow, q string, e QueryEngine, ) { @@ -650,10 +650,10 @@ func toSQL(c *sql.Column, expected any, isZeroTime bool) (any, error) { // don't implement ResultEvaluationHarness. All numerical values are widened to their widest type before comparison. func checkResults( t *testing.T, - expected []sql.Row, + expected []sql.UntypedSqlRow, expectedCols []*sql.Column, sch sql.Schema, - rows []sql.Row, + rows []sql.UntypedSqlRow, q string, e QueryEngine, ) { @@ -669,7 +669,7 @@ func checkResults( setZeroTime := strings.HasPrefix(upperQuery, "SHOW ") && !strings.Contains(upperQuery, "EVENTS") for _, widenedRow := range widenedRows { - for i, val := range widenedRow { + for i, val := range widenedRow.Values() { switch v := val.(type) { case time.Time: if setZeroTime { @@ -778,8 +778,8 @@ func simplifyResultSchema(s sql.Schema) []resultSchemaCol { // (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. -func WidenRows(sch sql.Schema, rows []sql.Row) []sql.Row { - widened := make([]sql.Row, len(rows)) +func WidenRows(sch sql.Schema, rows []sql.UntypedSqlRow) []sql.UntypedSqlRow { + widened := make([]sql.UntypedSqlRow, len(rows)) for i, row := range rows { widened[i] = WidenRow(sch, row) } @@ -787,8 +787,8 @@ func WidenRows(sch sql.Schema, rows []sql.Row) []sql.Row { } // WidenRow returns a row with all values widened to their widest type -func WidenRow(sch sql.Schema, row sql.Row) sql.Row { - widened := make(sql.Row, len(row)) +func WidenRow(sch sql.Schema, row sql.UntypedSqlRow) sql.UntypedSqlRow { + widened := make(sql.UntypedSqlRow, len(row)) for i, v := range row { var vw interface{} @@ -1000,7 +1000,7 @@ func AssertWarningAndTestQuery( ctx *sql.Context, harness Harness, query string, - expected []sql.Row, + expected []sql.UntypedSqlRow, expectedCols []*sql.Column, expectedCode int, expectedWarningsCount int, @@ -1040,7 +1040,7 @@ func AssertWarningAndTestQuery( } if !skipResultsCheck { - CheckResults(t, harness, expected, expectedCols, sch, rows, query, e) + CheckResults(t, harness, expected, expectedCols, sch, sql.RowsToUntyped(rows), query, e) } validateEngine(t, ctx, harness, e) } @@ -1106,11 +1106,11 @@ func RunWriteQueryTestWithEngine(t *testing.T, harness Harness, e QueryEngine, t if sh, ok := harness.(SkippingHarness); ok { if sh.SkipQueryTest(tt.WriteQuery) { t.Logf("Skipping query %s", tt.WriteQuery) - t.Skip() + return } if sh.SkipQueryTest(tt.SelectQuery) { t.Logf("Skipping query %s", tt.SelectQuery) - t.Skip() + return } } ctx := NewContext(harness) diff --git a/enginetest/example_test.go b/enginetest/example_test.go index 3d842a3569..89ade1bad4 100644 --- a/enginetest/example_test.go +++ b/enginetest/example_test.go @@ -47,8 +47,8 @@ func Example() { } checkIfError(err) - name := row[0] - count := row[1] + name := row.GetValue(0) + count := row.GetValue(1) fmt.Println(name, count) } @@ -74,11 +74,11 @@ func createTestDatabase() *memory.DbProvider { }), db.GetForeignKeyCollection()) db.AddTable("mytable", table) - 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"), + rows := []sql.UntypedSqlRow{ + {"John Doe", "john@doe.com"}, + {"John Doe", "johnalt@doe.com"}, + {"Jane Doe", "jane@doe.com"}, + {"Evil Bob", "evilbob@gmail.com"}, } for _, row := range rows { diff --git a/enginetest/harness.go b/enginetest/harness.go index 8b8445e874..a7099a6ea3 100644 --- a/enginetest/harness.go +++ b/enginetest/harness.go @@ -157,10 +157,10 @@ type ResultEvaluationHarness interface { // there are any EvaluateQueryResults( t *testing.T, - expectedRows []sql.Row, + expectedRows []sql.UntypedSqlRow, expectedCols []*sql.Column, expectdSch sql.Schema, - actualRows []sql.Row, + actualRows []sql.UntypedSqlRow, query string, ) diff --git a/enginetest/histogram_test.go b/enginetest/histogram_test.go index e789d4516d..25c328b596 100644 --- a/enginetest/histogram_test.go +++ b/enginetest/histogram_test.go @@ -327,8 +327,8 @@ func testHistogram(ctx *sql.Context, table *plan.ResolvedTable, fields []int, bu sch := table.Schema() - keyVals := make([]sql.Row, len(rows)) - for i, row := range rows { + keyVals := make([]sql.UntypedSqlRow, len(rows)) + for i, row := range sql.RowsToUntyped(rows) { for _, ord := range fields { keyVals[i] = append(keyVals[i], row[ord]) } @@ -374,7 +374,7 @@ func testHistogram(ctx *sql.Context, table *plan.ResolvedTable, fields []int, bu currentBucket.BoundVal = row currentBucket.BoundCnt = uint64(currentCnt) heap.Push(mcvs, stats.NewHeapRow(row, currentCnt)) - currentBucket.McvVals = mcvs.Array() + currentBucket.McvVals = sql.RowsToUntyped(mcvs.Array()) currentBucket.McvsCnt = mcvs.Counts() histogram = append(histogram, currentBucket) currentBucket = &stats.Bucket{DistinctCnt: 1} @@ -384,7 +384,7 @@ func testHistogram(ctx *sql.Context, table *plan.ResolvedTable, fields []int, bu } currentBucket.BoundVal = keyVals[len(keyVals)-1] currentBucket.BoundCnt = uint64(currentCnt) - currentBucket.McvVals = mcvs.Array() + currentBucket.McvVals = sql.RowsToUntyped(mcvs.Array()) currentBucket.McvsCnt = mcvs.Counts() histogram = append(histogram, currentBucket) return histogram, nil @@ -443,7 +443,7 @@ func expectedResultSize(ctx *sql.Context, t1, t2 *plan.ResolvedTable, filters [] func uniformDistForTable(ctx *sql.Context, rt *plan.ResolvedTable, cnt int) error { tab := rt.UnderlyingTable().(*memory.Table) for i := 0; i < cnt; i++ { - row := sql.Row{int64(i), int64(i), int64(i)} + row := sql.UntypedSqlRow{int64(i), int64(i), int64(i)} err := tab.Insert(ctx, row) if err != nil { return err @@ -457,7 +457,7 @@ func increasingHalfDistForTable(ctx *sql.Context, rt *plan.ResolvedTable, cnt in tab := rt.UnderlyingTable().(*memory.Table) for i := 0; i < 2*cnt; i++ { for j := 0; j < (j/2)+1; j++ { - row := sql.Row{int64(i), int64(j), int64(j)} + row := sql.UntypedSqlRow{int64(i), int64(j), int64(j)} err := tab.Insert(ctx, row) if err != nil { return err @@ -477,8 +477,8 @@ func expDistForTable(ctx *sql.Context, rt *plan.ResolvedTable, cnt int, lambda f if errors.Is(err, io.EOF) { break } - row := sql.Row{int64(val[0].(int))} - for _, v := range val[1:] { + row := sql.UntypedSqlRow{int64(val.GetValue(0).(int))} + for _, v := range val.Subslice(1, val.Len()).Values() { row = append(row, int64(v.(float64))) } err = tab.Insert(ctx, row) @@ -499,8 +499,8 @@ func normalDistForTable(ctx *sql.Context, rt *plan.ResolvedTable, cnt int, mean, if errors.Is(err, io.EOF) { break } - row := sql.Row{int64(i)} - for _, v := range val[1:] { + row := sql.UntypedSqlRow{int64(i)} + for _, v := range val.Subslice(1, val.Len()).Values() { row = append(row, int64(v.(float64))) } err = tab.Insert(ctx, row) diff --git a/enginetest/join_op_tests.go b/enginetest/join_op_tests.go index 0a0f4c5e0b..fe2ca96d2c 100644 --- a/enginetest/join_op_tests.go +++ b/enginetest/join_op_tests.go @@ -28,7 +28,7 @@ import ( type JoinOpTests struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow Skip bool } @@ -98,7 +98,7 @@ var EngineOnlyJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select * from xy left join required_lookup_table('s', 2) on x = s", - Expected: []sql.Row{{0, 2, 0}, {1, 0, 1}, {2, 1, nil}, {3, 3, nil}}, + Expected: []sql.UntypedSqlRow{{0, 2, 0}, {1, 0, 1}, {2, 1, nil}, {3, 3, nil}}, }, }, }, @@ -129,7 +129,7 @@ var DefaultJoinOpTests = []joinOpTest{ // At the time of this addition, filters in the middle of join trees are unsafe and // at risk of being lost. Query: "select /*+ JOIN_ORDER(ab,xy,uv) */ * from xy join uv on (x = u and u in (0,2)) join ab on (x = a and v < 2)", - Expected: []sql.Row{{0, 2, 0, 1, 0, 2}}, + Expected: []sql.UntypedSqlRow{{0, 2, 0, 1, 0, 2}}, }, }, }, @@ -147,11 +147,11 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select /*+ JOIN_ORDER(ab,xyz) */ a from ab join xyz on a = z where y = 2;", - Expected: []sql.Row{{4}, {7}}, + Expected: []sql.UntypedSqlRow{{4}, {7}}, }, { Query: "select /*+ JOIN_ORDER(xyz,ab) */ a from ab join xyz on a = z where y = 2;", - Expected: []sql.Row{{4}, {7}}, + Expected: []sql.UntypedSqlRow{{4}, {7}}, }, }, }, @@ -170,38 +170,38 @@ var DefaultJoinOpTests = []joinOpTest{ // covering tablescan { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a from xy join ab on y = a", - Expected: []sql.Row{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a from xy join ab on y = a", - Expected: []sql.Row{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, }, // covering indexed source { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{2, 2}, {2, 2}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{2, 2}, {2, 2}}, }, // non-covering tablescan { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,z from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 3}, {0, 0, 3}, {2, 2, 1}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 3}, {0, 0, 3}, {2, 2, 1}, {2, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a,z from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 3}, {0, 0, 3}, {2, 2, 1}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 3}, {0, 0, 3}, {2, 2, 1}, {2, 2, 1}}, }, // non-covering indexed source { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,z from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2, 1}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{2, 2, 1}, {2, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a,z from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2, 1}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{2, 2, 1}, {2, 2, 1}}, }, }, }, @@ -220,12 +220,12 @@ var DefaultJoinOpTests = []joinOpTest{ // non-covering tablescan { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,x from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, }, // covering { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,z from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 0}, {2, 2, 2}, {2, 2, 3}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {2, 2, 2}, {2, 2, 3}}, }, }, }, @@ -244,12 +244,12 @@ var DefaultJoinOpTests = []joinOpTest{ // non-covering tablescan { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,x from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, }, // covering { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,z from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 0}, {2, 2, 2}, {2, 2, 3}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {2, 2, 2}, {2, 2, 3}}, }, }, }, @@ -268,38 +268,38 @@ var DefaultJoinOpTests = []joinOpTest{ // covering tablescan { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a from xy join ab on y = a", - Expected: []sql.Row{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a from xy join ab on y = a", - Expected: []sql.Row{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 0}, {2, 2}, {2, 2}}, }, // covering indexed source { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{2, 2}, {2, 2}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{2, 2}, {2, 2}}, }, // non-covering tablescan { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,x from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 1}, {0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a,x from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 1}, {0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {0, 0, 1}, {2, 2, 0}, {2, 2, 0}}, }, // non-covering indexed source { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,x from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2, 0}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{2, 2, 0}, {2, 2, 0}}, }, { Query: "select /*+ JOIN_ORDER(xy,ab) */ y,a,x from xy join ab on y = a where y = 2", - Expected: []sql.Row{{2, 2, 0}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{2, 2, 0}, {2, 2, 0}}, }, }, }, @@ -317,47 +317,47 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,z from wxyz join abcd on y = a", - Expected: []sql.Row{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {2, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,w from wxyz join abcd on y = a", - Expected: []sql.Row{{0, 0, 1}, {0, 0, 1}, {0, 0, 1}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {0, 0, 1}, {0, 0, 1}, {2, 2, 0}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c", - Expected: []sql.Row{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,d from wxyz join abcd on y = c", - Expected: []sql.Row{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c and w = c", - Expected: []sql.Row{{1, 0, 1}}, + Expected: []sql.UntypedSqlRow{{1, 0, 1}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,d from wxyz join abcd on y = c and w = c", - Expected: []sql.Row{{1, 0, 1}}, + Expected: []sql.UntypedSqlRow{{1, 0, 1}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c and w = a", - Expected: []sql.Row{{2, 0, 1}}, + Expected: []sql.UntypedSqlRow{{2, 0, 1}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on w = c and w = a", - Expected: []sql.Row{{3, 0, 0}, {2, 0, 0}}, + Expected: []sql.UntypedSqlRow{{3, 0, 0}, {2, 0, 0}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c and y = a", - Expected: []sql.Row{{0, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = a and c = 0", - Expected: []sql.Row{{0, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,d from wxyz join abcd on y = a and c = 0", - Expected: []sql.Row{{0, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}}, }, }, }, @@ -375,35 +375,35 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,z from wxyz join abcd on y = a", - Expected: []sql.Row{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {2, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,w from wxyz join abcd on y = a", - Expected: []sql.Row{{0, 0, 1}, {0, 0, 1}, {0, 0, 1}, {2, 2, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {0, 0, 1}, {0, 0, 1}, {2, 2, 0}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,d from wxyz join abcd on y = c", - Expected: []sql.Row{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c", - Expected: []sql.Row{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 0, 1}, {2, 0, 1}, {3, 2, 1}}, }, { Query: "select /*+ JOIN_ORDER(abcd,wxyz) */ y,a,d from wxyz join abcd on y = c and w = c", - Expected: []sql.Row{{1, 0, 1}}, + Expected: []sql.UntypedSqlRow{{1, 0, 1}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c and w = a", - Expected: []sql.Row{{2, 0, 1}}, + Expected: []sql.UntypedSqlRow{{2, 0, 1}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on w = c and w = a", - Expected: []sql.Row{{3, 0, 0}, {2, 0, 0}}, + Expected: []sql.UntypedSqlRow{{3, 0, 0}, {2, 0, 0}}, }, { Query: "select /*+ JOIN_ORDER(wxyz,abcd) */ y,a,d from wxyz join abcd on y = c and y = a", - Expected: []sql.Row{{0, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}}, }, }, }, @@ -421,7 +421,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select /*+ JOIN_ORDER(ab,xy) */ y,a,z from xy join ab on y = a", - Expected: []sql.Row{{0, 0, 1}, {0, 0, 0}, {2, 2, 3}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0, 1}, {0, 0, 0}, {2, 2, 3}, {2, 2, 2}}, }, }, }, @@ -439,19 +439,19 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select * from xy where y-1 = (select u from uv where u = 4);", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from xy where x = 1 and x != (select u from uv where u = 4);", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}}, }, { Query: "select * from xy where x = 1 and x not in (select u from uv where u = 4);", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}}, }, { Query: "select * from xy where x = 1 and not exists (select u from uv where u = 4);", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}}, }, }, }, @@ -469,7 +469,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select x,u,z from xyz join uv on z = u where y = 1 order by 1,2", - Expected: []sql.Row{{1, 1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}}, }, }, }, @@ -487,7 +487,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select x,u from xyz join uv on z = u where y = 1 order by 1,2", - Expected: []sql.Row{{1, 3}, {2, 2}, {3, 1}}, + Expected: []sql.UntypedSqlRow{{1, 3}, {2, 2}, {3, 1}}, }, }, }, @@ -504,7 +504,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select x from xy left join uv on x = v", - Expected: []sql.Row{{0}, {2}, {3}, {4}, {5}, {5}, {7}, {8}, {10}}, + Expected: []sql.UntypedSqlRow{{0}, {2}, {3}, {4}, {5}, {5}, {7}, {8}, {10}}, }, }, }, @@ -521,7 +521,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select HEX(x),HEX(u) from xy left join uv on x = v OR y = u", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2345", nil}, {"F0F0", "FEDC"}, }, @@ -542,7 +542,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select * from xy where x not in (select v from uv)", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0}}, }, }, }, @@ -560,11 +560,11 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: `select /*+ JOIN_ORDER(scalarSubq0,xy) */ count(*) from xy where y in (select distinct v from uv);`, - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: `SELECT /*+ JOIN_ORDER(scalarSubq0,xy) */ count(*) from xy where y in (select distinct u from uv);`, - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, }, }, @@ -582,49 +582,49 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: "select * from xy where x = 1 and exists (select 1 union select 1)", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "select * from xy where x = 1 and x in (select y from xy union select 1)", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "select * from xy where x = 1 and x in (select y from xy intersect select 1)", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "select * from xy where x = 1 and x in (select y from xy except select 2)", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "select * from xy where x = 1 intersect select * from uv;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, { Query: "select * from uv where u < 4 except select * from xy;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, }, }, { Query: "select * from xy, uv where x = u intersect select * from xy, uv where x = u order by x, y, u, v;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1, 1}, {2, 2, 2, 2}, }, }, { Query: "select * from xy, uv where x != u except select * from xy, uv where y != v order by x, y, u, v;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 3, 1}, {2, 2, 4, 2}, }, }, { Query: "select * from (select * from uv where u < 4 except select * from xy) a, (select * from xy intersect select * from uv) b order by u, v, x, y;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1, 1, 1}, {3, 1, 2, 2}, }, @@ -645,7 +645,7 @@ var DefaultJoinOpTests = []joinOpTest{ tests: []JoinOpTests{ { Query: `SELECT * from xy join uv on x = u and y = NOW()`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT xy.x, xy.y @@ -653,12 +653,12 @@ var DefaultJoinOpTests = []joinOpTest{ WHERE EXISTS ( SELECT 1 FROM uv WHERE xy.x = uv.v AND (EXISTS ( SELECT 1 FROM ab WHERE uv.u = ab.b)))`, - Expected: []sql.Row{{1, 0}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 0}, {2, 1}}, }, { // natural join w/ inner join Query: "select * from mytable t1 natural join mytable t2 join othertable t3 on t2.i = t3.i2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", "third", 1}, {2, "second row", "second", 2}, {3, "third row", "first", 3}, @@ -672,15 +672,15 @@ SELECT SUM(x) FROM xy WHERE x IN ( ) ) AND x = 2;`, - Expected: []sql.Row{{float64(2)}}, + Expected: []sql.UntypedSqlRow{{float64(2)}}, }, { Query: "select * from ab left join uv on a = u where exists (select * from uv where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from ab left join (select * from uv where false) s on a = u order by 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, nil, nil}, {1, 2, nil, nil}, {2, 2, nil, nil}, @@ -689,11 +689,11 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "select * from ab right join (select * from uv where false) s on a = u order by 1;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from mytable where exists (select * from mytable where i = 1) order by 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -703,14 +703,14 @@ SELECT SUM(x) FROM xy WHERE x IN ( { // case 1: condition uses columns from both sides Query: "/*+case1*/ select * from ab where exists (select * from xy where ab.a = xy.x + 3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, }, }, { // case 1N: NOT EXISTS condition uses columns from both sides Query: "/*+case1N*/ select * from ab where not exists (select * from xy where ab.a = xy.x + 3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -719,12 +719,12 @@ SELECT SUM(x) FROM xy WHERE x IN ( { // case 2: condition uses columns from left side only Query: "/*+case2*/ select * from ab where exists (select * from xy where a = 1)", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { // case 2N: NOT EXISTS condition uses columns from left side only Query: "/*+case2N*/ select * from ab where not exists (select * from xy where a = 1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {2, 2}, {3, 1}, @@ -733,7 +733,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( { // case 3: condition uses columns from right side only Query: "/*+case3*/ select * from ab where exists (select * from xy where 1 = xy.x)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -743,7 +743,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( { // case 3N: NOT EXISTS condition uses columns from right side only Query: "/*+case3N*/ select * from ab where not exists (select * from xy where 10 = xy.x)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -753,7 +753,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( { // case 4a: condition uses no columns from either side, and condition is true Query: "/*+case4a*/ select * from ab where exists (select * from xy where 1 = 1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -763,22 +763,22 @@ SELECT SUM(x) FROM xy WHERE x IN ( { // case 4aN: NOT EXISTS condition uses no columns from either side, and condition is true Query: "/*+case4aN*/ select * from ab where not exists (select * from xy where 1 = 1)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // case 4b: condition uses no columns from either side, and condition is false Query: "/*+case4b*/ select * from ab where exists (select * from xy where 1 = 0)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // case 4bN: NOT EXISTS condition uses no columns from either side, and condition is false Query: "/*+case4bN*/ select * from ab where not exists (select * from xy where 1 = 0)", - Expected: []sql.Row{{0, 2}, {1, 2}, {2, 2}, {3, 1}}, + Expected: []sql.UntypedSqlRow{{0, 2}, {1, 2}, {2, 2}, {3, 1}}, }, { // test more complex scopes Query: "select x, 1 in (select a from ab where exists (select * from uv where a = u)) s from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, true}, {1, true}, {2, true}, @@ -787,11 +787,11 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `select a.i,a.f, b.i2 from niltable a left join niltable b on a.i = b.i2`, - Expected: []sql.Row{{1, nil, nil}, {2, nil, 2}, {3, nil, nil}, {4, 4.0, 4}, {5, 5.0, nil}, {6, 6.0, 6}}, + Expected: []sql.UntypedSqlRow{{1, nil, nil}, {2, nil, 2}, {3, nil, nil}, {4, 4.0, 4}, {5, 5.0, nil}, {6, 6.0, 6}}, }, { Query: `SELECT i, s, i2, s2 FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT (s2 <=> s)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -799,7 +799,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT i, s, i2, s2 FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT (s2 = s)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -807,7 +807,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT i, s, i2, s2 FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND CONCAT(s, s2) IS NOT NULL`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -815,21 +815,21 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT * FROM mytable mt JOIN othertable ot ON ot.i2 = (SELECT i2 FROM othertable WHERE s2 = "second") AND mt.i = ot.i2 JOIN mytable mt2 ON mt.i = mt2.i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row", "second", 2, 2, "second row"}, }, }, { Query: "SELECT l.i, r.i2 FROM niltable l INNER JOIN niltable r ON l.i2 = r.i2 ORDER BY 1", - Expected: []sql.Row{{2, 2}, {4, 4}, {6, 6}}, + Expected: []sql.UntypedSqlRow{{2, 2}, {4, 4}, {6, 6}}, }, { Query: "SELECT l.i, r.i2 FROM niltable l INNER JOIN niltable r ON l.i2 != r.i2 ORDER BY 1, 2", - Expected: []sql.Row{{2, 4}, {2, 6}, {4, 2}, {4, 6}, {6, 2}, {6, 4}}, + Expected: []sql.UntypedSqlRow{{2, 4}, {2, 6}, {4, 2}, {4, 6}, {6, 2}, {6, 4}}, }, { Query: "SELECT l.i, r.i2 FROM niltable l INNER JOIN niltable r ON l.i2 <=> r.i2 ORDER BY 1 ASC", - Expected: []sql.Row{{1, nil}, {1, nil}, {1, nil}, {2, 2}, {3, nil}, {3, nil}, {3, nil}, {4, 4}, {5, nil}, {5, nil}, {5, nil}, {6, 6}}, + Expected: []sql.UntypedSqlRow{{1, nil}, {1, nil}, {1, nil}, {2, 2}, {3, nil}, {3, nil}, {3, nil}, {4, 4}, {5, nil}, {5, nil}, {5, nil}, {6, 6}}, }, { // TODO: ORDER BY should apply to the union. The parser is wrong. @@ -840,7 +840,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( UNION ALL SELECT CAST(4 AS SIGNED) AS i2, "not found" AS s2 FROM DUAL) othertable ON i2 = i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third", 1, 1}, {"second", 2, 2}, {"first", 3, 3}, @@ -859,7 +859,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( SELECT CAST(4 AS SIGNED) AS i2, "not found" AS s2 FROM DUAL) othertable ON i2 = i) AS rj FROM DUAL`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"testing", 3}, }, }, @@ -874,13 +874,13 @@ SELECT SUM(x) FROM xy WHERE x IN ( SELECT CAST(4 AS SIGNED) AS i2, "not found" AS s2 FROM DUAL) othertable ON i2 = i) AS rj FROM DUAL`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"testing", 4}, }, }, { Query: "SELECT substring(mytable.s, 1, 5) AS s FROM mytable INNER JOIN othertable ON (substring(mytable.s, 1, 5) = SUBSTRING(othertable.s2, 1, 5)) GROUP BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third"}, {"secon"}, {"first"}, @@ -888,55 +888,55 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ JOIN_ORDER(t1,t2) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ JOIN_ORDER(t2,t1) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ JOIN_ORDER(t1) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ JOIN_ORDER(t1, mytable) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ JOIN_ORDER(t1, not_exist) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ NOTHING(abc) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "SELECT /*+ JOIN_ORDER( */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select mytable.i as i2, othertable.i2 as i from mytable join othertable on i = i2 order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, {3, 3}, @@ -944,7 +944,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, s, i2, s2 FROM mytable INNER JOIN othertable ON i = i2 OR s = s2 order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -952,7 +952,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, s, i2, s2 FROM mytable INNER JOIN othertable ON i = i2 OR SUBSTRING_INDEX(s, ' ', 1) = s2 order by 1, 3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {1, "first row", 3, "first"}, {2, "second row", 2, "second"}, @@ -962,7 +962,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, s, i2, s2 FROM mytable INNER JOIN othertable ON i = i2 OR SUBSTRING_INDEX(s, ' ', 1) = s2 OR SUBSTRING_INDEX(s, ' ', 2) = s2 order by 1, 3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {1, "first row", 3, "first"}, {2, "second row", 2, "second"}, @@ -972,7 +972,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, s, i2, s2 FROM mytable INNER JOIN othertable ON i = i2 OR SUBSTRING_INDEX(s, ' ', 2) = s2 OR SUBSTRING_INDEX(s, ' ', 1) = s2 order by 1, 3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {1, "first row", 3, "first"}, {2, "second row", 2, "second"}, @@ -982,7 +982,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, s, i2, s2 FROM mytable INNER JOIN othertable ON SUBSTRING_INDEX(s, ' ', 2) = s2 OR SUBSTRING_INDEX(s, ' ', 1) = s2 OR i = i2 order by 1, 3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {1, "first row", 3, "first"}, {2, "second row", 2, "second"}, @@ -992,11 +992,11 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 3", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2 ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(1), "third"}, {int64(2), int64(2), "second"}, {int64(3), int64(3), "first"}, @@ -1004,7 +1004,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, i2, s2 FROM mytable as OTHERTABLE INNER JOIN othertable as MYTABLE ON i = i2 ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(1), "third"}, {int64(2), int64(2), "second"}, {int64(3), int64(3), "first"}, @@ -1012,7 +1012,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT s2, i2, i FROM mytable INNER JOIN othertable ON i = i2 ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third", int64(1), int64(1)}, {"second", int64(2), int64(2)}, {"first", int64(3), int64(3)}, @@ -1020,7 +1020,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, i2, s2 FROM othertable JOIN mytable ON i = i2 ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(1), "third"}, {int64(2), int64(2), "second"}, {int64(3), int64(3), "first"}, @@ -1028,7 +1028,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT s2, i2, i FROM othertable JOIN mytable ON i = i2 ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third", int64(1), int64(1)}, {"second", int64(2), int64(2)}, {"first", int64(3), int64(3)}, @@ -1037,7 +1037,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( { Query: "SELECT s FROM mytable INNER JOIN othertable " + "ON substring(s2, 1, 2) != '' AND i = i2 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, {"second row"}, {"third row"}, @@ -1045,7 +1045,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT i FROM mytable NATURAL JOIN tabletest`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, {int64(3)}, @@ -1053,7 +1053,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT i FROM mytable AS t NATURAL JOIN tabletest AS test`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, {int64(3)}, @@ -1061,7 +1061,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT t.i, test.s FROM mytable AS t NATURAL JOIN tabletest AS test`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -1069,7 +1069,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT * FROM tabletest, mytable mt INNER JOIN othertable ot ON mt.i = ot.i2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row", int64(1), "first row", "third", int64(1)}, {int64(1), "first row", int64(2), "second row", "second", int64(2)}, {int64(1), "first row", int64(3), "third row", "first", int64(3)}, @@ -1083,7 +1083,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT * FROM tabletest join mytable mt INNER JOIN othertable ot ON tabletest.i = ot.i2 order by 1,3,6`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row", int64(1), "first row", "third", int64(1)}, {int64(1), "first row", int64(2), "second row", "third", int64(1)}, {int64(1), "first row", int64(3), "third row", "third", int64(1)}, @@ -1097,19 +1097,19 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT * FROM mytable mt INNER JOIN othertable ot ON mt.i = ot.i2 AND mt.i > 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), "third row", "first", int64(3)}, }, }, { Query: `SELECT * FROM othertable ot INNER JOIN mytable mt ON mt.i = ot.i2 AND mt.i > 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", int64(3), int64(3), "third row"}, }, }, { Query: "SELECT i, i2, s2 FROM mytable LEFT JOIN othertable ON i = i2 - 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(2), "second"}, {int64(2), int64(3), "first"}, {int64(3), nil, nil}, @@ -1117,7 +1117,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, i2, s2 FROM mytable RIGHT JOIN othertable ON i = i2 - 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, int64(1), "third"}, {int64(1), int64(2), "second"}, {int64(2), int64(3), "first"}, @@ -1125,7 +1125,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, i2, s2 FROM mytable LEFT OUTER JOIN othertable ON i = i2 - 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(2), "second"}, {int64(2), int64(3), "first"}, {int64(3), nil, nil}, @@ -1133,7 +1133,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i, i2, s2 FROM mytable RIGHT OUTER JOIN othertable ON i = i2 - 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, int64(1), "third"}, {int64(1), int64(2), "second"}, {int64(2), int64(3), "first"}, @@ -1144,7 +1144,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( 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`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, "third", 1, "third"}, {2, 2, "second", 2, "second"}, {3, 3, "first", 3, "first"}, @@ -1155,7 +1155,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( 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`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, "third", 1, "third"}, {2, 2, "second", 2, "second"}, {3, 3, "first", 3, "first"}, @@ -1163,7 +1163,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT one_pk.c5,pk1,pk2 FROM one_pk JOIN two_pk ON pk=pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 0, 0}, {4, 0, 1}, {14, 1, 0}, @@ -1172,7 +1172,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT opk.c5,pk1,pk2 FROM one_pk opk JOIN two_pk tpk ON pk=pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 0, 0}, {4, 0, 1}, {14, 1, 0}, @@ -1181,7 +1181,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT opk.c5,pk1,pk2 FROM one_pk opk JOIN two_pk tpk ON opk.pk=tpk.pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 0, 0}, {4, 0, 1}, {14, 1, 0}, @@ -1190,27 +1190,27 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,pk1,pk2 FROM one_pk JOIN two_pk ON one_pk.c1=two_pk.c1 WHERE pk=1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 1}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk JOIN two_pk ON one_pk.pk=two_pk.pk1 AND one_pk.pk=two_pk.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 1, 1}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk opk JOIN two_pk tpk ON opk.pk=tpk.pk1 AND opk.pk=tpk.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 1, 1}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk opk JOIN two_pk tpk ON pk=tpk.pk1 AND pk=tpk.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 1, 1}, }, @@ -1220,7 +1220,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( LEFT JOIN two_pk tpk ON one_pk.pk=tpk.pk1 AND one_pk.pk-1=tpk.pk2 LEFT JOIN two_pk tpk2 ON tpk2.pk1=TPK.pk2 AND TPK2.pk2=tpk.pk1 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil, nil, nil}, {1, 1, 0, 0, 1}, {2, nil, nil, nil, nil}, @@ -1232,7 +1232,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( JOIN two_pk tpk ON pk=tpk.pk1 AND pk-1=tpk.pk2 JOIN two_pk tpk2 ON pk-1=TPK2.pk1 AND pk=tpk2.pk2 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 0, 0, 1}, }, }, @@ -1241,13 +1241,13 @@ SELECT SUM(x) FROM xy WHERE x IN ( JOIN two_pk tpk ON pk=tpk.pk1 AND pk-1=tpk.pk2 JOIN two_pk tpk2 ON pk-1=TPK2.pk1 AND pk=tpk2.pk2 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 0, 0, 1}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk LEFT JOIN two_pk ON one_pk.pk=two_pk.pk1 AND one_pk.pk=two_pk.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 1, 1}, {2, nil, nil}, @@ -1256,7 +1256,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,pk1,pk2 FROM one_pk RIGHT JOIN two_pk ON one_pk.pk=two_pk.pk1 AND one_pk.pk=two_pk.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, 0, 1}, {nil, 1, 0}, {0, 0, 0}, @@ -1265,13 +1265,13 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT i,pk1,pk2 FROM mytable JOIN two_pk ON i-1=pk1 AND i-2=pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2), 1, 0}, }, }, { Query: "SELECT a.pk1,a.pk2,b.pk1,b.pk2 FROM two_pk a JOIN two_pk b ON a.pk1=b.pk2 AND a.pk2=b.pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0, 0}, {0, 1, 1, 0}, {1, 0, 0, 1}, @@ -1280,7 +1280,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT a.pk1,a.pk2,b.pk1,b.pk2 FROM two_pk a JOIN two_pk b ON a.pk1=b.pk1 AND a.pk2=b.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0, 0}, {0, 1, 0, 1}, {1, 0, 1, 0}, @@ -1289,7 +1289,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT a.pk1,a.pk2,b.pk1,b.pk2 FROM two_pk a, two_pk b WHERE a.pk1=b.pk1 AND a.pk2=b.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0, 0}, {0, 1, 0, 1}, {1, 0, 1, 0}, @@ -1298,7 +1298,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT a.pk1,a.pk2,b.pk1,b.pk2 FROM two_pk a JOIN two_pk b ON b.pk1=a.pk1 AND a.pk2=b.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0, 0}, {0, 1, 0, 1}, {1, 0, 1, 0}, @@ -1307,13 +1307,13 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT a.pk1,a.pk2,b.pk1,b.pk2 FROM two_pk a JOIN two_pk b ON a.pk1+1=b.pk1 AND a.pk2+1=b.pk2 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 1, 1}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk LEFT JOIN two_pk ON pk=pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, @@ -1324,7 +1324,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i2,f FROM one_pk LEFT JOIN niltable ON pk=i2 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil}, {1, nil, nil}, {2, int64(2), nil}, @@ -1333,7 +1333,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i2,f FROM one_pk RIGHT JOIN niltable ON pk=i2 ORDER BY 2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil}, {nil, nil, nil}, {nil, nil, 5.0}, @@ -1344,7 +1344,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i2,f FROM one_pk LEFT JOIN niltable ON pk=i2 AND f IS NOT NULL ORDER BY 1", // AND clause causes right table join miss - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil}, {1, nil, nil}, {2, nil, nil}, @@ -1353,7 +1353,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i2,f FROM one_pk RIGHT JOIN niltable ON pk=i2 and pk > 0 ORDER BY 2,3", // > 0 clause in join condition is ignored - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil}, {nil, nil, nil}, {nil, nil, 5.0}, @@ -1364,14 +1364,14 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE f IS NULL AND pk < 2 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil}, {1, 1, nil}, }, }, { Query: "SELECT pk,i2,f FROM one_pk RIGHT JOIN niltable ON pk=i WHERE f IS NOT NULL ORDER BY 2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, 5.0}, {nil, int64(4), 4.0}, {nil, int64(6), 6.0}, @@ -1379,21 +1379,21 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE pk > 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2, nil}, {3, 3, nil}, }, }, { Query: "SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE c1 > 10 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2, nil}, {3, 3, nil}, }, }, { Query: "SELECT pk,i,f FROM one_pk RIGHT JOIN niltable ON pk=i WHERE f IS NOT NULL ORDER BY 2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, 4, 4.0}, {nil, 5, 5.0}, {nil, 6, 6.0}, @@ -1401,7 +1401,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT t1.i,t1.i2 FROM niltable t1 LEFT JOIN niltable t2 ON t1.i=t2.i2 WHERE t2.f IS NULL ORDER BY 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, 2}, {3, nil}, @@ -1410,39 +1410,39 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE i2 > 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2, nil}, }, }, { Query: "SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE i > 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2, nil}, {3, 3, nil}, }, }, { Query: "SELECT pk,i2,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE i2 IS NOT NULL ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, int64(2), nil}, }, }, { Query: "SELECT pk,i2,f FROM one_pk LEFT JOIN niltable ON pk=i2 WHERE pk > 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, int64(2), nil}, {3, nil, nil}, }, }, { Query: "SELECT pk,i2,f FROM one_pk RIGHT JOIN niltable ON pk=i2 WHERE pk > 0 ORDER BY 2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, int64(2), nil}, }, }, { Query: "SELECT pk,pk1,pk2,one_pk.c1 AS foo, two_pk.c1 AS bar FROM one_pk JOIN two_pk ON one_pk.c1=two_pk.c1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0, 0, 0}, {1, 0, 1, 10, 10}, {2, 1, 0, 20, 20}, @@ -1451,19 +1451,19 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT pk,pk1,pk2,one_pk.c1 AS foo,two_pk.c1 AS bar FROM one_pk JOIN two_pk ON one_pk.c1=two_pk.c1 WHERE one_pk.c1=10", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 1, 10, 10}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk JOIN two_pk ON pk1-pk>0 AND pk2<1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 0}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk JOIN two_pk ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {0, 0, 1}, {0, 1, 0}, @@ -1484,7 +1484,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT a.pk,b.pk FROM one_pk a JOIN one_pk b ON a.pk = b.pk order by a.pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -1493,7 +1493,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT a.pk,b.pk FROM one_pk a, one_pk b WHERE a.pk = b.pk order by a.pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -1502,7 +1502,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT one_pk.pk,b.pk FROM one_pk JOIN one_pk b ON one_pk.pk = b.pk order by one_pk.pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -1511,7 +1511,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "SELECT one_pk.pk,b.pk FROM one_pk, one_pk b WHERE one_pk.pk = b.pk order by one_pk.pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -1520,7 +1520,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: "select sum(x.i) + y.i from mytable as x, mytable as y where x.i = y.i GROUP BY x.i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(2)}, {float64(4)}, {float64(6)}, @@ -1530,7 +1530,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( Query: `SELECT pk,tpk.pk1,tpk2.pk1,tpk.pk2,tpk2.pk2 FROM one_pk LEFT JOIN two_pk tpk ON one_pk.pk=tpk.pk1 AND one_pk.pk=tpk.pk2 JOIN two_pk tpk2 ON tpk2.pk1=TPK.pk2 AND TPK2.pk2=tpk.pk1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, }, @@ -1540,7 +1540,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( RIGHT JOIN niltable nt ON pk=nt.i RIGHT JOIN niltable nt2 ON pk=nt2.i - 1 ORDER BY 3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, 1}, {1, 1, 2}, {2, 2, 3}, @@ -1553,7 +1553,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( Query: `SELECT pk,pk2, (SELECT opk.c5 FROM one_pk opk JOIN two_pk tpk ON pk=pk1 ORDER BY 1 LIMIT 1) FROM one_pk t1, two_pk t2 WHERE pk=1 AND pk2=1 ORDER BY 1,2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 4}, {1, 1, 4}, }, @@ -1562,14 +1562,14 @@ SELECT SUM(x) FROM xy WHERE x IN ( Query: `SELECT pk,pk2, (SELECT opk.c5 FROM one_pk opk JOIN two_pk tpk ON opk.c5=tpk.c5 ORDER BY 1 LIMIT 1) FROM one_pk t1, two_pk t2 WHERE pk=1 AND pk2=1 ORDER BY 1,2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 4}, {1, 1, 4}, }, }, { Query: `SELECT /*+ JOIN_ORDER(mytable, othertable) */ s2, i2, i FROM mytable INNER JOIN (SELECT * FROM othertable) othertable ON i2 = i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third", 1, 1}, {"second", 2, 2}, {"first", 3, 3}, @@ -1581,7 +1581,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( JOIN (SELECT * FROM mytable) righttable ON lefttable.i = righttable.i AND righttable.s = lefttable.s ORDER BY lefttable.i ASC`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1589,7 +1589,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b where a.i = b.i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1597,7 +1597,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b where a.i = b.i OR a.i = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {1, "first row"}, {1, "first row"}, @@ -1607,7 +1607,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b where NOT(a.i = b.i OR a.s = b.i)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {1, "first row"}, {2, "second row"}, @@ -1618,7 +1618,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where NOT(a.i = b.i OR a.s = b.i)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {1, "first row"}, {2, "second row"}, @@ -1629,7 +1629,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b where a.i = b.s OR a.s = b.i IS FALSE`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1643,7 +1643,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where a.i = b.s OR a.s = b.i IS FALSE`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1657,7 +1657,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b where a.i >= b.i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {2, "second row"}, @@ -1668,11 +1668,11 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b where a.i = a.s`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT a.* FROM mytable a, mytable b where a.i in (2, 432, 7)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {2, "second row"}, {2, "second row"}, @@ -1680,13 +1680,13 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b, mytable c, mytable d where a.i = b.i AND b.i = c.i AND c.i = d.i AND c.i = 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, }, }, { Query: `SELECT a.* FROM mytable a, mytable b, mytable c, mytable d where a.i = b.i AND b.i = c.i AND (c.i = d.s OR c.i = 2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {2, "second row"}, {2, "second row"}, @@ -1694,7 +1694,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a, mytable b, mytable c, mytable d where a.i = b.i AND b.s = c.s`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1708,7 +1708,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where a.i = b.i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1716,7 +1716,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where a.i = b.i OR a.i = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {1, "first row"}, {1, "first row"}, @@ -1726,7 +1726,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where a.i >= b.i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {2, "second row"}, @@ -1737,24 +1737,24 @@ SELECT SUM(x) FROM xy WHERE x IN ( }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where a.i = a.s`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b CROSS JOIN mytable c CROSS JOIN mytable d where a.i = b.i AND b.i = c.i AND c.i = d.i AND c.i = 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, }, }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b CROSS JOIN mytable c CROSS JOIN mytable d where a.i = b.i AND b.i = c.i AND (c.i = d.s OR c.i = 2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {2, "second row"}, {2, "second row"}}, }, { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b CROSS JOIN mytable c CROSS JOIN mytable d where a.i = b.i AND b.s = c.s`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1771,13 +1771,13 @@ SELECT SUM(x) FROM xy WHERE x IN ( Query: `SELECT * FROM mytable WHERE ( EXISTS (SELECT * FROM mytable Alias1 JOIN mytable Alias2 WHERE Alias1.i = (mytable.i + 1)) AND EXISTS (SELECT * FROM othertable Alias1 JOIN othertable Alias2 WHERE Alias1.i2 = (mytable.i + 2)));`, - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, { Query: `SELECT * FROM ab WHERE ( EXISTS (SELECT * FROM ab Alias1 JOIN ab Alias2 WHERE Alias1.a = (ab.a + 1)) AND EXISTS (SELECT * FROM xy Alias1 JOIN xy Alias2 WHERE Alias1.x = (ab.a + 2)));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}}, }, @@ -1786,20 +1786,20 @@ SELECT SUM(x) FROM xy WHERE x IN ( Query: `SELECT * FROM mytable Alias0 WHERE ( EXISTS (SELECT * FROM mytable Alias WHERE Alias.i = Alias0.i + 1) AND EXISTS (SELECT * FROM othertable Alias WHERE Alias.i2 = Alias0.i + 2));`, - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, { Query: `SELECT * FROM mytable WHERE i = (SELECT i2 FROM othertable alias1 WHERE i2 = 2) AND i+1 = (SELECT i2 FROM othertable alias1 WHERE i2 = 3);`, - Expected: []sql.Row{{2, "second row"}}, + Expected: []sql.UntypedSqlRow{{2, "second row"}}, }, { Query: `SELECT * FROM mytable WHERE ( EXISTS (SELECT * FROM mytable Alias1 join mytable Alias2 WHERE Alias1.i = (mytable.i + 1)) AND EXISTS (SELECT * FROM othertable Alias1 join othertable Alias2 WHERE Alias1.i2 = (mytable.i + 2)))`, - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, }, }, @@ -1838,7 +1838,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( Query: "with recursive vals as (select 0 as val union all select val + 1 from vals where val < 6), " + "ranges as (select 0 as min, 2 as max union all select min+1, max+1 from ranges where max < 6) " + "select * from vals join ranges on val > min and val < max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 1, 3}, {3, 2, 4}, @@ -1855,19 +1855,19 @@ SELECT SUM(x) FROM xy WHERE x IN ( tests: []JoinOpTests{ { Query: `SELECT * from xy_hasnull where y not in (SELECT b from ab_hasnull)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from xy_hasnull where y not in (SELECT b from ab)`, - Expected: []sql.Row{{1, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}}, }, { Query: `SELECT * from xy where y not in (SELECT b from ab_hasnull)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from xy where null not in (SELECT b from ab)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1879,27 +1879,27 @@ SELECT SUM(x) FROM xy WHERE x IN ( tests: []JoinOpTests{ { Query: `SELECT l.pk1, l.pk2, l.c1, r.pk1, r.pk2, r.c1 FROM two_pk l JOIN two_pk r ON l.pk1=r.pk1 AND l.pk2=r.pk2`, - Expected: []sql.Row{{0, 0, 0, 0, 0, 0}, {0, 1, 10, 0, 1, 10}, {1, 0, 20, 1, 0, 20}, {1, 1, 30, 1, 1, 30}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0, 0, 0, 0}, {0, 1, 10, 0, 1, 10}, {1, 0, 20, 1, 0, 20}, {1, 1, 30, 1, 1, 30}}, }, { Query: `SELECT l.pk, r.pk FROM one_pk_two_idx l JOIN one_pk_two_idx r ON l.v1=r.v1 AND l.v2=r.v2`, - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}}, }, { Query: `SELECT l.pk, r.pk FROM one_pk_three_idx l JOIN one_pk_three_idx r ON l.v1=r.v1 AND l.v2=r.v2 AND l.pk=r.v1`, - Expected: []sql.Row{{0, 0}, {0, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 1}}, }, { Query: `SELECT l.pk1, l.pk2, r.pk FROM two_pk l JOIN one_pk_three_idx r ON l.pk2=r.v1 WHERE l.pk1 = 1`, - Expected: []sql.Row{{1, 0, 0}, {1, 0, 1}, {1, 0, 2}, {1, 0, 3}, {1, 1, 4}}, + Expected: []sql.UntypedSqlRow{{1, 0, 0}, {1, 0, 1}, {1, 0, 2}, {1, 0, 3}, {1, 1, 4}}, }, { Query: `SELECT l.pk1, l.pk2, r.pk FROM two_pk l JOIN one_pk_three_idx r ON l.pk1=r.v1 WHERE l.pk2 = 1`, - Expected: []sql.Row{{0, 1, 0}, {0, 1, 1}, {0, 1, 2}, {0, 1, 3}, {1, 1, 4}}, + Expected: []sql.UntypedSqlRow{{0, 1, 0}, {0, 1, 1}, {0, 1, 2}, {0, 1, 3}, {1, 1, 4}}, }, { Query: `SELECT l.pk, r.pk FROM one_pk_three_idx l JOIN one_pk_three_idx r ON l.pk=r.v1 WHERE l.pk = 1`, - Expected: []sql.Row{{1, 4}}, + Expected: []sql.UntypedSqlRow{{1, 4}}, }, }, }, @@ -1916,19 +1916,19 @@ SELECT SUM(x) FROM xy WHERE x IN ( tests: []JoinOpTests{ { Query: "SELECT * FROM EMPLOYEES e INNER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.ID WHERE e.DEPARTMENT_ID = '102';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"002", "Jane", "102", "102", "Finance"}, }, }, { Query: "SELECT * FROM EMPLOYEES e INNER JOIN DEPARTMENTS d ON e.department_id = d.ID WHERE e.department_id = '102';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"002", "Jane", "102", "102", "Finance"}, }, }, { Query: "SELECT * FROM EMPLOYEES e INNER JOIN DEPARTMENTS d ON e.DePaRtMeNt_Id = d.ID WHERE e.dEpArTmEnT_iD = '102';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"002", "Jane", "102", "102", "Finance"}, }, }, @@ -1939,7 +1939,7 @@ SELECT SUM(x) FROM xy WHERE x IN ( var rangeJoinOpTests = []JoinOpTests{ { Query: "select * from vals join ranges on val between min and max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1959,7 +1959,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals join ranges on val > min and val < max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 1, 3}, {3, 2, 4}, @@ -1969,7 +1969,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals join ranges on min < val and max > val", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 1, 3}, {3, 2, 4}, @@ -1979,7 +1979,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals join ranges on val >= min and val < max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1994,7 +1994,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals join ranges on val > min and val <= max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 0, 2}, {2, 1, 3}, @@ -2009,7 +2009,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals join ranges on val >= min and val <= max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -2029,7 +2029,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals left join ranges on val > min and val < max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil}, {1, 0, 2}, {2, 1, 3}, @@ -2041,7 +2041,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from ranges l join ranges r on l.min > r.min and l.min < r.max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, 0, 2}, {2, 4, 1, 3}, {3, 5, 2, 4}, @@ -2050,7 +2050,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals left join ranges r1 on val > r1.min and val < r1.max left join ranges r2 on r1.min > r2.min and r1.min < r2.max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil, nil, nil}, {1, 0, 2, nil, nil}, {2, 1, 3, 0, 2}, @@ -2062,7 +2062,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from (select vals.val * 2 as val from vals) as newVals join (select ranges.min * 2 as min, ranges.max * 2 as max from ranges) as newRanges on val > min and val < max;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 0, 4}, {4, 2, 6}, {6, 4, 8}, @@ -2073,7 +2073,7 @@ var rangeJoinOpTests = []JoinOpTests{ { // This tests that the RangeHeapJoin node functions correctly even if its rows are iterated over multiple times. Query: "select * from (select 1 union select 2) as l left join (select * from vals join ranges on val > min and val < max) as r on max = max", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 0, 2}, {1, 2, 1, 3}, {1, 3, 2, 4}, @@ -2088,7 +2088,7 @@ var rangeJoinOpTests = []JoinOpTests{ }, { Query: "select * from vals left join (select * from ranges where 0) as newRanges on val > min and val < max;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil}, {1, nil, nil}, {2, nil, nil}, diff --git a/enginetest/join_planning_tests.go b/enginetest/join_planning_tests.go index 5786d0604f..5b0612f5fa 100644 --- a/enginetest/join_planning_tests.go +++ b/enginetest/join_planning_tests.go @@ -35,7 +35,7 @@ type JoinPlanTest struct { types []plan.JoinType indexes []string mergeCompares []string - exp []sql.Row + exp []sql.UntypedSqlRow // order is a list of acceptable join plan orders. // used for statistics test plans that are unlikely but otherwise // cause flakes in CI for lack of seed control. @@ -61,7 +61,7 @@ var JoinPlanningTests = []struct { tests: []JoinPlanTest{ { q: "select * from mydb1.xy, mydb2.xy", - exp: []sql.Row{{0, 0, 1, 1}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 1}}, }, }, }, @@ -74,7 +74,7 @@ var JoinPlanningTests = []struct { { q: "select count(t.*) from information_schema.columns c join information_schema.tables t on `t`.`TABLE_NAME` = `c`.`TABLE_NAME`", types: []plan.JoinType{plan.JoinTypeHash}, - exp: []sql.Row{{734}}, + exp: []sql.UntypedSqlRow{{734}}, }, }, }, @@ -98,75 +98,75 @@ var JoinPlanningTests = []struct { { q: "select u,a,y from uv join (select /*+ JOIN_ORDER(ab, xy) MERGE_JOIN(ab, xy) */ * from ab join xy on y = a) r on u = r.a order by 1", types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {3, 3, 3}}, + exp: []sql.UntypedSqlRow{{0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {3, 3, 3}}, }, { q: "select /*+ JOIN_ORDER(ab, xy) MERGE_JOIN(ab, xy)*/ * from ab join xy on y = a order by 1, 3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 2, 1, 0}, {1, 2, 2, 1}, {2, 2, 0, 2}, {3, 1, 3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2, 1, 0}, {1, 2, 2, 1}, {2, 2, 0, 2}, {3, 1, 3, 3}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs left join xy on y = s order by 1, 3", types: []plan.JoinType{plan.JoinTypeLeftOuterMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {1, 0, 1, 0}, {2, 0, 1, 0}, {4, 4, nil, nil}, {5, 4, nil, nil}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {1, 0, 1, 0}, {2, 0, 1, 0}, {4, 4, nil, nil}, {5, 4, nil, nil}}, }, { // extra join condition does not filter left-only rows q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs left join xy on y = s and y+s = 0 order by 1, 3", types: []plan.JoinType{plan.JoinTypeLeftOuterMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {1, 0, 1, 0}, {2, 0, 1, 0}, {4, 4, nil, nil}, {5, 4, nil, nil}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {1, 0, 1, 0}, {2, 0, 1, 0}, {4, 4, nil, nil}, {5, 4, nil, nil}}, }, { // extra join condition does not filter left-only rows q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs left join xy on y+2 = s and s-y = 2 order by 1, 3", types: []plan.JoinType{plan.JoinTypeLeftOuterMerge}, - exp: []sql.Row{{0, 0, nil, nil}, {1, 0, nil, nil}, {2, 0, nil, nil}, {4, 4, 0, 2}, {5, 4, 0, 2}}, + exp: []sql.UntypedSqlRow{{0, 0, nil, nil}, {1, 0, nil, nil}, {2, 0, nil, nil}, {4, 4, 0, 2}, {5, 4, 0, 2}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = r order by 1, 3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {1, 0, 2, 1}, {2, 0, 0, 2}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {1, 0, 2, 1}, {2, 0, 0, 2}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on r = y order by 1, 3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {1, 0, 2, 1}, {2, 0, 0, 2}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {1, 0, 2, 1}, {2, 0, 0, 2}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = s order by 1, 3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {1, 0, 1, 0}, {2, 0, 1, 0}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {1, 0, 1, 0}, {2, 0, 1, 0}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = s and y = r order by 1, 3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y+2 = s order by 1, 3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{4, 4, 0, 2}, {5, 4, 0, 2}}, + exp: []sql.UntypedSqlRow{{4, 4, 0, 2}, {5, 4, 0, 2}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) */ * from rs join xy on y = s-1 order by 1, 3", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{4, 4, 3, 3}, {5, 4, 3, 3}}, + exp: []sql.UntypedSqlRow{{4, 4, 3, 3}, {5, 4, 3, 3}}, }, // { // TODO: cannot hash join on compound expressions // q: "select /*+ JOIN_ORDER(rs, xy) */ * from rs join xy on y = mod(s,2) order by 1, 3", // types: []plan.JoinType{plan.JoinTypeInner}, - // exp: []sql.Row{{0,0,1,0},{0, 0, 1, 0},{2,0,1,0},{4,4,1,0}}, + // exp: []sql.UntypedSqlRow{{0,0,1,0},{0, 0, 1, 0},{2,0,1,0},{4,4,1,0}}, // }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on 2 = s+y order by 1, 3", types: []plan.JoinType{plan.JoinTypeInner}, - exp: []sql.Row{{0, 0, 0, 2}, {1, 0, 0, 2}, {2, 0, 0, 2}}, + exp: []sql.UntypedSqlRow{{0, 0, 0, 2}, {1, 0, 0, 2}, {2, 0, 0, 2}}, }, { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y > s+2 order by 1, 3", types: []plan.JoinType{plan.JoinTypeInner}, - exp: []sql.Row{{0, 0, 3, 3}, {1, 0, 3, 3}, {2, 0, 3, 3}}, + exp: []sql.UntypedSqlRow{{0, 0, 3, 3}, {1, 0, 3, 3}, {2, 0, 3, 3}}, }, }, }, @@ -184,7 +184,7 @@ var JoinPlanningTests = []struct { { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = s order by 1,3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {0, 0, 4, 0}, {3, 0, 1, 0}, {3, 0, 4, 0}, {4, 8, 0, 8}, {5, 4, 5, 4}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {0, 0, 4, 0}, {3, 0, 1, 0}, {3, 0, 4, 0}, {4, 8, 0, 8}, {5, 4, 5, 4}}, }, }, }, @@ -201,7 +201,7 @@ var JoinPlanningTests = []struct { { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = s order by 1,3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, }, }, @@ -221,13 +221,13 @@ var JoinPlanningTests = []struct { // When primary table is much larger, doing many lookups is expensive: prefer merge q: "select /*+ JOIN_ORDER(rs, xy) */ * from rs join xy on x = r order by 1,3", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{0, 0, 0, 8}, {2, 3, 2, 1}, {3, 0, 3, 7}, {4, 8, 4, 0}, {5, 4, 5, 4}}, + exp: []sql.UntypedSqlRow{{0, 0, 0, 8}, {2, 3, 2, 1}, {3, 0, 3, 7}, {4, 8, 4, 0}, {5, 4, 5, 4}}, }, { // When secondary table is much larger, avoid reading the entire table: prefer lookup q: "select /*+ JOIN_ORDER(xy, rs) */ * from xy join rs on x = r order by 1,3", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{0, 8, 0, 0}, {2, 1, 2, 3}, {3, 7, 3, 0}, {4, 0, 4, 8}, {5, 4, 5, 4}}, + exp: []sql.UntypedSqlRow{{0, 8, 0, 0}, {2, 1, 2, 3}, {3, 7, 3, 0}, {4, 0, 4, 8}, {5, 4, 5, 4}}, }, }, }, @@ -245,7 +245,7 @@ var JoinPlanningTests = []struct { { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = s order by 1,3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {0, 0, 4, 0}, {3, 0, 1, 0}, {3, 0, 4, 0}, {4, 8, 0, 8}, {5, 4, 5, 4}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {0, 0, 4, 0}, {3, 0, 1, 0}, {3, 0, 4, 0}, {4, 8, 0, 8}, {5, 4, 5, 4}}, }, }, }, @@ -259,42 +259,42 @@ var JoinPlanningTests = []struct { q: `SELECT /*+ MERGE_JOIN(l,r) JOIN_ORDER(r,l) */ l.pk1, l.pk2, l.c1, r.pk1, r.pk2, r.c1 FROM two_pk l JOIN two_pk r ON l.pk1=r.pk1 AND l.pk2=r.pk2`, types: []plan.JoinType{plan.JoinTypeMerge}, mergeCompares: []string{"((r.pk1, r.pk2) = (l.pk1, l.pk2))"}, - exp: []sql.Row{{0, 0, 0, 0, 0, 0}, {0, 1, 10, 0, 1, 10}, {1, 0, 20, 1, 0, 20}, {1, 1, 30, 1, 1, 30}}, + exp: []sql.UntypedSqlRow{{0, 0, 0, 0, 0, 0}, {0, 1, 10, 0, 1, 10}, {1, 0, 20, 1, 0, 20}, {1, 1, 30, 1, 1, 30}}, }, { // Prefer a two-column non-unique index over a one-column non-unique index q: `SELECT /*+ MERGE_JOIN(l,r) JOIN_ORDER(r,l) */ l.pk, r.pk FROM one_pk_two_idx l JOIN one_pk_two_idx r ON l.v1=r.v1 AND l.v2=r.v2`, types: []plan.JoinType{plan.JoinTypeMerge}, mergeCompares: []string{"((r.v1, r.v2) = (l.v1, l.v2))"}, - exp: []sql.Row{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}}, + exp: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}}, }, { // Prefer a one-column unique index over a two-column non-unique index q: `SELECT /*+ MERGE_JOIN(l,r) */ l.pk, r.pk FROM one_pk_three_idx l JOIN one_pk_three_idx r ON l.v1=r.v1 AND l.v2=r.v2 AND l.pk=r.v1`, types: []plan.JoinType{plan.JoinTypeMerge}, mergeCompares: []string{"(l.pk = r.v1)"}, - exp: []sql.Row{{0, 0}, {0, 1}}, + exp: []sql.UntypedSqlRow{{0, 0}, {0, 1}}, }, { // Allow an index with a prefix that is determined to be constant. q: `SELECT /*+ MERGE_JOIN(l,r) */ l.pk1, l.pk2, r.pk FROM two_pk l JOIN one_pk_three_idx r ON l.pk2=r.v1 WHERE l.pk1 = 1`, types: []plan.JoinType{plan.JoinTypeMerge}, mergeCompares: []string{"(l.pk2 = r.v1)"}, - exp: []sql.Row{{1, 0, 0}, {1, 0, 1}, {1, 0, 2}, {1, 0, 3}, {1, 1, 4}}, + exp: []sql.UntypedSqlRow{{1, 0, 0}, {1, 0, 1}, {1, 0, 2}, {1, 0, 3}, {1, 1, 4}}, }, { // Allow an index where the final index column is determined to be constant. q: `SELECT /*+ MERGE_JOIN(l,r) */ l.pk1, l.pk2, r.pk FROM two_pk l JOIN one_pk_three_idx r ON l.pk1=r.v1 WHERE l.pk2 = 1`, types: []plan.JoinType{plan.JoinTypeMerge}, mergeCompares: []string{"(r.v1 = l.pk1)"}, - exp: []sql.Row{{0, 1, 0}, {0, 1, 1}, {0, 1, 2}, {0, 1, 3}, {1, 1, 4}}, + exp: []sql.UntypedSqlRow{{0, 1, 0}, {0, 1, 1}, {0, 1, 2}, {0, 1, 3}, {1, 1, 4}}, }, { // Allow an index where the key expression is determined to be constant. q: `SELECT /*+ MERGE_JOIN(l,r) */ l.pk, r.pk FROM one_pk_three_idx l JOIN one_pk_three_idx r ON l.pk=r.v1 WHERE l.pk = 1`, types: []plan.JoinType{plan.JoinTypeMerge}, mergeCompares: []string{"(r.v1 = l.pk)"}, - exp: []sql.Row{{1, 4}}, + exp: []sql.UntypedSqlRow{{1, 4}}, }, }, }, @@ -312,7 +312,7 @@ var JoinPlanningTests = []struct { { q: "select /*+ JOIN_ORDER(rs, xy) MERGE_JOIN(rs, xy) */ * from rs join xy on y = s order by 1,3", types: []plan.JoinType{plan.JoinTypeMerge}, - exp: []sql.Row{{0, 0, 1, 0}, {0, 0, 4, 0}, {3, 0, 1, 0}, {3, 0, 4, 0}, {4, 8, 0, 8}, {5, 4, 5, 4}}, + exp: []sql.UntypedSqlRow{{0, 0, 1, 0}, {0, 0, 4, 0}, {3, 0, 1, 0}, {3, 0, 4, 0}, {4, 8, 0, 8}, {5, 4, 5, 4}}, }, }, }, @@ -336,59 +336,59 @@ var JoinPlanningTests = []struct { { q: "select /*+ LOOKUP_JOIN(ab,xy) JOIN_ORDER(ab,xy) */ * from xy where x = 1 and y in (select a from ab);", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: "select /*+ LOOKUP_JOIN(xy,ab) */ * from xy where x in (select b from ab where a in (0,1,2));", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { // TODO: RIGHT_SEMI_JOIN tuple equalities q: "select /*+ LOOKUP_JOIN(xy,ab) */ * from xy where (x,y) in (select b,a from ab where a in (0,1,2));", types: []plan.JoinType{plan.JoinTypeInner}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { q: "select /*+ LOOKUP_JOIN(xy,ab) */ * from xy where x in (select a from ab);", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{2, 1}, {1, 0}, {0, 2}, {3, 3}}, + exp: []sql.UntypedSqlRow{{2, 1}, {1, 0}, {0, 2}, {3, 3}}, }, { q: "select /*+ LOOKUP_JOIN(xy,ab) */ * from xy where x in (select a from ab where a in (1,2));", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{2, 1}, {1, 0}}, + exp: []sql.UntypedSqlRow{{2, 1}, {1, 0}}, }, { q: "select /*+ LOOKUP_JOIN(xy,ab) */* from xy where x in (select a from ab);", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{2, 1}, {1, 0}, {0, 2}, {3, 3}}, + exp: []sql.UntypedSqlRow{{2, 1}, {1, 0}, {0, 2}, {3, 3}}, }, { q: "select /*+ LOOKUP_JOIN(xy,ab) MERGE_JOIN(ab,uv) JOIN_ORDER(ab,uv,xy) */ * from xy where EXISTS (select 1 from ab join uv on a = u where x = a);", types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeMerge}, - exp: []sql.Row{{2, 1}, {1, 0}, {0, 2}, {3, 3}}, + exp: []sql.UntypedSqlRow{{2, 1}, {1, 0}, {0, 2}, {3, 3}}, }, { q: "select * from xy where y+1 not in (select u from uv);", types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls}, - exp: []sql.Row{{3, 3}}, + exp: []sql.UntypedSqlRow{{3, 3}}, }, { q: "select * from xy where x not in (select u from uv where u not in (select a from ab where a not in (select r from rs where r = 1))) order by 1;", types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls, plan.JoinTypeLeftOuterHashExcludeNulls, plan.JoinTypeLeftOuter}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { q: "select * from xy where x != (select r from rs where r = 1) order by 1;", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { // anti join will be cross-join-right, be passed non-nil parent row q: "select x,a from ab, (select * from xy where x != (select r from rs where r = 1) order by 1) sq where x = 2 and b = 2 order by 1,2;", types: []plan.JoinType{plan.JoinTypeCrossHash, plan.JoinTypeLeftOuter}, - exp: []sql.Row{{2, 0}, {2, 1}, {2, 2}}, + exp: []sql.UntypedSqlRow{{2, 0}, {2, 1}, {2, 2}}, }, { // scope and parent row are non-nil @@ -403,36 +403,36 @@ select * from uv where u > ( ) order by 1;`, types: []plan.JoinType{plan.JoinTypeSemi, plan.JoinTypeCrossHash, plan.JoinTypeLeftOuter}, - exp: []sql.Row{{1, 1}, {2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 2}}, }, { // cast prevents scope merging q: "select * from xy where x != (select cast(r as signed) from rs where r = 1) order by 1;", types: []plan.JoinType{}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { // order by will be discarded q: "select * from xy where x != (select r from rs where r = 1 order by 1) order by 1;", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { // limit prevents scope merging q: "select * from xy where x != (select r from rs where r = 1 limit 1) order by 1;", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { q: "select * from xy where y-1 in (select u from uv) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { // semi join will be right-side, be passed non-nil parent row q: "select x,a from ab, (select * from xy where x = (select r from rs where r = 1) order by 1) sq order by 1,2", types: []plan.JoinType{plan.JoinTypeCrossHash, plan.JoinTypeLookup}, - exp: []sql.Row{{1, 0}, {1, 1}, {1, 2}, {1, 3}}, + exp: []sql.UntypedSqlRow{{1, 0}, {1, 1}, {1, 2}, {1, 3}}, }, // { // scope and parent row are non-nil @@ -448,39 +448,39 @@ order by 1;`, // ) // order by 1;`, // types: []plan.JoinType{plan.JoinTypeCrossHash, plan.JoinTypeLookup}, - // exp: []sql.Row{{2, 2}, {3, 2}}, + // exp: []sql.UntypedSqlRow{{2, 2}, {3, 2}}, // }, { q: "select * from xy where y-1 in (select cast(u as signed) from uv) order by 1;", types: []plan.JoinType{}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { q: "select * from xy where y-1 in (select u from uv order by 1) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {2, 1}, {3, 3}}, }, { q: "select * from xy where y-1 in (select u from uv order by 1 limit 1) order by 1;", types: []plan.JoinType{plan.JoinTypeHash}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { q: "select * from xy where x in (select u from uv join ab on u = a and a = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeLookup}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { // group by doesn't transform q: "select * from xy where y-1 in (select u from uv group by v having v = 2 order by 1) order by 1;", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{{3, 3}}, + exp: []sql.UntypedSqlRow{{3, 3}}, }, { // window doesn't transform q: "select * from xy where y-1 in (select row_number() over (order by v) from uv) order by 1;", types: []plan.JoinType{}, - exp: []sql.Row{{0, 2}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {3, 3}}, }, }, }, @@ -496,22 +496,22 @@ order by 1;`, { q: "select * from xy where y-1 = (select u from uv where u = 4);", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, { q: "select * from xy where x = 1 and x != (select u from uv where u = 4);", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: "select * from xy where x = 1 and x not in (select u from uv where u = 4);", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: "select * from xy where x = 1 and not exists (select u from uv where u = 4);", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, }, }, @@ -541,32 +541,32 @@ FROM uv WHERE y = v and v = 1 GROUP BY v HAVING count(v) >= 1)`, types: []plan.JoinType{}, - exp: []sql.Row{{2}}, + exp: []sql.UntypedSqlRow{{2}}, }, { q: "select * from xy where y-1 = (select u from uv where v = 2 order by 1 limit 1);", types: []plan.JoinType{plan.JoinTypeHash}, - exp: []sql.Row{{3, 3}}, + exp: []sql.UntypedSqlRow{{3, 3}}, }, { q: "select * from xy where x != (select u from uv where v = 2 order by 1 limit 1) order by 1;", types: []plan.JoinType{plan.JoinTypeLeftOuterMerge}, - exp: []sql.Row{{0, 2}, {1, 0}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}, {3, 3}}, }, { q: "select * from xy where x != (select distinct u from uv where v = 2 order by 1 limit 1) order by 1;", types: []plan.JoinType{plan.JoinTypeLeftOuterMerge}, - exp: []sql.Row{{0, 2}, {1, 0}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}, {3, 3}}, }, { q: "select * from xy where (x,y+1) = (select u,v from uv where v = 2 order by 1 limit 1) order by 1;", types: []plan.JoinType{plan.JoinTypeHash}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { q: "select * from xy where x in (select cnt from (select count(u) as cnt from uv group by v having cnt > 0) sq) order by 1,2;", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { q: `SELECT /*+ LOOKUP_JOIN(xy, alias2) LOOKUP_JOIN(xy, alias1) JOIN_ORDER(xy, alias2, alias1) */ * FROM xy WHERE ( @@ -574,7 +574,7 @@ HAVING count(v) >= 1)`, AND EXISTS (SELECT * FROM uv Alias2 WHERE Alias2.u = (xy.x + 2)));`, // These should both be JoinTypeSemiLookup, but for https://github.com/dolthub/go-mysql-server/issues/1893 types: []plan.JoinType{plan.JoinTypeSemiLookup, plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {1, 0}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}}, }, { q: `SELECT * @@ -591,7 +591,7 @@ WHERE EXISTS ( WHERE (U1.s IS NULL AND U0.a = A0.a) );`, types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeLeftOuterHash}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 2}, {2, 2}, {3, 1}, @@ -600,7 +600,7 @@ WHERE EXISTS ( { q: `select * from xy where exists (select * from uv) and x = 0`, types: []plan.JoinType{plan.JoinTypeCross}, - exp: []sql.Row{{0, 2}}, + exp: []sql.UntypedSqlRow{{0, 2}}, }, { q: ` @@ -608,7 +608,7 @@ select x from xy where not exists (select a from ab where a = x and a = 1) and not exists (select a from ab where a = x and a = 2)`, types: []plan.JoinType{plan.JoinTypeLeftOuter, plan.JoinTypeLeftOuter}, - exp: []sql.Row{{0}, {3}}, + exp: []sql.UntypedSqlRow{{0}, {3}}, }, { q: ` @@ -619,7 +619,7 @@ select * from xy where x in ( SELECT u FROM uv, tree where u = s )`, types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeLookup}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: ` @@ -639,12 +639,12 @@ FROM xy ) )`, types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeLookup}, - exp: []sql.Row{{1, 0}, {2, 1}}, + exp: []sql.UntypedSqlRow{{1, 0}, {2, 1}}, }, { q: `select * from xy where exists (select * from uv join ab on u = a)`, types: []plan.JoinType{plan.JoinTypeCross, plan.JoinTypeMerge}, - exp: []sql.Row{{0, 2}, {1, 0}, {2, 1}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}, {2, 1}, {3, 3}}, }, }, }, @@ -660,27 +660,27 @@ FROM xy { q: "select /*+ LOOKUP_JOIN(uv, xy) */ * from xy where y >= (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {3, 3}}, }, { q: "select /*+ LOOKUP_JOIN(uv, xy) */ * from xy where x <= (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {1, 0}, {2, 1}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}, {2, 1}}, }, { q: "select /*+ LOOKUP_JOIN(uv, xy) */ * from xy where x < (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {1, 0}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}}, }, { q: "select /*+ LOOKUP_JOIN(uv,xy) */ * from xy where x > (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{3, 3}}, + exp: []sql.UntypedSqlRow{{3, 3}}, }, { q: "select /*+ LOOKUP_JOIN(uv, uv_1) */ * from uv where v <=> (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{2, 2}, {3, 2}}, }, }, }, @@ -696,22 +696,22 @@ FROM xy { q: "select * from xy where x in (select * from (select 1) r where x = 1);", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: "select * from xy where x in (select 1 where 1 in (select 1 where 1 in (select 1 where x != 2)) and x = 1);", types: []plan.JoinType{plan.JoinTypeSemi, plan.JoinTypeSemi, plan.JoinTypeSemi}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: "select * from xy where x in (select * from (select 1 where 1 in (select 1 where x != 2)) r where x = 1);", types: []plan.JoinType{plan.JoinTypeInner, plan.JoinTypeSemi}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: "select * from xy where x in (select * from (select 1) r);", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: ` @@ -720,7 +720,7 @@ select * from xy where x in ( select * from rec );`, types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{{1, 0}}, + exp: []sql.UntypedSqlRow{{1, 0}}, }, { q: ` @@ -732,37 +732,37 @@ with recursive rec(x) as ( select * from uv where u in (select * from rec);`, types: []plan.JoinType{plan.JoinTypeSemi, plan.JoinTypeHash}, - exp: []sql.Row{{1, 1}}, + exp: []sql.UntypedSqlRow{{1, 1}}, }, { q: "select x+1 as newX, y from xy having y in (select x from xy where newX=1)", types: []plan.JoinType{}, - exp: []sql.Row{{1, 2}}, + exp: []sql.UntypedSqlRow{{1, 2}}, }, { q: "select x, x+1 as newX from xy having x in (select * from (select 1 where 1 in (select 1 where newX != 1)) r where x = 1);", types: []plan.JoinType{}, - exp: []sql.Row{{1, 2}}, + exp: []sql.UntypedSqlRow{{1, 2}}, }, { q: "select * from uv where not exists (select * from xy where u = 1)", - exp: []sql.Row{{0, 1}, {2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{0, 1}, {2, 2}, {3, 2}}, }, { q: "select * from uv where not exists (select * from xy where not exists (select * from xy where u = 1))", - exp: []sql.Row{{1, 1}}, + exp: []sql.UntypedSqlRow{{1, 1}}, }, { q: "select * from uv where not exists (select * from xy where not exists (select * from xy where u = 1 or v = 2))", - exp: []sql.Row{{1, 1}, {2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 2}}, }, { q: "select * from uv where not exists (select * from xy where v = 1 and not exists (select * from xy where u = 1))", - exp: []sql.Row{{1, 1}, {2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 2}}, }, { q: "select * from uv where not exists (select * from xy where not exists (select * from xy where not(u = 1)))", - exp: []sql.Row{{0, 1}, {2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{0, 1}, {2, 2}, {3, 2}}, }, }, }, @@ -783,39 +783,39 @@ where u in (select * from rec);`, { q: "select * from xy where x in (select u from uv join ab on u = a and a = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeInner, plan.JoinTypeLookup}, - exp: []sql.Row{{2, 1}}, + exp: []sql.UntypedSqlRow{{2, 1}}, }, { q: `select x from xy where x in ( select (select u from uv where u = sq.a) from (select a from ab) sq);`, types: []plan.JoinType{}, - exp: []sql.Row{{0}, {1}, {2}, {3}}, + exp: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { q: "select * /*+ LOOKUP_JOIN(xy,uv) */ from xy where y >= (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{{0, 2}, {3, 3}}, + exp: []sql.UntypedSqlRow{{0, 2}, {3, 3}}, }, { q: "select * /*+ LOOKUP_JOIN(xy,uv) */ from xy where x <= (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{{0, 2}, {1, 0}, {2, 1}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}, {2, 1}}, }, { q: "select /*+ LOOKUP_JOIN(xy,uv) */ * from xy where x < (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{0, 2}, {1, 0}}, + exp: []sql.UntypedSqlRow{{0, 2}, {1, 0}}, }, { q: "select /*+ LOOKUP_JOIN(xy,uv) */ * from xy where x > (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{3, 3}}, + exp: []sql.UntypedSqlRow{{3, 3}}, }, { q: "select /*+ LOOKUP_JOIN(uv, uv_1) */ * from uv where v <=> (select u from uv where u = 2) order by 1;", types: []plan.JoinType{plan.JoinTypeSemiLookup}, - exp: []sql.Row{{2, 2}, {3, 2}}, + exp: []sql.UntypedSqlRow{{2, 2}, {3, 2}}, }, }, }, @@ -833,7 +833,7 @@ where u in (select * from rec);`, { q: "select /*+ HASH_JOIN(xy,empty_tbl) */ * from xy where x not in (select a from empty_tbl) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {2, 1}, @@ -843,7 +843,7 @@ where u in (select * from rec);`, { q: "select /*+ HASH_JOIN(xy,uv) */ * from xy where x not in (select v from uv) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {3, 3}, }, @@ -851,7 +851,7 @@ where u in (select * from rec);`, { q: "select /*+ HASH_JOIN(xy,uv) */ * from xy where x not in (select v from uv where u = 2) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {3, 3}, @@ -860,7 +860,7 @@ where u in (select * from rec);`, { q: "select /*+ HASH_JOIN(xy,uv) */ * from xy where x != (select v from uv where u = 2) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {3, 3}, @@ -869,7 +869,7 @@ where u in (select * from rec);`, { q: "select * from xy where not exists (select * from empty_tbl) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {2, 1}, @@ -879,7 +879,7 @@ where u in (select * from rec);`, { q: "select * from xy where not exists (select * from empty_tbl) and x is not null order by x", types: []plan.JoinType{plan.JoinTypeLeftOuter}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {2, 1}, @@ -889,7 +889,7 @@ where u in (select * from rec);`, { q: "select /*+ MERGE_JOIN(xy,uv) */ * from xy where x not in (select u from uv WHERE u = 2) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuterMerge}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {3, 3}, @@ -898,7 +898,7 @@ where u in (select * from rec);`, { q: "select /*+ LEFT_OUTER_LOOKUP_JOIN(xy,uv) */ * from xy where x not in (select u from uv WHERE u = 2) order by x", types: []plan.JoinType{plan.JoinTypeLeftOuterLookup}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {3, 3}, @@ -920,7 +920,7 @@ where u in (select * from rec);`, { q: "select x, u from xy inner join uv on u+1 = x OR u+2 = x OR u+3 = x;", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{{3, 0}, {2, 0}, {1, 0}, {3, 1}, {2, 1}, {3, 2}}, + exp: []sql.UntypedSqlRow{{3, 0}, {2, 0}, {1, 0}, {3, 1}, {2, 1}, {3, 2}}, }, }, }, @@ -1088,7 +1088,7 @@ join uv d on d.u = c.x`, q: "select /*+ LOOKUP_JOIN(lhs, rhs) */ rhs.* from lhs left join rhs on lhs.a = rhs.a and lhs.b = rhs.b and lhs.c = rhs.c", types: []plan.JoinType{plan.JoinTypeLeftOuterLookup}, indexes: []string{"abcd_idx"}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 1, 0}, @@ -1113,7 +1113,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val between min and max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1134,7 +1134,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val > min and val < max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 1, 3}, {3, 2, 4}, @@ -1145,7 +1145,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val >= min and val < max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1161,7 +1161,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val > min and val <= max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 0, 2}, {2, 1, 3}, @@ -1177,7 +1177,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val >= min and val <= max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1198,7 +1198,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val >= min and val <= max where min >= 2", types: []plan.JoinType{plan.JoinTypeInner}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, {3, 2, 4}, {3, 3, 5}, @@ -1213,7 +1213,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val between min and max where min >= 2 and max <= 5", types: []plan.JoinType{plan.JoinTypeInner}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, {3, 2, 4}, {3, 3, 5}, @@ -1225,7 +1225,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join (select max, min from ranges) ranges on val between min and max where min >= 2 and max <= 5", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 4, 2}, {3, 4, 2}, {3, 5, 3}, @@ -1237,7 +1237,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join (select * from ranges where min >= 2 and max <= 5) ranges on val between min and max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, {3, 2, 4}, {3, 3, 5}, @@ -1249,7 +1249,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join (select * from ranges where min >= 2 and max <= 5 limit 1) ranges on val between min and max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, {3, 2, 4}, {4, 2, 4}, @@ -1258,14 +1258,14 @@ join uv d on d.u = c.x`, { q: "select * from vals join (select * from ranges where min >= 2 and max <= 5) ranges on val between min and max limit 1", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, }, }, { q: "select * from vals join (select * from ranges where min >= 2 and max <= 5 order by min, max asc) ranges on val between min and max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, {3, 2, 4}, {3, 3, 5}, @@ -1277,7 +1277,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join (select distinct * from ranges where min >= 2 and max <= 5) ranges on val between min and max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2, 4}, {3, 2, 4}, {4, 2, 4}, @@ -1289,7 +1289,7 @@ join uv d on d.u = c.x`, { q: "select * from vals where exists (select * from vals join ranges on val between min and max where min >= 2 and max <= 5)", types: []plan.JoinType{plan.JoinTypeCross, plan.JoinTypeInner}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {nil}, {0}, {1}, @@ -1303,7 +1303,7 @@ join uv d on d.u = c.x`, { q: "select * from vals where exists (select * from ranges where val between min and max limit 1);", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -1316,7 +1316,7 @@ join uv d on d.u = c.x`, { q: "select * from vals where exists (select distinct val from ranges where val between min and max);", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -1329,7 +1329,7 @@ join uv d on d.u = c.x`, { q: "select * from vals where exists (select * from ranges where val between min and max order by 1) order by 1;", types: []plan.JoinType{plan.JoinTypeSemi}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -1342,7 +1342,7 @@ join uv d on d.u = c.x`, { q: "select * from vals where exists (select * from ranges where val between min and max limit 1 offset 1);", types: []plan.JoinType{}, // This expression cannot be optimized into a join. - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -1353,7 +1353,7 @@ join uv d on d.u = c.x`, { q: "select * from vals where exists (select * from ranges where val between min and max having val > 1);", types: []plan.JoinType{}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2}, {3}, {4}, @@ -1375,7 +1375,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val between min and max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1396,7 +1396,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val > min and val < max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 1, 3}, {3, 2, 4}, @@ -1407,7 +1407,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on min < val and max > val", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 1, 3}, {3, 2, 4}, @@ -1418,7 +1418,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val >= min and val < max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1434,7 +1434,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val > min and val <= max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 0, 2}, {2, 0, 2}, {2, 1, 3}, @@ -1450,7 +1450,7 @@ join uv d on d.u = c.x`, { q: "select * from vals join ranges on val >= min and val <= max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, 0, 2}, {1, 0, 2}, {1, 1, 3}, @@ -1471,7 +1471,7 @@ join uv d on d.u = c.x`, { q: "select * from vals left join ranges on val > min and val < max", types: []plan.JoinType{plan.JoinTypeLeftOuterRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {nil, nil, nil}, {0, nil, nil}, {1, 0, 2}, @@ -1485,7 +1485,7 @@ join uv d on d.u = c.x`, { q: "select * from ranges l join ranges r on l.min > r.min and l.min < r.max", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 3, 0, 2}, {2, 4, 1, 3}, {3, 5, 2, 4}, @@ -1495,7 +1495,7 @@ join uv d on d.u = c.x`, { q: "select * from vals left join ranges r1 on val > r1.min and val < r1.max left join ranges r2 on r1.min > r2.min and r1.min < r2.max", types: []plan.JoinType{plan.JoinTypeLeftOuterRangeHeap, plan.JoinTypeLeftOuterRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {nil, nil, nil, nil, nil}, {0, nil, nil, nil, nil}, {1, 0, 2, nil, nil}, @@ -1509,7 +1509,7 @@ join uv d on d.u = c.x`, { q: "select * from (select vals.val * 2 as val from vals) as newVals join (select ranges.min * 2 as min, ranges.max * 2 as max from ranges) as newRanges on val > min and val < max;", types: []plan.JoinType{plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 0, 4}, {4, 2, 6}, {6, 4, 8}, @@ -1521,7 +1521,7 @@ join uv d on d.u = c.x`, // This tests that the RangeHeapJoin node functions correctly even if its rows are iterated over multiple times. q: "select * from (select 1 union select 2) as l left join (select * from vals join ranges on val > min and val < max) as r on max = max", types: []plan.JoinType{plan.JoinTypeLeftOuter, plan.JoinTypeRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 1, 0, 2}, {1, 2, 1, 3}, {1, 3, 2, 4}, @@ -1537,7 +1537,7 @@ join uv d on d.u = c.x`, { q: "select * from vals left join (select * from ranges where 0) as newRanges on val > min and val < max;", types: []plan.JoinType{plan.JoinTypeLeftOuterRangeHeap}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {nil, nil, nil}, {0, nil, nil}, {1, nil, nil}, @@ -1658,7 +1658,7 @@ join uv d on d.u = c.x`, // Test that a RangeHeapJoin won't be chosen over a LookupJoin with a multiple-column index. q: "select val, min, max, vals.filter1, vals.filter2, vals.filter3 from vals join ranges on val > min and val < max and vals.filter1 = ranges.filter1 and vals.filter2 = ranges.filter2 and vals.filter3 = ranges.filter3", types: []plan.JoinType{plan.JoinTypeLookup}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {1, 0, 2, 0, 0, 0}, {2, 1, 3, 0, 0, 0}, {3, 2, 4, 0, 0, 0}, @@ -1715,7 +1715,7 @@ join uv d on d.u = c.x`, { q: "select * from t1 straight_join t2 on i = j", types: []plan.JoinType{plan.JoinTypeInner}, - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {2, 2}, {3, 3}, }, @@ -1841,7 +1841,7 @@ func evalIndexTest(t *testing.T, harness Harness, e QueryEngine, q string, index }) } -func evalJoinCorrectness(t *testing.T, harness Harness, e QueryEngine, name, q string, exp []sql.Row, skipOld bool) { +func evalJoinCorrectness(t *testing.T, harness Harness, e QueryEngine, name, q string, exp []sql.UntypedSqlRow, skipOld bool) { t.Run(name, func(t *testing.T) { ctx := NewContext(harness) ctx = ctx.WithQuery(q) @@ -1853,7 +1853,7 @@ func evalJoinCorrectness(t *testing.T, harness Harness, e QueryEngine, name, q s require.NoError(t, err, "Unexpected error for query %s: %s", q, err) if exp != nil { - CheckResults(t, harness, exp, nil, sch, rows, q, e) + CheckResults(t, harness, exp, nil, sch, sql.RowsToUntyped(rows), q, e) } require.Equal(t, 0, ctx.Memory.NumCaches()) diff --git a/enginetest/memory_engine_test.go b/enginetest/memory_engine_test.go index 315c1b243b..10d901a051 100644 --- a/enginetest/memory_engine_test.go +++ b/enginetest/memory_engine_test.go @@ -148,7 +148,7 @@ func TestSingleQuery(t *testing.T) { var test queries.QueryTest test = queries.QueryTest{ Query: `select now() = sysdate(), sleep(0.1), now(6) < sysdate(6);`, - Expected: []sql.Row{{true, 0, true}}, + Expected: []sql.UntypedSqlRow{{true, 0, true}}, } fmt.Sprintf("%v", test) @@ -174,7 +174,7 @@ func TestSingleQueryPrepared(t *testing.T) { { // Original Issue: https://github.com/dolthub/dolt/issues/5714 Query: `select 1.0/0.0 from dual`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, @@ -230,7 +230,7 @@ func TestUnbuildableIndex(t *testing.T) { Assertions: []queries.ScriptTestAssertion{ { Query: "SELECT i FROM mytable2 WHERE i IN (SELECT i FROM mytable2) ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -890,14 +890,6 @@ func TestIndexes(t *testing.T) { enginetest.TestIndexes(t, enginetest.NewDefaultMemoryHarness()) } -func TestVectorIndexes(t *testing.T) { - enginetest.TestVectorIndexes(t, enginetest.NewDefaultMemoryHarness()) -} - -func TestVectorFunctions(t *testing.T) { - enginetest.TestVectorFunctions(t, enginetest.NewDefaultMemoryHarness()) -} - func TestIndexPrefix(t *testing.T) { enginetest.TestIndexPrefix(t, enginetest.NewDefaultMemoryHarness()) } diff --git a/enginetest/mysqlshim/database.go b/enginetest/mysqlshim/database.go index f800e6344e..6794e5ed70 100644 --- a/enginetest/mysqlshim/database.go +++ b/enginetest/mysqlshim/database.go @@ -68,7 +68,7 @@ func (d Database) GetTableNames(ctx *sql.Context) ([]string, error) { var tableNames []string var row sql.Row for row, err = rows.Next(ctx); err == nil; row, err = rows.Next(ctx) { - tableNames = append(tableNames, row[0].(string)) + tableNames = append(tableNames, row.GetValue(0).(string)) } if err != io.EOF { return nil, err @@ -129,9 +129,9 @@ func (d Database) GetTriggers(ctx *sql.Context) ([]sql.TriggerDefinition, error) for row, err = rows.Next(ctx); err == nil; row, err = rows.Next(ctx) { // Trigger, Event, Table, Statement, Timing, Created, sql_mode, ... triggers = append(triggers, sql.TriggerDefinition{ - Name: row[0].(string), + Name: row.GetValue(0).(string), CreateStatement: fmt.Sprintf("CREATE TRIGGER `%s` %s %s ON `%s` FOR EACH ROW %s;", - row[0].(string), row[4].(string), row[1].(string), row[2].(string), row[3].(string)), + row.GetValue(0).(string), row.GetValue(4).(string), row.GetValue(1).(string), row.GetValue(2).(string), row.GetValue(3).(string)), CreatedAt: time.Time{}, // TODO: time works in with doltharness }) } @@ -175,14 +175,14 @@ func (d Database) GetStoredProcedures(ctx *sql.Context) ([]sql.StoredProcedureDe storedProcedureDetails := make([]sql.StoredProcedureDetails, len(procedures)) for i, procedure := range procedures { // Db, Name, Type, Definer, Modified, Created, Security_type, Comment, ... - procedureStatement, err := d.shim.QueryRows("", fmt.Sprintf("SHOW CREATE PROCEDURE `%s`.`%s`;", d.name, procedure[1])) + procedureStatement, err := d.shim.QueryRows("", fmt.Sprintf("SHOW CREATE PROCEDURE `%s`.`%s`;", d.name, procedure.GetValue(1))) if err != nil { return nil, err } // Procedure, sql_mode, Create Procedure, ... storedProcedureDetails[i] = sql.StoredProcedureDetails{ - Name: procedureStatement[0][0].(string), - CreateStatement: procedureStatement[0][2].(string), + Name: procedureStatement[0].GetValue(0).(string), + CreateStatement: procedureStatement[0].GetValue(2).(string), CreatedAt: time.Time{}, // these should be added someday ModifiedAt: time.Time{}, } @@ -224,13 +224,13 @@ func (d Database) GetEvents(_ *sql.Context) ([]sql.EventDefinition, interface{}, eventDefinition := make([]sql.EventDefinition, len(events)) for i, event := range events { // Db, Name, Definer, Time Zone, Type, ... - eventStmt, err := d.shim.QueryRows("", fmt.Sprintf("SHOW CREATE EVENT `%s`.`%s`;", d.name, event[1])) + eventStmt, err := d.shim.QueryRows("", fmt.Sprintf("SHOW CREATE EVENT `%s`.`%s`;", d.name, event.GetValue(1))) if err != nil { return nil, nil, err } // Event, sql_mode, time_zone, Create Event, ... eventDefinition[i] = sql.EventDefinition{ - Name: eventStmt[0][0].(string), + Name: eventStmt[0].GetValue(0).(string), // TODO: other fields should be added such as Created, LastAltered } } @@ -301,12 +301,12 @@ func (d Database) AllViews(ctx *sql.Context) ([]sql.ViewDefinition, error) { } viewDefinitions := make([]sql.ViewDefinition, len(views)) for i, view := range views { - viewName := view[2].(string) + viewName := view.GetValue(2).(string) viewStatementRow, err := d.shim.QueryRows("", fmt.Sprintf("SHOW CREATE VIEW `%s`.`%s`;", d.name, viewName)) if err != nil { return nil, err } - createViewStatement := viewStatementRow[0][1].(string) + createViewStatement := viewStatementRow[0].GetValue(1).(string) viewStatement := createViewStatement[strings.Index(createViewStatement, " AS ")+4:] // not the best but works for now viewDefinitions[i] = sql.ViewDefinition{ Name: viewName, diff --git a/enginetest/mysqlshim/iter.go b/enginetest/mysqlshim/iter.go index 0fc7c4664c..e3f22a7c1e 100644 --- a/enginetest/mysqlshim/iter.go +++ b/enginetest/mysqlshim/iter.go @@ -68,7 +68,7 @@ func newMySQLIter(rows *dsql.Rows) mysqlIter { // Next implements the interface sql.RowIter. func (m mysqlIter) Next(ctx *sql.Context) (sql.Row, error) { if m.rows.Next() { - output := make(sql.Row, len(m.types)) + output := make(sql.UntypedSqlRow, len(m.types)) for i, typ := range m.types { output[i] = reflect.New(typ).Interface() } diff --git a/enginetest/mysqlshim/table.go b/enginetest/mysqlshim/table.go index 92c8ac43f8..4769d1e4a5 100644 --- a/enginetest/mysqlshim/table.go +++ b/enginetest/mysqlshim/table.go @@ -144,7 +144,7 @@ func (t Table) Truncate(ctx *sql.Context) (int, error) { if err != nil { return 0, err } - rowCount, _, err := types.Int64.Convert(rows[0][0]) + rowCount, _, err := types.Int64.Convert(rows[0].GetValue(0)) if err != nil { return 0, err } @@ -345,7 +345,7 @@ func (t Table) DataLength(ctx *sql.Context) (uint64, error) { if err != nil { return 0, err } - rowCount, _, err := types.Uint64.Convert(rows[0][0]) + rowCount, _, err := types.Uint64.Convert(rows[0].GetValue(0)) if err != nil { return 0, err } @@ -377,11 +377,11 @@ func (t Table) getCreateTable() (*plan.CreateTable, error) { if err != nil { return nil, err } - if len(rows) == 0 || len(rows[0]) == 0 { + if len(rows) == 0 || rows[0].Len() == 0 { return nil, sql.ErrTableNotFound.New(t.name) } // TODO add catalog - createTableNode, _, err := planbuilder.Parse(sql.NewEmptyContext(), sql.MapCatalog{Tables: map[string]sql.Table{t.name: t}}, rows[0][1].(string)) + createTableNode, _, err := planbuilder.Parse(sql.NewEmptyContext(), sql.MapCatalog{Tables: map[string]sql.Table{t.name: t}}, rows[0].GetValue(1).(string)) if err != nil { return nil, err } diff --git a/enginetest/mysqlshim/table_editor.go b/enginetest/mysqlshim/table_editor.go index 3155af6a3a..808b1a39dc 100644 --- a/enginetest/mysqlshim/table_editor.go +++ b/enginetest/mysqlshim/table_editor.go @@ -67,7 +67,7 @@ func (t *tableEditor) StatementComplete(ctx *sql.Context) error { // Insert implements the interface sql.RowInserter. func (t *tableEditor) Insert(ctx *sql.Context, row sql.Row) error { sb := strings.Builder{} - for i, val := range row { + for i, val := range row.Values() { if i != 0 { sb.WriteByte(',') } @@ -87,11 +87,11 @@ func (t *tableEditor) Update(ctx *sql.Context, old sql.Row, new sql.Row) error { // Delete implements the interface sql.RowDeleter. func (t *tableEditor) Delete(ctx *sql.Context, row sql.Row) error { - if len(row) != len(t.sch) { - return fmt.Errorf("expected `%d` values but got `%d` for DELETE", len(t.sch), len(row)) + if row.Len() != len(t.sch) { + return fmt.Errorf("expected `%d` values but got `%d` for DELETE", len(t.sch), row.Len()) } sb := strings.Builder{} - for i, val := range row { + for i, val := range row.Values() { if i != 0 { sb.WriteString(" AND") } diff --git a/enginetest/queries/alter_table_queries.go b/enginetest/queries/alter_table_queries.go index 86595c543e..ea8e7fe318 100644 --- a/enginetest/queries/alter_table_queries.go +++ b/enginetest/queries/alter_table_queries.go @@ -41,7 +41,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "alter table t add column b varchar(16000), add column c varchar(10)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -61,7 +61,7 @@ var AlterTableScripts = []ScriptTest{ { Query: "SHOW FULL COLUMNS FROM t32", // | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"v4", "int", nil, "YES", "", nil, "", "", ""}, {"v1", "varchar(100)", "utf8mb4_0900_bin", "NO", "", nil, "", "", ""}, @@ -71,7 +71,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW FULL COLUMNS FROM t32_2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"v2", "int", nil, "YES", "", nil, "", "", ""}, {"v3", "int", nil, "YES", "", nil, "", "", ""}, @@ -80,7 +80,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW FULL COLUMNS FROM t32_3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"v5", "int", nil, "YES", "", nil, "", "", ""}, {"v2", "int", nil, "YES", "", nil, "", "", ""}, @@ -113,7 +113,7 @@ var AlterTableScripts = []ScriptTest{ { Query: "SHOW FULL COLUMNS FROM t33", // | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"v4", "int", nil, "YES", "", nil, "", "", ""}, {"v1", "int", nil, "YES", "", nil, "", "", ""}, @@ -121,7 +121,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SELECT * FROM information_schema.CHECK_CONSTRAINTS", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "v1gt0", "(v1 > 0)"}, }, }, @@ -158,23 +158,23 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t alter column col2 DROP DEFAULT;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t;", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT CURRENT_TIMESTAMP(6),\n `col2` varchar(1000),\n PRIMARY KEY (`pk`),\n KEY `idx1` (`pk`,`col1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT CURRENT_TIMESTAMP(6),\n `col2` varchar(1000),\n PRIMARY KEY (`pk`),\n KEY `idx1` (`pk`,`col1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "alter table t alter column col2 SET DEFAULT 'FOO!';", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t;", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT CURRENT_TIMESTAMP(6),\n `col2` varchar(1000) DEFAULT 'FOO!',\n PRIMARY KEY (`pk`),\n KEY `idx1` (`pk`,`col1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT CURRENT_TIMESTAMP(6),\n `col2` varchar(1000) DEFAULT 'FOO!',\n PRIMARY KEY (`pk`),\n KEY `idx1` (`pk`,`col1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "alter table t drop index idx1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -189,7 +189,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t34", - Expected: []sql.Row{{"t34", "CREATE TABLE `t34` (\n" + + Expected: []sql.UntypedSqlRow{{"t34", "CREATE TABLE `t34` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + " PRIMARY KEY (`i`)\n" + @@ -206,7 +206,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t42", - Expected: []sql.Row{{"t42", + Expected: []sql.UntypedSqlRow{{"t42", "CREATE TABLE `t42` (\n" + " `i` bigint NOT NULL,\n" + " `j` int,\n" + @@ -226,7 +226,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t42", - Expected: []sql.Row{{"t42", + Expected: []sql.UntypedSqlRow{{"t42", "CREATE TABLE `t42` (\n" + " `i` bigint NOT NULL,\n" + " `j` int,\n" + @@ -249,7 +249,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t42", - Expected: []sql.Row{{"t42", "CREATE TABLE `t42` (\n" + + Expected: []sql.UntypedSqlRow{{"t42", "CREATE TABLE `t42` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + " PRIMARY KEY (`i`)\n" + @@ -270,7 +270,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t41", - Expected: []sql.Row{{"t41", "CREATE TABLE `t41` (\n" + + Expected: []sql.UntypedSqlRow{{"t41", "CREATE TABLE `t41` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + " `k` int,\n" + @@ -295,7 +295,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "show create table t43", - Expected: []sql.Row{{"t43", "CREATE TABLE `t43` (\n" + + Expected: []sql.UntypedSqlRow{{"t43", "CREATE TABLE `t43` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + " `j` int,\n" + @@ -316,7 +316,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t35", - Expected: []sql.Row{{"t35", "CREATE TABLE `t35` (\n" + + Expected: []sql.UntypedSqlRow{{"t35", "CREATE TABLE `t35` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + " PRIMARY KEY (`i`),\n" + @@ -385,19 +385,19 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t38 ADD UNIQUE u_col1 (col1)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t39 ADD UNIQUE u_col1_col2 (col1, col2)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t38 DROP INDEX u_col1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t38 VALUES (5, 1);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE t38 ADD UNIQUE u_col1 (col1)", @@ -405,7 +405,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "show create table t38;", - Expected: []sql.Row{{"t38", "CREATE TABLE `t38` (\n" + + Expected: []sql.UntypedSqlRow{{"t38", "CREATE TABLE `t38` (\n" + " `pk` int NOT NULL,\n" + " `col1` int,\n" + " PRIMARY KEY (`pk`)\n" + @@ -413,11 +413,11 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "ALTER TABLE t39 DROP INDEX u_col1_col2;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t39 VALUES (10, 1, 1);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE t39 ADD UNIQUE u_col1_col2 (col1, col2)", @@ -425,7 +425,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "show create table t39;", - Expected: []sql.Row{{"t39", "CREATE TABLE `t39` (\n" + + Expected: []sql.UntypedSqlRow{{"t39", "CREATE TABLE `t39` (\n" + " `pk` int NOT NULL,\n" + " `col1` int,\n" + " `col2` int,\n" + @@ -443,11 +443,11 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t40 MODIFY COLUMN pk int", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "describe t40", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"val", "int", "YES", "", nil, ""}, }, @@ -458,22 +458,22 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "drop table t40", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE t40 (pk int AUTO_INCREMENT PRIMARY KEY, val int)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t40 VALUES (NULL, 1)", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 1, }}}, }, { Query: "SELECT * FROM t40", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, }, }, @@ -486,11 +486,11 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 add column j int unique", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", "CREATE TABLE `t1` (\n" + + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + " `j` int,\n" + @@ -542,13 +542,13 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add column c4 int null, add unique index uniq(c4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t", - Expected: []sql.Row{sql.Row{"t", + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n" + " `c1` int NOT NULL,\n" + " `c2` int,\n" + @@ -560,7 +560,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1, nil}, {2, 2, 2, nil}, {3, 3, 3, nil}, @@ -579,7 +579,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE test1", - Expected: []sql.Row{{"test1", + Expected: []sql.UntypedSqlRow{{"test1", "CREATE TABLE `test1` (\n" + " `v1` varchar(200),\n" + " `v2` enum('a'),\n" + @@ -588,7 +588,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test2", - Expected: []sql.Row{{"test2", + Expected: []sql.UntypedSqlRow{{"test2", "CREATE TABLE `test2` (\n" + " `v1` varchar(200),\n" + " `v2` enum('a'),\n" + @@ -597,7 +597,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test3", - Expected: []sql.Row{{"test3", + Expected: []sql.UntypedSqlRow{{"test3", "CREATE TABLE `test3` (\n" + " `v1` varchar(200),\n" + " `v2` enum('a'),\n" + @@ -606,7 +606,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test4", - Expected: []sql.Row{{"test4", + Expected: []sql.UntypedSqlRow{{"test4", "CREATE TABLE `test4` (\n" + " `v1` varchar(200) COLLATE utf8mb4_0900_ai_ci,\n" + " `v2` enum('a') COLLATE utf8mb4_general_ci,\n" + @@ -615,23 +615,23 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "ALTER TABLE test1 COLLATE utf8mb4_general_ci;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test2 COLLATE utf8mb4_0900_bin;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test3 COLLATE utf8mb4_0900_bin;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test4 COLLATE utf8mb4_unicode_ci;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE test1", - Expected: []sql.Row{{"test1", + Expected: []sql.UntypedSqlRow{{"test1", "CREATE TABLE `test1` (\n" + " `v1` varchar(200) COLLATE utf8mb4_0900_bin,\n" + " `v2` enum('a') COLLATE utf8mb4_0900_bin,\n" + @@ -640,7 +640,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test2", - Expected: []sql.Row{{"test2", + Expected: []sql.UntypedSqlRow{{"test2", "CREATE TABLE `test2` (\n" + " `v1` varchar(200) COLLATE utf8mb4_general_ci,\n" + " `v2` enum('a') COLLATE utf8mb4_general_ci,\n" + @@ -649,7 +649,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test3", - Expected: []sql.Row{{"test3", + Expected: []sql.UntypedSqlRow{{"test3", "CREATE TABLE `test3` (\n" + " `v1` varchar(200) COLLATE utf8mb4_general_ci,\n" + " `v2` enum('a') COLLATE utf8mb4_general_ci,\n" + @@ -658,7 +658,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test4", - Expected: []sql.Row{{"test4", + Expected: []sql.UntypedSqlRow{{"test4", "CREATE TABLE `test4` (\n" + " `v1` varchar(200) COLLATE utf8mb4_0900_ai_ci,\n" + " `v2` enum('a') COLLATE utf8mb4_general_ci,\n" + @@ -675,11 +675,11 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test ADD CONSTRAINT cx CHECK (v1 < 100)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test DROP CHECK cx, ADD CHECK (v1 < 50)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO test VALUES (1, 99)", @@ -687,7 +687,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "INSERT INTO test VALUES (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -701,7 +701,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -714,7 +714,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"uk", "int", "NO", "UNI", nil, "auto_increment"}, }, @@ -743,7 +743,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"mk", "int", "NO", "MUL", nil, "auto_increment"}, }, @@ -760,7 +760,7 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -774,12 +774,12 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 rename to abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // reset name Query: "alter table abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl rename to t1", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -789,12 +789,12 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 rename column a to abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // reset name Query: "alter table t1 rename column abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl to a", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -804,7 +804,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 add constraint abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl check (a > 0)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -814,7 +814,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 add constraint abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk0 foreign key(a) references parent(a)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -824,7 +824,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 add constraint abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk1 unique key(a)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -834,7 +834,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 rename index abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk1 to abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk2", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -844,7 +844,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 add column abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk2 int", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -854,7 +854,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 change column abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk2 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk3 int", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -864,7 +864,7 @@ var AlterTableScripts = []ScriptTest{ { // 64 characters Query: "alter table t1 add index abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk3 (b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -900,11 +900,11 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add index idx2 (col1(10));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n" + " `pk` int NOT NULL,\n" + " `col1` varchar(100),\n" + @@ -925,27 +925,27 @@ var AlterTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 drop index MYINDEX1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show indexes from t1;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "alter table t2 rename index myIndex2 to mySecondIndex;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show indexes from t2;", - Expected: []sql.Row{{"t2", 1, "mySecondIndex", 1, "i", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}}, + Expected: []sql.UntypedSqlRow{{"t2", 1, "mySecondIndex", 1, "i", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}}, }, { Query: "alter table t3 rename index MYiNDEX3 to anotherIndex;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show indexes from t3;", - Expected: []sql.Row{{"t3", 1, "anotherIndex", 1, "i", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}}, + Expected: []sql.UntypedSqlRow{{"t3", 1, "anotherIndex", 1, "i", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}}, }, }, }, @@ -973,7 +973,7 @@ var AlterTableScripts = []ScriptTest{ }, { Query: "select j from tt;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -985,7 +985,7 @@ var RenameTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "RENAME TABLE mytable TO newTableName", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT COUNT(*) FROM mytable", @@ -993,7 +993,7 @@ var RenameTableScripts = []ScriptTest{ }, { Query: "SELECT COUNT(*) FROM newTableName", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, }, }, @@ -1002,7 +1002,7 @@ var RenameTableScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "RENAME TABLE othertable to othertable2, newTableName to mytable", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT COUNT(*) FROM othertable", @@ -1014,11 +1014,11 @@ var RenameTableScripts = []ScriptTest{ }, { Query: "SELECT COUNT(*) FROM mytable", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT COUNT(*) FROM othertable2", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, }, }, @@ -1047,11 +1047,11 @@ var AlterTableAddAutoIncrementScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 add column pk int primary key auto_increment;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " `j` int,\n" + @@ -1061,7 +1061,7 @@ var AlterTableAddAutoIncrementScripts = []ScriptTest{ }, { Query: "select pk from t1 order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, @@ -1080,11 +1080,11 @@ var AlterTableAddAutoIncrementScripts = []ScriptTest{ }, { Query: "alter table t1 add column pk int primary key auto_increment first", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " `i` int,\n" + @@ -1094,7 +1094,7 @@ var AlterTableAddAutoIncrementScripts = []ScriptTest{ }, { Query: "select pk from t1 order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, @@ -1109,11 +1109,11 @@ var AlterTableAddAutoIncrementScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 add column j int auto_increment unique", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20),\n" + @@ -1124,7 +1124,7 @@ var AlterTableAddAutoIncrementScripts = []ScriptTest{ }, { Query: "select * from t1 order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a", 1}, {2, "b", 2}, {3, "c", 3}, @@ -1161,7 +1161,7 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " `j` int\n" + @@ -1169,11 +1169,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "alter table t1 add primary key (i, j)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `i` int NOT NULL,\n" + " `j` int NOT NULL,\n" + @@ -1191,7 +1191,7 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t1 order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a1", "a2"}, {"a2", "a3"}, {"a3", "a4"}, @@ -1199,11 +1199,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "alter table t1 drop primary key", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select * from t1 order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a1", "a2"}, {"a2", "a3"}, {"a3", "a4"}, @@ -1211,11 +1211,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "insert into t1 values ('a1', 'a2')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a1", "a2"}, {"a1", "a2"}, {"a2", "a3"}, @@ -1228,15 +1228,15 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "delete from t1 where pk = 'a1' limit 1", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "alter table t1 add primary key (pk, v)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` varchar(20) NOT NULL,\n" + " `v` varchar(20) NOT NULL DEFAULT (concat(`pk`,'-foo')),\n" + @@ -1245,23 +1245,23 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "alter table t1 drop primary key", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "alter table t1 add index myidx (v)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "alter table t1 add primary key (pk)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t1 values ('a4', 'a3')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` varchar(20) NOT NULL,\n" + " `v` varchar(20) NOT NULL DEFAULT (concat(`pk`,'-foo')),\n" + @@ -1271,30 +1271,30 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "select * from t1 where v = 'a3' order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a2", "a3"}, {"a4", "a3"}, }, }, { Query: "alter table t1 drop primary key", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "truncate t1", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "alter table t1 drop index myidx", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "alter table t1 add primary key (pk, v)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t1 values ('a1', 'a2'), ('a2', 'a3'), ('a3', 'a4')", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, }, }, @@ -1307,7 +1307,7 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY (v)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t1 (pk, v) values ('a100', 'a3')", @@ -1315,15 +1315,15 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "alter table t1 drop primary key", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t1 ADD PRIMARY KEY (pk, v), DROP PRIMARY KEY", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` varchar(20) NOT NULL,\n" + " `v` varchar(20) NOT NULL DEFAULT (concat(`pk`,'-foo'))\n" + @@ -1341,7 +1341,7 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE newdb.tab1", - Expected: []sql.Row{{"tab1", + Expected: []sql.UntypedSqlRow{{"tab1", "CREATE TABLE `tab1` (\n" + " `pk` int NOT NULL,\n" + " `c1` int,\n" + @@ -1350,11 +1350,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "alter table newdb.tab1 drop primary key", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE newdb.tab1", - Expected: []sql.Row{{"tab1", + Expected: []sql.UntypedSqlRow{{"tab1", "CREATE TABLE `tab1` (\n" + " `pk` int NOT NULL,\n" + " `c1` int\n" + @@ -1374,11 +1374,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "ALTER TABLE test modify pk int", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE test", - Expected: []sql.Row{{"test", + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n" + " `pk` int NOT NULL,\n" + " `val` int,\n" + @@ -1387,11 +1387,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "ALTER TABLE test drop primary key", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE test", - Expected: []sql.Row{{"test", + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n" + " `pk` int NOT NULL,\n" + " `val` int\n" + @@ -1403,11 +1403,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "INSERT INTO test VALUES (2, 2), (3, 3)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "SELECT * FROM test ORDER BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2}, {3, 3}, }, @@ -1429,15 +1429,15 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ { // Adding a unique index on the pk column allows us to drop the PK Query: "ALTER TABLE t ADD UNIQUE KEY id (id);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t DROP PRIMARY KEY;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t;", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n" + + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n" + " `id` int NOT NULL AUTO_INCREMENT,\n" + " `c1` varchar(255),\n" + " UNIQUE KEY `id` (`id`)\n" + @@ -1445,11 +1445,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "insert into t (c1) values('two');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, "one"}, {2, "two"}}, + Expected: []sql.UntypedSqlRow{{1, "one"}, {2, "two"}}, }, }, }, @@ -1468,15 +1468,15 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ { // Adding an index on the PK columns allows us to drop the PK Query: "ALTER TABLE t ADD KEY id (id);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t DROP PRIMARY KEY;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t;", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n" + + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n" + " `id` int NOT NULL AUTO_INCREMENT,\n" + " `c1` varchar(255),\n" + " KEY `id` (`id`)\n" + @@ -1484,11 +1484,11 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ }, { Query: "insert into t (c1) values('two');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, "one"}, {2, "two"}}, + Expected: []sql.UntypedSqlRow{{1, "one"}, {2, "two"}}, }, }, }, @@ -1506,7 +1506,7 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ { // Adding an index that doesn't start with the auto_increment column doesn't allow us to drop the PK Query: "ALTER TABLE t ADD KEY c1id1 (c1, id1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t DROP PRIMARY KEY;", @@ -1515,23 +1515,23 @@ var AddDropPrimaryKeyScripts = []ScriptTest{ { // Adding a supporting key (i.e the first column is the auto_increment column) allows us to drop the PK Query: "ALTER TABLE t ADD KEY id1c1 (id1, c1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t DROP PRIMARY KEY;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t (id2, c1) values(-2, 'two');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, -1, "one"}, {2, -2, "two"}}, + Expected: []sql.UntypedSqlRow{{1, -1, "one"}, {2, -2, "two"}}, }, { Query: "show create table t;", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n" + + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n" + " `id1` int NOT NULL AUTO_INCREMENT,\n" + " `id2` int NOT NULL,\n" + " `c1` varchar(255),\n" + @@ -1549,13 +1549,13 @@ var AddColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable ADD COLUMN i2 INT COMMENT 'hello' default 42", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable", // | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | // TODO: missing privileges - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "UNI", nil, "", "", "column s"}, {"i2", "int", nil, "YES", "", "42", "", "", "hello"}, @@ -1563,10 +1563,10 @@ var AddColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM mytable ORDER BY i;", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row", int32(42)), - sql.NewRow(int64(2), "second row", int32(42)), - sql.NewRow(int64(3), "third row", int32(42)), + Expected: []sql.UntypedSqlRow{ + {int64(1), "first row", int32(42)}, + {int64(2), "second row", int32(42)}, + {int64(3), "third row", int32(42)}, }, }, }, @@ -1576,11 +1576,11 @@ var AddColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable ADD COLUMN s2 TEXT COMMENT 'hello' AFTER i;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"s2", "text", "utf8mb4_0900_bin", "YES", "", nil, "", "", "hello"}, {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "UNI", nil, "", "", "column s"}, @@ -1589,27 +1589,27 @@ var AddColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM mytable ORDER BY i;", - Expected: []sql.Row{ - sql.NewRow(int64(1), nil, "first row", int32(42)), - sql.NewRow(int64(2), nil, "second row", int32(42)), - sql.NewRow(int64(3), nil, "third row", int32(42)), + Expected: []sql.UntypedSqlRow{ + {int64(1), nil, "first row", int32(42)}, + {int64(2), nil, "second row", int32(42)}, + {int64(3), nil, "third row", int32(42)}, }, }, { Query: "insert into mytable values (4, 's2', 'fourth row', 11);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "update mytable set s2 = 'updated s2' where i2 = 42;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}}, }, { Query: "SELECT * FROM mytable ORDER BY i;", - Expected: []sql.Row{ - sql.NewRow(int64(1), "updated s2", "first row", int32(42)), - sql.NewRow(int64(2), "updated s2", "second row", int32(42)), - sql.NewRow(int64(3), "updated s2", "third row", int32(42)), - sql.NewRow(int64(4), "s2", "fourth row", int32(11)), + Expected: []sql.UntypedSqlRow{ + {int64(1), "updated s2", "first row", int32(42)}, + {int64(2), "updated s2", "second row", int32(42)}, + {int64(3), "updated s2", "third row", int32(42)}, + {int64(4), "s2", "fourth row", int32(11)}, }, }, }, @@ -1619,11 +1619,11 @@ var AddColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable ADD COLUMN s3 VARCHAR(25) COMMENT 'hello' default 'yay' FIRST", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s3", "varchar(25)", "utf8mb4_0900_bin", "YES", "", "'yay'", "", "", "hello"}, {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"s2", "text", "utf8mb4_0900_bin", "YES", "", nil, "", "", "hello"}, @@ -1633,11 +1633,11 @@ var AddColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM mytable ORDER BY i;", - Expected: []sql.Row{ - sql.NewRow("yay", int64(1), "updated s2", "first row", int32(42)), - sql.NewRow("yay", int64(2), "updated s2", "second row", int32(42)), - sql.NewRow("yay", int64(3), "updated s2", "third row", int32(42)), - sql.NewRow("yay", int64(4), "s2", "fourth row", int32(11)), + Expected: []sql.UntypedSqlRow{ + {"yay", int64(1), "updated s2", "first row", int32(42)}, + {"yay", int64(2), "updated s2", "second row", int32(42)}, + {"yay", int64(3), "updated s2", "third row", int32(42)}, + {"yay", int64(4), "s2", "fourth row", int32(11)}, }, }, }, @@ -1647,11 +1647,11 @@ var AddColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable ADD COLUMN s4 VARCHAR(1) not null after s3", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s3", "varchar(25)", "utf8mb4_0900_bin", "YES", "", "'yay'", "", "", "hello"}, {"s4", "varchar(1)", "utf8mb4_0900_bin", "NO", "", nil, "", "", ""}, {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, @@ -1662,11 +1662,11 @@ var AddColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM mytable ORDER BY i;", - Expected: []sql.Row{ - sql.NewRow("yay", "", int64(1), "updated s2", "first row", int32(42)), - sql.NewRow("yay", "", int64(2), "updated s2", "second row", int32(42)), - sql.NewRow("yay", "", int64(3), "updated s2", "third row", int32(42)), - sql.NewRow("yay", "", int64(4), "s2", "fourth row", int32(11)), + Expected: []sql.UntypedSqlRow{ + {"yay", "", int64(1), "updated s2", "first row", int32(42)}, + {"yay", "", int64(2), "updated s2", "second row", int32(42)}, + {"yay", "", int64(3), "updated s2", "third row", int32(42)}, + {"yay", "", int64(4), "s2", "fourth row", int32(11)}, }, }, }, @@ -1676,11 +1676,11 @@ var AddColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable ADD COLUMN s5 VARCHAR(26), ADD COLUMN s6 VARCHAR(27)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s3", "varchar(25)", "utf8mb4_0900_bin", "YES", "", "'yay'", "", "", "hello"}, {"s4", "varchar(1)", "utf8mb4_0900_bin", "NO", "", nil, "", "", ""}, {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, @@ -1693,11 +1693,11 @@ var AddColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM mytable ORDER BY i;", - Expected: []sql.Row{ - sql.NewRow("yay", "", int64(1), "updated s2", "first row", int32(42), nil, nil), - sql.NewRow("yay", "", int64(2), "updated s2", "second row", int32(42), nil, nil), - sql.NewRow("yay", "", int64(3), "updated s2", "third row", int32(42), nil, nil), - sql.NewRow("yay", "", int64(4), "s2", "fourth row", int32(11), nil, nil), + Expected: []sql.UntypedSqlRow{ + {"yay", "", int64(1), "updated s2", "first row", int32(42), nil, nil}, + {"yay", "", int64(2), "updated s2", "second row", int32(42), nil, nil}, + {"yay", "", int64(3), "updated s2", "third row", int32(42), nil, nil}, + {"yay", "", int64(4), "s2", "fourth row", int32(11), nil, nil}, }, }, }, @@ -1760,18 +1760,18 @@ var RenameColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable RENAME COLUMN i TO i2, RENAME COLUMN s TO s2", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i2", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"s2", "varchar(20)", "utf8mb4_0900_bin", "NO", "UNI", nil, "", "", "column s"}, }, }, { Query: "select * from mytable order by i2 limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, }, }, @@ -1789,13 +1789,13 @@ var RenameColumnScripts = []ScriptTest{ }, { Query: "ALTER TABLE mytable RENAME COLUMN s2 TO s3", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `SELECT TC.CONSTRAINT_NAME, CC.CHECK_CLAUSE, TC.ENFORCED FROM information_schema.TABLE_CONSTRAINTS TC, information_schema.CHECK_CONSTRAINTS CC WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'mytable' AND TC.TABLE_SCHEMA = CC.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'CHECK';`, - Expected: []sql.Row{{"test_check", "(i2 < 12345)", "YES"}}, + Expected: []sql.UntypedSqlRow{{"test_check", "(i2 < 12345)", "YES"}}, }, }, }, @@ -1807,44 +1807,44 @@ var ModifyColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable MODIFY COLUMN i bigint NOT NULL COMMENT 'modified'", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 1 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", "modified"}, {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "", nil, "", "", "column s"}, }, }, { Query: "ALTER TABLE mytable MODIFY COLUMN i TINYINT NOT NULL COMMENT 'yes' AFTER s", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 2 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "", nil, "", "", "column s"}, {"i", "tinyint", nil, "NO", "PRI", nil, "", "", "yes"}, }, }, { Query: "ALTER TABLE mytable MODIFY COLUMN i BIGINT NOT NULL COMMENT 'ok' FIRST", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 3 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", "ok"}, {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "", nil, "", "", "column s"}, }, }, { Query: "ALTER TABLE mytable MODIFY COLUMN s VARCHAR(20) NULL COMMENT 'changed'", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 4 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", "ok"}, {"s", "varchar(20)", "utf8mb4_0900_bin", "YES", "", nil, "", "", "changed"}, }, @@ -1857,11 +1857,11 @@ var ModifyColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable MODIFY i BIGINT auto_increment", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 1 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "auto_increment", "", ""}, {"s", "varchar(20)", "utf8mb4_0900_bin", "YES", "", nil, "", "", "changed"}, }, @@ -1882,7 +1882,7 @@ var ModifyColumnScripts = []ScriptTest{ }, { Query: "SHOW FULL COLUMNS FROM mytable /* 2 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "auto_increment", "", ""}, {"s", "varchar(20)", "utf8mb4_0900_bin", "YES", "", nil, "", "", "changed"}, {"i2", "bigint", nil, "YES", "", nil, "", "", ""}, @@ -1890,11 +1890,11 @@ var ModifyColumnScripts = []ScriptTest{ }, { Query: "ALTER TABLE mytable MODIFY COLUMN i BIGINT NOT NULL COMMENT 'ok' FIRST", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 3 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", "ok"}, {"s", "varchar(20)", "utf8mb4_0900_bin", "YES", "", nil, "", "", "changed"}, {"i2", "bigint", nil, "YES", "", nil, "", "", ""}, @@ -1902,11 +1902,11 @@ var ModifyColumnScripts = []ScriptTest{ }, { Query: "ALTER TABLE mytable MODIFY COLUMN s VARCHAR(20) NULL COMMENT 'changed'", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM mytable /* 4 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", "ok"}, {"s", "varchar(20)", "utf8mb4_0900_bin", "YES", "", nil, "", "", "changed"}, {"i2", "bigint", nil, "YES", "", nil, "", "", ""}, @@ -1951,11 +1951,11 @@ var DropColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW FULL COLUMNS FROM mytable", - Expected: []sql.Row{{"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}}, + Expected: []sql.UntypedSqlRow{{"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}}, }, { Query: "select * from mytable order by i", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, }, }, @@ -1968,11 +1968,11 @@ var DropColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t1 DROP COLUMN a", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b", "varchar(10)", "utf8mb4_0900_bin", "YES", "", nil, "", "", ""}, {"c", "bigint", nil, "YES", "", nil, "", "", ""}, {"k", "bigint", nil, "NO", "PRI", nil, "", "", ""}, @@ -1980,7 +1980,7 @@ var DropColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM t1 ORDER BY b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", 2, 3}, {"def", 5, 6}, }, @@ -1996,11 +1996,11 @@ var DropColumnScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t2 DROP COLUMN b", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a", "int", nil, "YES", "", nil, "", "", ""}, {"c", "bigint", nil, "YES", "", nil, "", "", ""}, {"k", "bigint", nil, "NO", "PRI", nil, "", "", ""}, @@ -2008,7 +2008,7 @@ var DropColumnScripts = []ScriptTest{ }, { Query: "SELECT * FROM t2 ORDER BY c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 3}, {4, 5, 6}, }, @@ -2026,12 +2026,12 @@ var DropColumnScripts = []ScriptTest{ { Skip: true, Query: "ALTER TABLE t3 DROP COLUMN a", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Skip: true, Query: "SHOW FULL COLUMNS FROM t3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b", "varchar(10)", "utf8mb4_0900_bin", "YES", "", nil, "", "", ""}, {"c", "bigint", nil, "YES", "", nil, "", "", ""}, }, @@ -2039,7 +2039,7 @@ var DropColumnScripts = []ScriptTest{ { Skip: true, Query: "SELECT * FROM t3 ORDER BY b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", 2}, {"def", 4}, }, @@ -2077,11 +2077,11 @@ var DropColumnKeylessTablesScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t0 DROP COLUMN s", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM t0", - Expected: []sql.Row{{"i", "bigint", nil, "YES", "", nil, "", "", ""}}, + Expected: []sql.UntypedSqlRow{{"i", "bigint", nil, "YES", "", nil, "", "", ""}}, }, }, }, @@ -2094,18 +2094,18 @@ var DropColumnKeylessTablesScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t1 DROP COLUMN a", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b", "varchar(10)", "utf8mb4_0900_bin", "YES", "", nil, "", "", ""}, {"c", "bigint", nil, "YES", "", nil, "", "", ""}, }, }, { Query: "SELECT * FROM t1 ORDER BY b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", 2}, {"def", 5}, }, @@ -2121,18 +2121,18 @@ var DropColumnKeylessTablesScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t2 DROP COLUMN b", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW FULL COLUMNS FROM t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a", "int", nil, "YES", "", nil, "", "", ""}, {"c", "bigint", nil, "YES", "", nil, "", "", ""}, }, }, { Query: "SELECT * FROM t2 ORDER BY c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {4, 5}, }, @@ -2153,7 +2153,7 @@ var DropColumnKeylessTablesScripts = []ScriptTest{ }, { Query: "SELECT * FROM t2 ORDER BY c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {4, 5}, }, diff --git a/enginetest/queries/ansi_quotes_queries.go b/enginetest/queries/ansi_quotes_queries.go index 060160b01a..c713b22eda 100644 --- a/enginetest/queries/ansi_quotes_queries.go +++ b/enginetest/queries/ansi_quotes_queries.go @@ -32,33 +32,33 @@ var AnsiQuotesTests = []ScriptTest{ { // When ANSI_QUOTES mode is enabled, double quotes become identifier quotes. Query: `select "data" from auctions order by "ai" desc;`, - Expected: []sql.Row{{"forty-two"}}, + Expected: []sql.UntypedSqlRow{{"forty-two"}}, }, { // Backtick quotes are always valid as identifier characters, even if // ANSI_QUOTES mode is enabled. Query: "select `data` from auctions order by `ai` desc;", - Expected: []sql.Row{{"forty-two"}}, + Expected: []sql.UntypedSqlRow{{"forty-two"}}, }, { Query: `PREPARE prep1 FROM 'select "data" from auctions order by "ai" desc;'`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 0x0, InsertID: 0x0, Info: plan.PrepareInfo{}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0x0, InsertID: 0x0, Info: plan.PrepareInfo{}}}}, }, { Query: `PREPARE prep2 FROM 'INSERT INTO auctions (id, "data") VALUES (?, ?);';`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 0x0, InsertID: 0x0, Info: plan.PrepareInfo{}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0x0, InsertID: 0x0, Info: plan.PrepareInfo{}}}}, }, { Query: `select "data", '"' from auctions order by "ai";`, - Expected: []sql.Row{{"forty-two", "\""}}, + Expected: []sql.UntypedSqlRow{{"forty-two", "\""}}, }, { Query: `select "data", '\"' from auctions order by "ai";`, - Expected: []sql.Row{{"forty-two", "\""}}, + Expected: []sql.UntypedSqlRow{{"forty-two", "\""}}, }, { Query: `select '''foo''';`, - Expected: []sql.Row{{`'foo'`}}, + Expected: []sql.UntypedSqlRow{{`'foo'`}}, }, { Query: `select """""foo""""";`, @@ -71,15 +71,15 @@ var AnsiQuotesTests = []ScriptTest{ { // Disable ANSI_QUOTES and make sure we can still run queries Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: `select "data" from auctions order by "ai" desc;`, - Expected: []sql.Row{{"data"}}, + Expected: []sql.UntypedSqlRow{{"data"}}, }, { Query: `show tables;`, - Expected: []sql.Row{{"auctions"}}, + Expected: []sql.UntypedSqlRow{{"auctions"}}, }, }, }, @@ -94,15 +94,15 @@ var AnsiQuotesTests = []ScriptTest{ { // Assert that we can create a table using ANSI style quotes Query: `create table "t" ("pk" int primary key, "data" varchar(100));`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `insert into t ("pk", "data") values (1, 'one');`, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: `select "pk", "data" from "t" order by "pk" asc;`, - Expected: []sql.Row{{1, "one"}}, + Expected: []sql.UntypedSqlRow{{1, "one"}}, }, }, }, @@ -115,23 +115,23 @@ var AnsiQuotesTests = []ScriptTest{ { // https://github.com/dolthub/dolt/issues/6305 Query: `CREATE TABLE public_keys (item INTEGER, type CHAR(4), hash INTEGER, "count" INTEGER, "public" VARCHAR(8000))`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `insert into public_keys("item", "type", "hash", "count", "public") values (42, 'type', 1010, 1, 'public');`, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: `create view view1 as select public_keys."public", public_keys."count" from public_keys;`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `show tables;`, - Expected: []sql.Row{{"public_keys"}, {"view1"}}, + Expected: []sql.UntypedSqlRow{{"public_keys"}, {"view1"}}, }, { Query: `show create table view1;`, - Expected: []sql.Row{{"view1", "CREATE VIEW `view1` AS select public_keys.\"public\", public_keys.\"count\" from public_keys", "utf8mb4", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"view1", "CREATE VIEW `view1` AS select public_keys.\"public\", public_keys.\"count\" from public_keys", "utf8mb4", "utf8mb4_0900_bin"}}, }, { // TODO: MySQL returns view definitions according to the session's current @@ -140,38 +140,38 @@ var AnsiQuotesTests = []ScriptTest{ // fix that, remove the test above, and unskip this test. Skip: true, Query: `show create table view1;`, - Expected: []sql.Row{{"view1", "CREATE VIEW `view1` AS select public_keys.`public`, public_keys.`count` from public_keys", "utf8mb4", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"view1", "CREATE VIEW `view1` AS select public_keys.`public`, public_keys.`count` from public_keys", "utf8mb4", "utf8mb4_0900_bin"}}, }, { Query: `select "public", "count" from view1;`, - Expected: []sql.Row{{"public", 1}}, + Expected: []sql.UntypedSqlRow{{"public", 1}}, }, { // Assert that we can load and parse views for information_schema when ANSI_QUOTES mode is enabled Query: `select table_name, view_definition from information_schema.views where table_name='view1';`, - Expected: []sql.Row{{"view1", `select public_keys."public", public_keys."count" from public_keys`}}, + Expected: []sql.UntypedSqlRow{{"view1", `select public_keys."public", public_keys."count" from public_keys`}}, }, { // Disable ANSI_QUOTES mode Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: `show create table view1;`, - Expected: []sql.Row{{"view1", "CREATE VIEW `view1` AS select public_keys.\"public\", public_keys.\"count\" from public_keys", "utf8mb4", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"view1", "CREATE VIEW `view1` AS select public_keys.\"public\", public_keys.\"count\" from public_keys", "utf8mb4", "utf8mb4_0900_bin"}}, }, { Query: `show create table public_keys;`, - Expected: []sql.Row{{"public_keys", "CREATE TABLE `public_keys` (\n `item` int,\n `type` char(4),\n `hash` int,\n `count` int,\n `public` varchar(8000)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"public_keys", "CREATE TABLE `public_keys` (\n `item` int,\n `type` char(4),\n `hash` int,\n `count` int,\n `public` varchar(8000)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "select public, `count` from view1;", - Expected: []sql.Row{{"public", 1}}, + Expected: []sql.UntypedSqlRow{{"public", 1}}, }, { // Assert that we can still load and parse views for information_schema when ANSI_QUOTES mode is disabled Query: `select table_name, view_definition from information_schema.views where table_name='view1';`, - Expected: []sql.Row{{"view1", `select public_keys."public", public_keys."count" from public_keys`}}, + Expected: []sql.UntypedSqlRow{{"view1", `select public_keys."public", public_keys."count" from public_keys`}}, }, }, }, @@ -187,31 +187,31 @@ var AnsiQuotesTests = []ScriptTest{ { // Assert the trigger ran correctly with ANSI_QUOTES mode enabled Query: `select "name", "data" from t order by "pk";`, - Expected: []sql.Row{{"John", "triggered!"}}, + Expected: []sql.UntypedSqlRow{{"John", "triggered!"}}, }, { // Assert that we can read and parse the trigger definition from information_schema Query: `select action_statement from information_schema.triggers where trigger_name='ansi_quotes_trigger';`, - Expected: []sql.Row{{`SET new."data" = 'triggered!'`}}, + Expected: []sql.UntypedSqlRow{{`SET new."data" = 'triggered!'`}}, }, { // Disable ANSI_QUOTES mode Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: `insert into t values (2, 'George', 'SomethingElse');`, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { // Assert the trigger still runs correctly after disabling ANSI_QUOTES mode Query: `select name, data from t where pk=2;`, - Expected: []sql.Row{{"George", "triggered!"}}, + Expected: []sql.UntypedSqlRow{{"George", "triggered!"}}, }, { // Assert that we can still read and parse the trigger definition from information_schema Query: `select action_statement from information_schema.triggers where trigger_name='ansi_quotes_trigger';`, - Expected: []sql.Row{{`SET new."data" = 'triggered!'`}}, + Expected: []sql.UntypedSqlRow{{`SET new."data" = 'triggered!'`}}, }, }, }, @@ -227,29 +227,29 @@ var AnsiQuotesTests = []ScriptTest{ { // Assert the procedure runs correctly with ANSI_QUOTES mode enabled Query: `call AnsiProcedure();`, - Expected: []sql.Row{{"John"}}, + Expected: []sql.UntypedSqlRow{{"John"}}, }, { // Assert that we can read and parse the procedure definition from information_schema Query: `select routine_definition from information_schema.routines where routine_name='AnsiProcedure';`, - Expected: []sql.Row{{`BEGIN SELECT "name" from "t" where "pk" = 1; END`}}, + Expected: []sql.UntypedSqlRow{{`BEGIN SELECT "name" from "t" where "pk" = 1; END`}}, }, { // Disable ANSI_QUOTES mode Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // Assert the procedure runs correctly with ANSI_QUOTES mode disabled Query: `call AnsiProcedure();`, - Expected: []sql.Row{{"John"}}, + Expected: []sql.UntypedSqlRow{{"John"}}, }, { // Assert that we can read and parse the procedure definition from information_schema // TODO: This one doesn't work yet, until we fix information_schema ROUTINES table support for parsing ANSI_QUOTES Skip: true, Query: `select routine_definition from information_schema.routines where routine_name='AnsiProcedure';`, - Expected: []sql.Row{{`BEGIN SELECT "name" from "t" where "pk" = 1; END`}}, + Expected: []sql.UntypedSqlRow{{`BEGIN SELECT "name" from "t" where "pk" = 1; END`}}, }, }, }, @@ -264,22 +264,22 @@ var AnsiQuotesTests = []ScriptTest{ { // Assert the column default is applied correctly when ANSI_QUOTES mode is enabled Query: `select "name", "data" from t where "pk"=1;`, - Expected: []sql.Row{{"John", "John!"}}, + Expected: []sql.UntypedSqlRow{{"John", "John!"}}, }, { // Disable ANSI_QUOTES mode Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // Insert a row with ANSI_QUOTES mode disabled Query: `insert into t (pk, name) values (2, 'Jill');`, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { // Assert the column default was applied correctly when ANSI_QUOTES mode is disabled Query: `select name, data from t where pk=2;`, - Expected: []sql.Row{{"Jill", "Jill!"}}, + Expected: []sql.UntypedSqlRow{{"Jill", "Jill!"}}, }, }, }, @@ -298,7 +298,7 @@ var AnsiQuotesTests = []ScriptTest{ { // Disable ANSI_QUOTES mode Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // Assert the check constraint runs correctly when ANSI_QUOTES mode is disabled @@ -319,20 +319,20 @@ var AnsiQuotesTests = []ScriptTest{ Query: `CREATE EVENT myevent ON SCHEDULE EVERY 1 SECOND STARTS '2037-10-16 23:59:00' DO UPDATE "t" SET "count"="count"+1;`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `SHOW EVENTS;`, - Expected: []sql.Row{{"mydb", "myevent", "`root`@`localhost`", "SYSTEM", "RECURRING", nil, "1", "SECOND", "2037-10-16 23:59:00", nil, "ENABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "myevent", "`root`@`localhost`", "SYSTEM", "RECURRING", nil, "1", "SECOND", "2037-10-16 23:59:00", nil, "ENABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { // Disable ANSI_QUOTES mode and make sure we can still list and run events Query: `SET @@sql_mode='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: `SHOW EVENTS;`, - Expected: []sql.Row{{"mydb", "myevent", "`root`@`localhost`", "SYSTEM", "RECURRING", nil, "1", "SECOND", "2037-10-16 23:59:00", nil, "ENABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "myevent", "`root`@`localhost`", "SYSTEM", "RECURRING", nil, "1", "SECOND", "2037-10-16 23:59:00", nil, "ENABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, }, }, diff --git a/enginetest/queries/blob_queries.go b/enginetest/queries/blob_queries.go index bc55701a87..1e4a99a4fe 100644 --- a/enginetest/queries/blob_queries.go +++ b/enginetest/queries/blob_queries.go @@ -22,7 +22,7 @@ import ( var BlobQueries = []QueryTest{ { Query: "select i, hex(b) from blobt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "666972737420726F77"}, {2, "7365636F6E6420726F77"}, {3, "746869726420726F77"}, @@ -30,13 +30,13 @@ var BlobQueries = []QueryTest{ }, { Query: "select * from blobt where i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, []byte("first row")}, }, }, { Query: "select * from blobt order by b desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, []byte("third row")}, {2, []byte("second row")}, {1, []byte("first row")}, @@ -44,14 +44,14 @@ var BlobQueries = []QueryTest{ }, { Query: "select * from blobt where b <= 'second row'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, []byte("second row")}, {1, []byte("first row")}, }, }, { Query: "select i, hex(t) from textt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "666972737420726F77"}, {2, "7365636F6E6420726F77"}, {3, "746869726420726F77"}, @@ -59,13 +59,13 @@ var BlobQueries = []QueryTest{ }, { Query: "select * from textt where i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, }, }, { Query: "select * from textt order by t desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, {2, "second row"}, {1, "first row"}, @@ -73,7 +73,7 @@ var BlobQueries = []QueryTest{ }, { Query: "select * from textt where t <= 'second row'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, }, @@ -83,30 +83,30 @@ var BlobQueries = []QueryTest{ var BlobWriteQueries = []WriteQueryTest{ { WriteQuery: "insert into blobt values (4, '100000000')", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "select * from blobt where i = 4", - ExpectedSelect: []sql.Row{{4, []byte("100000000")}}, + ExpectedSelect: []sql.UntypedSqlRow{{4, []byte("100000000")}}, }, { WriteQuery: "update blobt set b = '100000000' where i = 1", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "select * from blobt where i = 1", - ExpectedSelect: []sql.Row{{1, []byte("100000000")}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, []byte("100000000")}}, }, { WriteQuery: "delete from blobt where i = 1", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "select * from blobt", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {2, []byte("second row")}, {3, []byte("third row")}, }, }, { WriteQuery: "alter table blobt rename column b to v, add v1 int", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "select * from blobt", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, []byte("first row"), nil}, {2, []byte("second row"), nil}, {3, []byte("third row"), nil}, @@ -114,9 +114,9 @@ var BlobWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE blobt ADD COLUMN v2 BIGINT DEFAULT (i + 2) AFTER b", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "select * from blobt", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, []byte("first row"), 3}, {2, []byte("second row"), 4}, {3, []byte("third row"), 5}, @@ -124,30 +124,30 @@ var BlobWriteQueries = []WriteQueryTest{ }, { WriteQuery: "insert into textt values (4, '100000000')", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "select * from textt where i = 4", - ExpectedSelect: []sql.Row{{4, "100000000"}}, + ExpectedSelect: []sql.UntypedSqlRow{{4, "100000000"}}, }, { WriteQuery: "update textt set t = '100000000' where i = 1", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "select * from textt where i = 1", - ExpectedSelect: []sql.Row{{1, "100000000"}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, "100000000"}}, }, { WriteQuery: "delete from textt where i = 1", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "select * from textt", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {2, "second row"}, {3, "third row"}, }, }, { WriteQuery: "alter table textt rename column t to v, add v1 int", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "select * from textt", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row", nil}, {2, "second row", nil}, {3, "third row", nil}, @@ -155,9 +155,9 @@ var BlobWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE textt ADD COLUMN v2 BIGINT DEFAULT (i + 2) AFTER t", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "select * from textt", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row", 3}, {2, "second row", 4}, {3, "third row", 5}, @@ -247,7 +247,7 @@ var BlobErrors = []QueryErrorTest{ var BlobUnsupported = []QueryTest{ { Query: "select convert(`b` using utf8) from blobt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, diff --git a/enginetest/queries/call_asof_queries.go b/enginetest/queries/call_asof_queries.go index a3c1247cb2..d63b6049e2 100644 --- a/enginetest/queries/call_asof_queries.go +++ b/enginetest/queries/call_asof_queries.go @@ -29,7 +29,7 @@ var CallAsofScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 3", "1"}, {int64(2), "second row, 3", "2"}, {int64(3), "third row, 3", "3"}, @@ -37,7 +37,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p1a();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 1"}, {int64(2), "second row, 1"}, {int64(3), "third row, 1"}, @@ -45,7 +45,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p1b();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, @@ -53,7 +53,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p2();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 3", "1"}, {int64(2), "second row, 3", "2"}, {int64(3), "third row, 3", "3"}, @@ -61,7 +61,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p2a();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, @@ -69,7 +69,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p1() AS OF '2019-01-01';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 1"}, {int64(2), "second row, 1"}, {int64(3), "third row, 1"}, @@ -77,7 +77,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p1a() AS OF '2019-01-03';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 1"}, {int64(2), "second row, 1"}, {int64(3), "third row, 1"}, @@ -85,7 +85,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p1b() AS OF '2019-01-03';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, @@ -93,7 +93,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p2() AS OF '2019-01-01';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 1"}, {int64(2), "second row, 1"}, {int64(3), "third row, 1"}, @@ -101,7 +101,7 @@ var CallAsofScripts = []ScriptTest{ }, { Query: "CALL p2a() AS OF '2019-01-03';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, diff --git a/enginetest/queries/charset_collation_engine.go b/enginetest/queries/charset_collation_engine.go index e409a0cffc..394de9a6f0 100644 --- a/enginetest/queries/charset_collation_engine.go +++ b/enginetest/queries/charset_collation_engine.go @@ -35,7 +35,7 @@ type CharsetCollationEngineTest struct { // `Error` and `ErrKind` are nil. type CharsetCollationEngineTestQuery struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow Error bool ErrKind *errors.Kind } @@ -48,11 +48,11 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "CREATE TABLE test1 (v1 VARCHAR(255) COLLATE utf16_unicode_ci, v2 VARCHAR(255) COLLATE UTF16_UNICODE_CI);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE test2 (v1 VARCHAR(255) CHARACTER SET utf16, v2 VARCHAR(255) CHARACTER SET UTF16);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -64,19 +64,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "INSERT INTO test VALUES ('hey');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO test VALUES (_utf16'\x00h\x00i');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO test VALUES (_utf8mb4'\x68\x65\x6c\x6c\x6f');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM test ORDER BY 1;", - Expected: []sql.Row{{"hello"}, {"hey"}, {"hi"}}, + Expected: []sql.UntypedSqlRow{{"hello"}, {"hey"}, {"hi"}}, }, }, }, @@ -89,19 +89,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "INSERT INTO test1 VALUES ('HEY2'), ('hey1');", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO test2 VALUES ('HEY2'), ('hey1');", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "SELECT * FROM test1 ORDER BY 1;", - Expected: []sql.Row{{"HEY2"}, {"hey1"}}, + Expected: []sql.UntypedSqlRow{{"HEY2"}, {"hey1"}}, }, { Query: "SELECT * FROM test2 ORDER BY 1;", - Expected: []sql.Row{{"hey1"}, {"HEY2"}}, + Expected: []sql.UntypedSqlRow{{"hey1"}, {"HEY2"}}, }, }, }, @@ -131,7 +131,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ }, { Query: "CREATE TABLE test3 (pk BIGINT PRIMARY KEY, v1 VARCHAR(255) CHARACTER SET utf8mb4);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test3 MODIFY COLUMN v1 VARCHAR(255) COLLATE utf8mb4_sr_latn_0900_as_cs;", @@ -150,25 +150,25 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT v1, pk FROM test1 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test1 ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test2 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test2 ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", int64(2)}, {"AbC", int64(4)}, {"aBc", int64(3)}, {"abc", int64(1)}, }, }, @@ -185,71 +185,71 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT v1, pk FROM test1 WHERE v1 > 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row(nil), + Expected: []sql.UntypedSqlRow(nil), }, { Query: "SELECT v1, pk FROM test1 WHERE v1 >= 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 = 'ABC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 BETWEEN 'ABC' AND 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 IN ('abc') ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 > 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"aBc", int64(3)}, {"abc", int64(1)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 >= 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"AbC", int64(4)}, {"aBc", int64(3)}, {"abc", int64(1)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", int64(2)}, {"AbC", int64(4)}, {"aBc", int64(3)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 = 'ABC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", int64(2)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 BETWEEN 'ABC' AND 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", int64(2)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 IN ('abc') ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, }, }, @@ -269,85 +269,85 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT v1, pk FROM test1 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "ALTER TABLE test2 MODIFY COLUMN v1 VARCHAR(100);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test3 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v1, pk FROM test4 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SHOW CREATE TABLE test1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test1", "CREATE TABLE `test1` (\n `pk` bigint NOT NULL,\n `v1` varchar(255),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf16 COLLATE=utf16_unicode_ci"}, }, }, { Query: "SHOW CREATE TABLE test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test2", "CREATE TABLE `test2` (\n `pk` bigint NOT NULL,\n `v1` varchar(100),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"}, }, }, { Query: "SHOW CREATE TABLE test3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test3", "CREATE TABLE `test3` (\n `pk` bigint NOT NULL,\n `v1` varchar(255),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"}, }, }, { Query: "SHOW CREATE TABLE test4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test4", "CREATE TABLE `test4` (\n `pk` bigint NOT NULL,\n `v1` varchar(255) COLLATE utf8mb4_unicode_ci\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, { Query: "ALTER TABLE test3 ADD COLUMN v2 VARCHAR(255);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "SHOW CREATE TABLE test3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test3", "CREATE TABLE `test3` (\n `pk` bigint NOT NULL,\n `v1` varchar(255),\n `v2` varchar(255),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"}, }, }, { Query: "ALTER TABLE test2 CHANGE COLUMN v1 v1 VARCHAR(220);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "SHOW CREATE TABLE test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test2", "CREATE TABLE `test2` (\n `pk` bigint NOT NULL,\n `v1` varchar(220),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"}, }, }, @@ -357,37 +357,37 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ }, { Query: "ALTER TABLE test2 COLLATE utf8mb4_bin;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "ALTER TABLE test2 ADD COLUMN v2 VARCHAR(255);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "REPLACE INTO test2 VALUES (1, 'abc', 'abc'), (2, 'ABC', 'ABC'), (3, 'aBc', 'aBc'), (4, 'AbC', 'AbC');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(8)}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", int64(1)}, {"ABC", int64(2)}, {"aBc", int64(3)}, {"AbC", int64(4)}, }, }, { Query: "SELECT v2, pk FROM test2 WHERE v2 <= 'aBc' ORDER BY v2, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", int64(2)}, {"AbC", int64(4)}, {"aBc", int64(3)}, }, }, { Query: "SHOW CREATE TABLE test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test2", "CREATE TABLE `test2` (\n `pk` bigint NOT NULL,\n `v1` varchar(220) COLLATE utf8mb4_unicode_ci,\n `v2` varchar(255),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin"}, }, }, @@ -403,7 +403,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT * FROM test ORDER BY v1 COLLATE utf8mb4_bin ASC;", - Expected: []sql.Row{{int64(1), "a"}, {int64(2), "b"}}, + Expected: []sql.UntypedSqlRow{{int64(1), "a"}, {int64(2), "b"}}, }, { Query: "SELECT * FROM test ORDER BY v1 COLLATE utf8mb3_bin ASC;", @@ -411,7 +411,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ }, { Query: "SELECT 'a' COLLATE utf8mb3_bin;", - Expected: []sql.Row{{"a"}}, + Expected: []sql.UntypedSqlRow{{"a"}}, }, { Query: "SELECT 'a' COLLATE utf8mb4_bin;", @@ -457,108 +457,108 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "select @@session.character_set_connection, @@session.collation_connection;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "set @@session.character_set_connection = 'latin1';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@session.character_set_connection, @@session.collation_connection;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_swedish_ci"}, }, }, { Query: "set @@session.collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@session.character_set_connection, @@session.collation_connection;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "select @@global.character_set_connection, @@global.collation_connection;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "set @@global.character_set_connection = 'latin1';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@global.character_set_connection, @@global.collation_connection;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_swedish_ci"}, }, }, { Query: "set @@global.collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@global.character_set_connection, @@global.collation_connection;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "select @@session.character_set_server, @@session.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "set @@session.character_set_server = 'latin1';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@session.character_set_server, @@session.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_swedish_ci"}, }, }, { Query: "set @@session.collation_server = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@session.character_set_server, @@session.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "select @@global.character_set_server, @@global.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "set @@global.character_set_server = 'latin1';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@global.character_set_server, @@global.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_swedish_ci"}, }, }, { Query: "set @@global.collation_server = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@global.character_set_server, @@global.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, @@ -573,7 +573,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "INSERT INTO test1 VALUES (1, 'ABC');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -583,25 +583,25 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ }, { Query: "INSERT INTO test1 VALUES (2, _utf16'\x00d\x00e\x00f' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "INSERT INTO test2 VALUES (2, _utf16'\x00d\x00e\x00f' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "SELECT * FROM test1 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), uint16(1)}, {int64(2), uint16(2)}, }, }, { Query: "SELECT * FROM test2 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2), uint16(2)}, }, }, @@ -616,7 +616,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "INSERT INTO test1 VALUES (1, 'A');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -626,25 +626,25 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ }, { Query: "INSERT INTO test1 VALUES (2, _utf16'\x00b\x00,\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "INSERT INTO test2 VALUES (2, _utf16'\x00b\x00,\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "SELECT * FROM test1 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), uint64(1)}, {int64(2), uint64(6)}, }, }, { Query: "SELECT * FROM test2 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2), uint64(6)}, }, }, @@ -660,59 +660,59 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'A%';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE 'A%';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE '%C';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE '%C';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, }, }, { Query: "SET collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC' COLLATE utf8mb4_0900_ai_ci;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, }, }, @@ -726,77 +726,77 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT 'abc' LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_bin LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_bin;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_ai_ci LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_ai_ci;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SET collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT 'abc' LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_ai_ci LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_ai_ci;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_bin LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_bin;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT _utf8mb4'abc' LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT 'abc' LIKE _utf8mb4'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, @@ -809,7 +809,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ /*{ // collation with the lowest coercibility is used Query: "SELECT STRCMP(_utf8mb4'A' COLLATE utf8mb4_0900_ai_ci, 'a')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int(0)}, }, }, @@ -826,7 +826,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ { // same coercibility, one unicode and one not unicode Query: "SELECT STRCMP(_utf8mb4'A' COLLATE utf8mb4_0900_ai_ci, _latin1'b' COLLATE latin1_general_cs)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int(-1)}, }, }, @@ -837,19 +837,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT LENGTH(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(6)}, }, }, { Query: "SELECT LENGTH(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(3)}, }, }, { Query: "SELECT LENGTH(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(6)}, }, }, @@ -860,19 +860,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT CHAR_LENGTH(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(3)}, }, }, { Query: "SELECT CHAR_LENGTH(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(3)}, }, }, { Query: "SELECT CHAR_LENGTH(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(6)}, }, }, @@ -883,19 +883,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT UPPER(_utf16'\x00a\x00B\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC"}, }, }, { Query: "SELECT UPPER(_utf8mb4'aBc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC"}, }, }, { Query: "SELECT UPPER(_utf8mb4'\x00a\x00B\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00A\x00B\x00C"}, }, }, @@ -906,19 +906,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT LOWER(_utf16'\x00A\x00b\x00C' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT LOWER(_utf8mb4'AbC' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT LOWER(_utf8mb4'\x00A\x00b\x00C' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, @@ -929,43 +929,43 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT RPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, 'z');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT RPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 9, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00czzz"}, }, }, @@ -976,43 +976,43 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT LPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, 'z');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT LPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 9, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzz\x00a\x00b\x00c"}, }, }, @@ -1023,19 +1023,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT HEX(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"006100620063"}, }, }, { Query: "SELECT HEX(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"616263"}, }, }, { Query: "SELECT HEX(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"006100620063"}, }, }, @@ -1046,13 +1046,13 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT UNHEX(_utf16'\x006\x001\x006\x002\x006\x003' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("abc")}, }, }, { Query: "SELECT UNHEX(_utf8mb4'616263' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("abc")}, }, }, @@ -1063,19 +1063,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT SUBSTRING(_utf16'\x00a\x00b\x00c\x00d' COLLATE utf16_unicode_ci, 2, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bc"}, }, }, { Query: "SELECT SUBSTRING(_utf8mb4'abcd' COLLATE utf8mb4_0900_bin, 2, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bc"}, }, }, { Query: "SELECT SUBSTRING(_utf8mb4'\x00a\x00b\x00c\x00d' COLLATE utf8mb4_0900_bin, 2, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a\x00"}, }, }, @@ -1086,19 +1086,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT TO_BASE64(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"AGEAYgBj"}, }, }, { Query: "SELECT TO_BASE64(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"YWJj"}, }, }, { Query: "SELECT TO_BASE64(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"AGEAYgBj"}, }, }, @@ -1109,13 +1109,13 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT FROM_BASE64(_utf16'\x00Y\x00W\x00J\x00j' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("abc")}, }, }, { Query: "SELECT FROM_BASE64(_utf8mb4'YWJj' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("abc")}, }, }, @@ -1126,19 +1126,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT TRIM(_utf16'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT TRIM(_utf8mb4' abc ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT TRIM(_utf8mb4'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c\x00"}, }, }, @@ -1149,19 +1149,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT RTRIM(_utf16'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {" abc"}, }, }, { Query: "SELECT RTRIM(_utf8mb4' abc ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {" abc"}, }, }, { Query: "SELECT RTRIM(_utf8mb4'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c\x00"}, }, }, @@ -1172,19 +1172,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT LTRIM(_utf16'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc "}, }, }, { Query: "SELECT LTRIM(_utf8mb4' abc ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc "}, }, }, { Query: "SELECT LTRIM(_utf8mb4'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c\x00 "}, }, }, @@ -1195,19 +1195,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT BINARY(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("\x00a\x00b\x00c")}, }, }, { Query: "SELECT BINARY(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("abc")}, }, }, { Query: "SELECT BINARY(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("\x00a\x00b\x00c")}, }, }, @@ -1218,19 +1218,19 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ Queries: []CharsetCollationEngineTestQuery{ { Query: "SELECT CAST(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci AS BINARY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("\x00a\x00b\x00c")}, }, }, { Query: "SELECT CAST(_utf8mb4'abc' COLLATE utf8mb4_0900_bin AS BINARY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("abc")}, }, }, { Query: "SELECT CAST(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin AS BINARY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("\x00a\x00b\x00c")}, }, }, @@ -1244,7 +1244,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{ T.TABLE_SCHEMA AS 'database', T.TABLE_CATALOG AS 'catalog', 0 AS isView FROM INFORMATION_SCHEMA.TABLES AS T WHERE T.TABLE_CATALOG = 'def' AND UPPER(T.TABLE_TYPE) = 'BASE TABLE' ORDER BY T.TABLE_NAME;`, - Expected: []sql.Row(nil), + Expected: []sql.UntypedSqlRow(nil), }, }, }, diff --git a/enginetest/queries/charset_collation_wire.go b/enginetest/queries/charset_collation_wire.go index 9a2351feee..49305eaa45 100644 --- a/enginetest/queries/charset_collation_wire.go +++ b/enginetest/queries/charset_collation_wire.go @@ -29,7 +29,7 @@ type CharsetCollationWireTest struct { // CharsetCollationWireTestQuery is a query within a CharsetCollationWireTest. type CharsetCollationWireTestQuery struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow Error bool // ExpectedCollations is an optional field, and when populated the test framework will assert that // the MySQL field metadata has these expected collation IDs. @@ -44,11 +44,11 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "CREATE TABLE test1 (v1 VARCHAR(255) COLLATE utf16_unicode_ci, v2 VARCHAR(255) COLLATE UTF16_UNICODE_CI);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE test2 (v1 VARCHAR(255) CHARACTER SET utf16, v2 VARCHAR(255) CHARACTER SET UTF16);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -61,19 +61,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "INSERT INTO test VALUES ('hey');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO test VALUES (_utf16'\x00h\x00i');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO test VALUES (_utf8mb4'\x68\x65\x6c\x6c\x6f');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM test ORDER BY 1;", - Expected: []sql.Row{{"\x00h\x00e\x00l\x00l\x00o"}, {"\x00h\x00e\x00y"}, {"\x00h\x00i"}}, + Expected: []sql.UntypedSqlRow{{"\x00h\x00e\x00l\x00l\x00o"}, {"\x00h\x00e\x00y"}, {"\x00h\x00i"}}, }, }, }, @@ -87,19 +87,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "INSERT INTO test1 VALUES ('HEY2'), ('hey1');", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO test2 VALUES ('HEY2'), ('hey1');", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "SELECT * FROM test1 ORDER BY 1;", - Expected: []sql.Row{{"HEY2"}, {"hey1"}}, + Expected: []sql.UntypedSqlRow{{"HEY2"}, {"hey1"}}, }, { Query: "SELECT * FROM test2 ORDER BY 1;", - Expected: []sql.Row{{"\x00h\x00e\x00y\x001"}, {"\x00H\x00E\x00Y\x002"}}, + Expected: []sql.UntypedSqlRow{{"\x00h\x00e\x00y\x001"}, {"\x00H\x00E\x00Y\x002"}}, }, }, }, @@ -115,25 +115,25 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT v1, pk FROM test1 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test1 ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test2 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "1"}, {"ABC", "2"}, {"aBc", "3"}, {"AbC", "4"}, }, }, { Query: "SELECT v1, pk FROM test2 ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", "2"}, {"AbC", "4"}, {"aBc", "3"}, {"abc", "1"}, }, }, @@ -151,71 +151,71 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT v1, pk FROM test1 WHERE v1 > 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row(nil), + Expected: []sql.UntypedSqlRow(nil), }, { Query: "SELECT v1, pk FROM test1 WHERE v1 >= 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 = 'ABC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 BETWEEN 'ABC' AND 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test1 WHERE v1 IN ('abc') ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c", "1"}, {"\x00A\x00B\x00C", "2"}, {"\x00a\x00B\x00c", "3"}, {"\x00A\x00b\x00C", "4"}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 > 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"aBc", "3"}, {"abc", "1"}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 >= 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"AbC", "4"}, {"aBc", "3"}, {"abc", "1"}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 <= 'aBc' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", "2"}, {"AbC", "4"}, {"aBc", "3"}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 = 'ABC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", "2"}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 BETWEEN 'ABC' AND 'AbC' ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", "2"}, {"AbC", "4"}, }, }, { Query: "SELECT v1, pk FROM test2 WHERE v1 IN ('abc') ORDER BY v1, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "1"}, }, }, @@ -231,7 +231,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT * FROM test ORDER BY v1 COLLATE utf8mb4_bin ASC;", - Expected: []sql.Row{{"1", "a"}, {"2", "b"}}, + Expected: []sql.UntypedSqlRow{{"1", "a"}, {"2", "b"}}, }, { Query: "SELECT * FROM test ORDER BY v1 COLLATE utf8mb3_bin ASC;", @@ -239,7 +239,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ }, { Query: "SELECT 'a' COLLATE utf8mb3_bin;", - Expected: []sql.Row{{"a"}}, + Expected: []sql.UntypedSqlRow{{"a"}}, }, { Query: "SELECT 'a' COLLATE utf8mb4_bin;", @@ -288,15 +288,15 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT HEX(UNHEX('c0a80000')) = 'c0a80000'", - Expected: []sql.Row{{"1"}}, + Expected: []sql.UntypedSqlRow{{"1"}}, }, { Query: "SET collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT HEX(UNHEX('c0a80000')) = 'c0a80000'", - Expected: []sql.Row{{"0"}}, + Expected: []sql.UntypedSqlRow{{"0"}}, }, }, }, @@ -310,7 +310,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "INSERT INTO test1 VALUES (1, 'ABC');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -320,25 +320,25 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ }, { Query: "INSERT INTO test1 VALUES (2, _utf16'\x00d\x00e\x00f' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "INSERT INTO test2 VALUES (2, _utf16'\x00d\x00e\x00f' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "SELECT * FROM test1 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1", "\x00a\x00b\x00c"}, {"2", "\x00d\x00e\x00f"}, }, }, { Query: "SELECT * FROM test2 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2", "def"}, }, }, @@ -354,7 +354,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "INSERT INTO test1 VALUES (1, 'A');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -364,25 +364,25 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ }, { Query: "INSERT INTO test1 VALUES (2, _utf16'\x00b\x00,\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "INSERT INTO test2 VALUES (2, _utf16'\x00b\x00,\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "SELECT * FROM test1 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1", "\x00a"}, {"2", "\x00b\x00,\x00c"}, }, }, { Query: "SELECT * FROM test2 ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2", "b,c"}, }, }, @@ -398,34 +398,34 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT * FROM test;", - Expected: []sql.Row{{"\x00h\x00e\x00y"}}, + Expected: []sql.UntypedSqlRow{{"\x00h\x00e\x00y"}}, ExpectedCollations: []sql.CollationID{sql.Collation_binary}, }, { Query: "SET character_set_results = 'utf8mb4';", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{"hey"}}, + Expected: []sql.UntypedSqlRow{{"hey"}}, ExpectedCollations: []sql.CollationID{sql.Collation_utf8mb4_0900_ai_ci}, }, { Query: "SET character_set_results = 'utf32';", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{"\x00\x00\x00h\x00\x00\x00e\x00\x00\x00y"}}, + Expected: []sql.UntypedSqlRow{{"\x00\x00\x00h\x00\x00\x00e\x00\x00\x00y"}}, ExpectedCollations: []sql.CollationID{sql.Collation_utf32_general_ci}, }, { Query: "SET character_set_results = NULL;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{"\x00h\x00e\x00y"}}, + Expected: []sql.UntypedSqlRow{{"\x00h\x00e\x00y"}}, ExpectedCollations: []sql.CollationID{sql.Collation_utf16_general_ci}, }, }, @@ -440,59 +440,59 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'A%';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE 'A%';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE '%C';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE '%C';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2"}, }, }, { Query: "SET collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v2 LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2"}, }, }, { Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC' COLLATE utf8mb4_0900_ai_ci;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2"}, }, }, @@ -506,77 +506,77 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT 'abc' LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_bin LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_bin;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_ai_ci LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_ai_ci;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SET collation_connection = 'utf8mb4_0900_bin';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT 'abc' LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_ai_ci LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_ai_ci;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT 'abc' COLLATE utf8mb4_0900_bin LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "SELECT 'abc' LIKE 'ABC' COLLATE utf8mb4_0900_bin;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "SELECT _utf8mb4'abc' LIKE 'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "SELECT 'abc' LIKE _utf8mb4'ABC';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, @@ -589,7 +589,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ /*{ // collation with the lowest coercibility is used Query: "SELECT STRCMP(_utf8mb4'A' COLLATE utf8mb4_0900_ai_ci, 'a')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, @@ -606,7 +606,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ { // same coercibility, one unicode and one not unicode Query: "SELECT STRCMP(_utf8mb4'A' COLLATE utf8mb4_0900_ai_ci, _latin1'b' COLLATE latin1_general_cs)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"-1"}, }, }, @@ -617,19 +617,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT LENGTH(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"6"}, }, }, { Query: "SELECT LENGTH(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"3"}, }, }, { Query: "SELECT LENGTH(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"6"}, }, }, @@ -640,19 +640,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT CHAR_LENGTH(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"3"}, }, }, { Query: "SELECT CHAR_LENGTH(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"3"}, }, }, { Query: "SELECT CHAR_LENGTH(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"6"}, }, }, @@ -666,19 +666,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT UPPER(_utf16'\x00a\x00B\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00A\x00B\x00C"}, }, }, { Query: "SELECT UPPER(_utf8mb4'aBc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC"}, }, }, { Query: "SELECT UPPER(_utf8mb4'\x00a\x00B\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00A\x00B\x00C"}, }, }, @@ -692,19 +692,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT LOWER(_utf16'\x00A\x00b\x00C' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT LOWER(_utf8mb4'AbC' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT LOWER(_utf8mb4'\x00A\x00b\x00C' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, @@ -715,43 +715,43 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT RPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, 'z');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abczzz"}, }, }, { Query: "SELECT RPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT RPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 9, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00czzz"}, }, }, @@ -762,43 +762,43 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT LPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, 'z');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf8mb4'z' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf8mb4'abc' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzzabc"}, }, }, { Query: "SELECT LPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 6, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT LPAD(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin, 9, _utf16'\x00z' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"zzz\x00a\x00b\x00c"}, }, }, @@ -809,19 +809,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT HEX(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"006100620063"}, }, }, { Query: "SELECT HEX(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"616263"}, }, }, { Query: "SELECT HEX(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"006100620063"}, }, }, @@ -832,13 +832,13 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT UNHEX(_utf16'\x006\x001\x006\x002\x006\x003' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT UNHEX(_utf8mb4'616263' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, @@ -852,19 +852,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT SUBSTRING(_utf16'\x00a\x00b\x00c\x00d' COLLATE utf16_unicode_ci, 2, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00b\x00c"}, }, }, { Query: "SELECT SUBSTRING(_utf8mb4'abcd' COLLATE utf8mb4_0900_bin, 2, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bc"}, }, }, { Query: "SELECT SUBSTRING(_utf8mb4'\x00a\x00b\x00c\x00d' COLLATE utf8mb4_0900_bin, 2, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a\x00"}, }, }, @@ -875,19 +875,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT TO_BASE64(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"AGEAYgBj"}, }, }, { Query: "SELECT TO_BASE64(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"YWJj"}, }, }, { Query: "SELECT TO_BASE64(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"AGEAYgBj"}, }, }, @@ -898,13 +898,13 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT FROM_BASE64(_utf16'\x00Y\x00W\x00J\x00j' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT FROM_BASE64(_utf8mb4'YWJj' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, @@ -918,19 +918,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT TRIM(_utf16'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT TRIM(_utf8mb4' abc ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT TRIM(_utf8mb4'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c\x00"}, }, }, @@ -944,19 +944,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT RTRIM(_utf16'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c"}, }, }, { Query: "SELECT RTRIM(_utf8mb4' abc ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {" abc"}, }, }, { Query: "SELECT RTRIM(_utf8mb4'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c\x00"}, }, }, @@ -970,19 +970,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT LTRIM(_utf16'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c\x00 "}, }, }, { Query: "SELECT LTRIM(_utf8mb4' abc ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc "}, }, }, { Query: "SELECT LTRIM(_utf8mb4'\x00 \x00a\x00b\x00c\x00 ' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00 \x00a\x00b\x00c\x00 "}, }, }, @@ -993,19 +993,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT BINARY(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT BINARY(_utf8mb4'abc' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT BINARY(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, @@ -1016,19 +1016,19 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "SELECT CAST(_utf16'\x00a\x00b\x00c' COLLATE utf16_unicode_ci AS BINARY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, { Query: "SELECT CAST(_utf8mb4'abc' COLLATE utf8mb4_0900_bin AS BINARY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "SELECT CAST(_utf8mb4'\x00a\x00b\x00c' COLLATE utf8mb4_0900_bin AS BINARY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"\x00a\x00b\x00c"}, }, }, @@ -1047,17 +1047,17 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1069,17 +1069,17 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_general_ci"}, }, }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1092,31 +1092,31 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_general_ci"}, }, }, { Query: "USE test_db_b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_general_cs"}, }, }, { Query: "DROP DATABASE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "DROP DATABASE test_db_b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1128,11 +1128,11 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_bin"}, }, }, @@ -1142,7 +1142,7 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1158,7 +1158,7 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1170,27 +1170,27 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "ALTER DATABASE test_db CHARACTER SET utf8mb3;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_general_ci"}, }, }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1203,55 +1203,55 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_general_ci"}, }, }, { Query: "USE test_db_b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_general_cs"}, }, }, { Query: "ALTER DATABASE test_db_a COLLATE utf8mb3_bin;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "ALTER DATABASE test_db_b COLLATE utf8mb3_general_ci;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // Still on test_db_b Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_general_ci"}, }, }, { Query: "USE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_bin"}, }, }, { Query: "DROP DATABASE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "DROP DATABASE test_db_b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1263,27 +1263,27 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_bin"}, }, }, { Query: "ALTER DATABASE test_db CHARACTER SET ascii COLLATE ascii_bin;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @@character_set_database, @@collation_database;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ascii", "ascii_bin"}, }, }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1296,63 +1296,63 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "CREATE TABLE test_a (pk VARCHAR(20) PRIMARY KEY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { // LIKE should inherit the table's collation, NOT the database's collation Query: "CREATE TABLE test_b LIKE other;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { // AS SELECT should inherit the database's collation, but the column retains the original collation Query: "CREATE TABLE test_c AS SELECT * FROM other;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "SHOW CREATE TABLE test_a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_a", "CREATE TABLE `test_a` (\n `pk` varchar(20) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}, }, }, { Query: "SHOW CREATE TABLE test_b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_b", "CREATE TABLE `test_b` (\n `pk` varchar(20) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci"}, }, }, { Query: "SHOW CREATE TABLE test_c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_c", "CREATE TABLE `test_c` (\n `pk` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}, }, }, { Query: "ALTER DATABASE test_db COLLATE utf8mb3_general_ci;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "CREATE TABLE test_d (pk VARCHAR(20) PRIMARY KEY);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "SHOW CREATE TABLE test_d;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_d", "CREATE TABLE `test_d` (\n `pk` varchar(20) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci"}, }, }, { Query: "DROP DATABASE test_db;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1365,37 +1365,37 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ Queries: []CharsetCollationWireTestQuery{ { Query: "USE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'test_db_a';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_general_ci"}, }, }, { Query: "SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'test_db_b';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_general_cs"}, }, }, { Query: "ALTER DATABASE test_db_a COLLATE utf8mb3_general_ci;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'test_db_a';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3_general_ci"}, }, }, { Query: "DROP DATABASE test_db_a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "DROP DATABASE test_db_b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1407,7 +1407,7 @@ var DatabaseCollationWireTests = []CharsetCollationWireTest{ T.TABLE_SCHEMA AS 'database', T.TABLE_CATALOG AS 'catalog', 0 AS isView FROM INFORMATION_SCHEMA.TABLES AS T WHERE T.TABLE_CATALOG = 'def' AND UPPER(T.TABLE_TYPE) = 'BASE TABLE' ORDER BY T.TABLE_NAME;`, - Expected: []sql.Row(nil), + Expected: []sql.UntypedSqlRow(nil), }, }, }, diff --git a/enginetest/queries/check_scripts.go b/enginetest/queries/check_scripts.go index bb7b6e89dd..4876e8dd9e 100644 --- a/enginetest/queries/check_scripts.go +++ b/enginetest/queries/check_scripts.go @@ -29,7 +29,7 @@ var CreateCheckConstraintsScripts = []ScriptTest{ Query: `SELECT TC.CONSTRAINT_NAME, CC.CHECK_CLAUSE, TC.ENFORCED FROM information_schema.TABLE_CONSTRAINTS TC, information_schema.CHECK_CONSTRAINTS CC WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'CHECK';`, - Expected: []sql.Row{{"chk1", "(B > 0)", "YES"}, {"chk2", "(b > 0)", "NO"}, {"chk3", "(B > 1)", "YES"}, {"chk4", "(upper(C) = c)", "YES"}}, + Expected: []sql.UntypedSqlRow{{"chk1", "(B > 0)", "YES"}, {"chk2", "(b > 0)", "NO"}, {"chk3", "(B > 1)", "YES"}, {"chk4", "(upper(C) = c)", "YES"}}, }, }, }, @@ -43,7 +43,7 @@ WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.C Query: `SELECT LENGTH(TC.CONSTRAINT_NAME) > 0 FROM information_schema.TABLE_CONSTRAINTS TC, information_schema.CHECK_CONSTRAINTS CC WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'CHECK' AND CC.CHECK_CLAUSE = '(b > 100)';`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, }, }, @@ -66,7 +66,7 @@ CREATE TABLE T2 Query: `SELECT CC.CHECK_CLAUSE FROM information_schema.TABLE_CONSTRAINTS TC, information_schema.CHECK_CONSTRAINTS CC WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 't2' AND TC.TABLE_SCHEMA = CC.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'CHECK';`, - Expected: []sql.Row{{"(c1 = c2)"}, {"(c1 > 10)"}, {"(c2 > 0)"}, {"(c3 < 100)"}, {"(c1 = 0)"}, {"(C1 > C3)"}}, + Expected: []sql.UntypedSqlRow{{"(c1 = c2)"}, {"(c1 > 10)"}, {"(c2 > 0)"}, {"(c3 < 100)"}, {"(c1 = 0)"}, {"(C1 > C3)"}}, }, }, }, @@ -115,7 +115,7 @@ CREATE TABLE t4 Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE mytable1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable1", "CREATE TABLE `mytable1` (\n `pk` int NOT NULL,\n" + @@ -128,7 +128,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable2", "CREATE TABLE `mytable2` (\n `pk` int NOT NULL,\n" + @@ -142,7 +142,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable3", "CREATE TABLE `mytable3` (\n `pk` int NOT NULL,\n" + @@ -156,7 +156,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable4", "CREATE TABLE `mytable4` (\n `pk` int NOT NULL,\n" + @@ -169,7 +169,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable5", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable5", "CREATE TABLE `mytable5` (\n `pk` int NOT NULL,\n" + @@ -182,7 +182,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable6", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable6", "CREATE TABLE `mytable6` (\n `pk` int NOT NULL,\n" + @@ -195,7 +195,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable7", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable7", "CREATE TABLE `mytable7` (\n `pk` int NOT NULL,\n" + @@ -208,7 +208,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable8", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable8", "CREATE TABLE `mytable8` (\n `pk` int NOT NULL,\n" + @@ -221,7 +221,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable9", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable9", "CREATE TABLE `mytable9` (\n `pk` int NOT NULL,\n" + @@ -234,7 +234,7 @@ CREATE TABLE t4 }, { Query: "SHOW CREATE TABLE mytable10", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mytable10", "CREATE TABLE `mytable10` (\n `pk` int NOT NULL,\n" + @@ -255,14 +255,14 @@ CREATE TABLE t4 Assertions: []ScriptTestAssertion{ { Query: "SELECT * from information_schema.check_constraints where constraint_name IN ('mycheck', 'hcheck') ORDER BY constraint_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"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{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "hcheck", "mydb", "mytable", "CHECK", "YES"}, {"def", "mydb", "mycheck", "mydb", "mytable", "CHECK", "YES"}, {"def", "mydb", "vcheck", "mydb", "mytable", "CHECK", "YES"}, @@ -280,7 +280,7 @@ CREATE TABLE t4 Assertions: []ScriptTestAssertion{ { Query: "SELECT pk FROM test where lower(v1) = 'happy' and lower(v2) = 'birthday' order by 1", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, }, }, @@ -308,11 +308,11 @@ CREATE TABLE t4 Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test ORDER BY i", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "SELECT * FROM test where i = 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -336,7 +336,7 @@ var DropCheckConstraintsScripts = []ScriptTest{ Query: `SELECT TC.CONSTRAINT_NAME, CC.CHECK_CLAUSE, TC.ENFORCED FROM information_schema.TABLE_CONSTRAINTS TC, information_schema.CHECK_CONSTRAINTS CC WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 't1' AND TC.TABLE_SCHEMA = CC.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'CHECK';`, - Expected: []sql.Row{{"chk3", "(c > 0)", "YES"}}, + Expected: []sql.UntypedSqlRow{{"chk3", "(c > 0)", "YES"}}, }, }, }, @@ -377,7 +377,7 @@ var ChecksOnInsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t1;", - Expected: []sql.Row{{1, 1, "ABC"}}, + Expected: []sql.UntypedSqlRow{{1, 1, "ABC"}}, }, { Query: "INSERT INTO t1 (a,b) VALUES (0,0)", @@ -410,7 +410,7 @@ var ChecksOnInsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, "ABC"}, {2, 2, "ABC"}, {4, nil, nil}, @@ -432,30 +432,30 @@ var ChecksOnInsertScripts = []ScriptTest{ }, { Query: "INSERT INTO t1 (a,b) select a, b from t2", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { // Check that INSERT IGNORE correctly drops errors with check constraints and does not update the actual table. Query: "INSERT IGNORE INTO t1 VALUES (5,2, 'abc')", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, }, { Query: "SELECT count(*) FROM t1 where a = 5", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { // One value is correctly accepted and the other value is not accepted due to a check constraint violation. // The accepted value is correctly added to the table. Query: "INSERT IGNORE INTO t1 VALUES (4,4, null), (5,2, 'abc')", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SELECT count(*) FROM t1 where a = 5", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT count(*) FROM t1 where a = 4", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -474,7 +474,7 @@ var ChecksOnUpdateScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t1;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "UPDATE t1 set b = 0;", @@ -503,19 +503,19 @@ var ChecksOnUpdateScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE sales JOIN (SELECT year_built FROM sales) AS t ON sales.year_built = t.year_built SET sales.year_built = 1901;", - Expected: []sql.Row{{types.OkResult{1, 0, plan.UpdateInfo{1, 1, 0}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{1, 0, plan.UpdateInfo{1, 1, 0}}}}, }, { Query: "select * from sales;", - Expected: []sql.Row{{1901}}, + Expected: []sql.UntypedSqlRow{{1901}}, }, { Query: "UPDATE sales as s1 JOIN (SELECT year_built FROM sales) AS t SET S1.year_built = 1902;", - Expected: []sql.Row{{types.OkResult{1, 0, plan.UpdateInfo{1, 1, 0}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{1, 0, plan.UpdateInfo{1, 1, 0}}}}, }, { Query: "select * from sales;", - Expected: []sql.Row{{1902}}, + Expected: []sql.UntypedSqlRow{{1902}}, }, { Query: "UPDATE sales as s1 JOIN (SELECT year_built FROM sales) AS t SET t.year_built = 1903;", diff --git a/enginetest/queries/column_alias_queries.go b/enginetest/queries/column_alias_queries.go index 1c4134a605..1b6f43dc4f 100644 --- a/enginetest/queries/column_alias_queries.go +++ b/enginetest/queries/column_alias_queries.go @@ -43,7 +43,7 @@ var ColumnAliasQueries = []ScriptTest{ Type: types.Int64, }, }, - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: `SELECT i AS cOl, s as COL FROM mytable`, @@ -57,7 +57,7 @@ var ColumnAliasQueries = []ScriptTest{ Type: types.MustCreateStringWithDefaults(sqltypes.VarChar, 20), }, }, - Expected: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, + Expected: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, }, { // Projection expressions may NOT reference aliases defined in projection expressions @@ -78,13 +78,13 @@ var ColumnAliasQueries = []ScriptTest{ { // OrderBy clause may reference expression aliases at current scope Query: "select 1 as a order by a desc;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // If there is ambiguity between one table column and one alias, the alias gets precedence in the order // by clause. (This is different from subqueries in projection expressions.) Query: "select v as u from uv order by u;", - Expected: []sql.Row{{0}, {1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { // If there is ambiguity between multiple aliases in an order by clause, it is an error @@ -95,12 +95,12 @@ var ColumnAliasQueries = []ScriptTest{ // If there is ambiguity between one selected table column and one alias, the table column gets // precedence in the group by clause. Query: "select w, min(z) as w, max(z) as w from wz group by w;", - Expected: []sql.Row{{0, 0, 0}, {1, 0, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 0, 2}}, }, { // GroupBy may use a column that is selected multiple times. Query: "select w, w from wz group by w;", - Expected: []sql.Row{{0, 0}, {1, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}}, }, { // GroupBy may use expression aliases in grouping expressions @@ -115,7 +115,7 @@ var ColumnAliasQueries = []ScriptTest{ Type: types.Float64, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", float64(1)}, {"second row", float64(2)}, {"third row", float64(3)}, @@ -124,12 +124,12 @@ var ColumnAliasQueries = []ScriptTest{ { // Having clause may reference expression aliases current scope Query: "select t1.u as a from uv as t1 having a > 0 order by a;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { // Having clause may reference expression aliases from current scope Query: "select t1.u as a from uv as t1 having a = t1.u order by a;", - Expected: []sql.Row{{0}, {1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { // Expression aliases work when implicitly referenced by ordinal position @@ -144,7 +144,7 @@ var ColumnAliasQueries = []ScriptTest{ Type: types.Float64, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", float64(1)}, {"second row", float64(2)}, {"third row", float64(3)}, @@ -163,7 +163,7 @@ var ColumnAliasQueries = []ScriptTest{ Type: types.Float64, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", float64(1)}, {"second row", float64(2)}, {"third row", float64(3)}, @@ -171,7 +171,7 @@ var ColumnAliasQueries = []ScriptTest{ }, { Query: "select t1.i as a from mytable as t1 having a = t1.i;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, }, }, @@ -186,12 +186,12 @@ var ColumnAliasQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select "foo" as dummy, (select dummy)`, - Expected: []sql.Row{{"foo", "foo"}}, + Expected: []sql.UntypedSqlRow{{"foo", "foo"}}, }, { // https://github.com/dolthub/dolt/issues/4344 Query: "select x as v, (select u from uv where v = y) as u from xy;", - Expected: []sql.Row{{0, 3}, {1, 2}, {2, 1}, {3, 0}}, + Expected: []sql.UntypedSqlRow{{0, 3}, {1, 2}, {2, 1}, {3, 0}}, }, { // GMS currently returns {0, 0, 0} The second alias seems to get overwritten. @@ -200,31 +200,31 @@ var ColumnAliasQueries = []ScriptTest{ // When multiple aliases are defined with the same name, a subquery prefers the first definition Query: "select 0 as a, 1 as a, (SELECT x from xy where x = a);", - Expected: []sql.Row{{0, 1, 0}}, + Expected: []sql.UntypedSqlRow{{0, 1, 0}}, }, { Query: "SELECT 1 as a, (select a) as a;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "SELECT 1 as a, (select a) as b;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "SELECT 1 as a, (select a) as b from dual;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "SELECT 1 as a, (select a) as b from xy;", - Expected: []sql.Row{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, }, { Query: "select x, (select 1) as y from xy;", - Expected: []sql.Row{{0, 1}, {1, 1}, {2, 1}, {3, 1}}, + Expected: []sql.UntypedSqlRow{{0, 1}, {1, 1}, {2, 1}, {3, 1}}, }, { Query: "SELECT 1 as a, (select a) from xy;", - Expected: []sql.Row{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, }, }, }, @@ -239,7 +239,7 @@ var ColumnAliasQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x, (select 1) as y, (select (select y as q)) as z from (select * from xy) as xy;", - Expected: []sql.Row{{0, 1, 0}, {1, 1, 1}, {2, 1, 2}, {3, 1, 3}}, + Expected: []sql.UntypedSqlRow{{0, 1, 0}, {1, 1, 1}, {2, 1, 2}, {3, 1, 3}}, }, }, }, @@ -250,14 +250,14 @@ var ColumnAliasQueries = []ScriptTest{ // The second query in the union subquery returns "x" instead of mytable.i // https://github.com/dolthub/dolt/issues/4256 Query: `SELECT *, (select i union select i) as a from mytable;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1}, {2, "second row", 2}, {3, "third row", 3}}, }, { Query: `SELECT 1 as a, (select a union select a) as b;`, - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { // GMS executes this query, but it is not valid because of the forward ref of alias b. @@ -271,12 +271,12 @@ var ColumnAliasQueries = []ScriptTest{ // this query. Query: "select 1 as a, one + 1 as mod1, dt.* from mytable as t1, (select 1, 2 from mytable) as dt (one, two) where dt.one > 0 group by one;", // column names: a, mod1, one, two - Expected: []sql.Row{{1, 2, 1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2, 1, 2}}, }, { // GMS returns `ambiguous column or alias name "b"` on both cases of `group by b` and `group by 1` inside subquery, but MySQL executes. Query: "select 1 as b, (select b group by b order by b) order by 1;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, }, }, diff --git a/enginetest/queries/column_default_queries.go b/enginetest/queries/column_default_queries.go index 74dfc44c7e..c7394f79aa 100644 --- a/enginetest/queries/column_default_queries.go +++ b/enginetest/queries/column_default_queries.go @@ -30,11 +30,11 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update t1 n inner join t2 m on n.name = m.name set n.cnt =m.cnt+1;", - Expected: []sql.Row{{newUpdateResult(2, 2)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(2, 2)}}, }, { Query: "select name, cnt from t1", - Expected: []sql.Row{{"one", 2}, {"two", 3}}, + Expected: []sql.UntypedSqlRow{{"one", 2}, {"two", 3}}, }, }, }, @@ -48,11 +48,11 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update t1 n inner join t2 m on n.y = m.y set n.x =n.y where n.x = 3;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t1", - Expected: []sql.Row{{1, 2}, {2, 3}, {4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}, {4, 5}}, }, }, }, @@ -65,11 +65,11 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t1", - Expected: []sql.Row{{1, 2}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 2}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` bigint NOT NULL,\n" + " `v1` bigint DEFAULT '2',\n" + @@ -87,11 +87,11 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t2", - Expected: []sql.Row{{1, 2}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 2}, {3, 3}}, }, { Query: "show create table t2", - Expected: []sql.Row{{"t2", + Expected: []sql.UntypedSqlRow{{"t2", "CREATE TABLE `t2` (\n" + " `pk` bigint NOT NULL,\n" + " `v1` smallint DEFAULT (greatest(`pk`,2)),\n" + @@ -108,7 +108,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t3", - Expected: []sql.Row{{1, "2"}, {2, "2"}, {3, "3"}}}, + Expected: []sql.UntypedSqlRow{{1, "2"}, {2, "2"}, {3, "3"}}}, }, }, { @@ -119,7 +119,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t4", - Expected: []sql.Row{{1, 4}, {2, 4}}}, + Expected: []sql.UntypedSqlRow{{1, 4}, {2, 4}}}, }, }, { @@ -130,7 +130,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t5", - Expected: []sql.Row{{1, 7, 7}, {2, 7, 7}}}, + Expected: []sql.UntypedSqlRow{{1, 7, 7}, {2, 7, 7}}}, }, }, { @@ -141,7 +141,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t6", - Expected: []sql.Row{{1, 9, 9}, {2, 9, 9}}}, + Expected: []sql.UntypedSqlRow{{1, 9, 9}, {2, 9, 9}}}, }, }, { @@ -152,7 +152,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t7", - Expected: []sql.Row{{1, 8, 8}, {2, 8, 8}}}, + Expected: []sql.UntypedSqlRow{{1, 8, 8}, {2, 8, 8}}}, }, }, { @@ -163,7 +163,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t8", - Expected: []sql.Row{{1, 5, 4}, {2, 7, 6}}}, + Expected: []sql.UntypedSqlRow{{1, 5, 4}, {2, 7, 6}}}, }, }, { @@ -174,7 +174,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t9", - Expected: []sql.Row{{1, "77"}, {2, "77"}}}, + Expected: []sql.UntypedSqlRow{{1, "77"}, {2, "77"}}}, }, }, { @@ -186,7 +186,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t12", - Expected: []sql.Row{{1, 2}, {2, 2}, {3, 3}}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 2}, {3, 3}}}, }, }, { @@ -198,7 +198,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t13", - Expected: []sql.Row{{1, 4, 5}, {2, 4, 5}}}, + Expected: []sql.UntypedSqlRow{{1, 4, 5}, {2, 4, 5}}}, }, }, { @@ -210,7 +210,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t14", - Expected: []sql.Row{{1, 2, 4}, {2, 3, 5}}}, + Expected: []sql.UntypedSqlRow{{1, 2, 4}, {2, 3, 5}}}, }, }, { @@ -222,7 +222,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t15", - Expected: []sql.Row{{1, 2, 4}, {2, 3, 5}}}, + Expected: []sql.UntypedSqlRow{{1, 2, 4}, {2, 3, 5}}}, }, }, { @@ -234,7 +234,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t16", - Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}}}, + Expected: []sql.UntypedSqlRow{{5, 1, 4}, {5, 2, 4}}}, }, }, { @@ -246,7 +246,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t17", - Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}}}, + Expected: []sql.UntypedSqlRow{{5, 1, 3}, {6, 2, 4}}}, }, }, { @@ -258,7 +258,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t18", - Expected: []sql.Row{{1, 2, 1}, {2, 3, 2}}}, + Expected: []sql.UntypedSqlRow{{1, 2, 1}, {2, 3, 2}}}, }, }, { @@ -270,7 +270,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t19", - Expected: []sql.Row{{1, 4, 5}, {2, 4, 5}}}, + Expected: []sql.UntypedSqlRow{{1, 4, 5}, {2, 4, 5}}}, }, }, { @@ -283,7 +283,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t20", - Expected: []sql.Row{{-1, 1, 11}, {-2, 2, 12}, {-3, 3, 13}}}, + Expected: []sql.UntypedSqlRow{{-1, 1, 11}, {-2, 2, 12}, {-3, 3, 13}}}, }, }, { @@ -293,7 +293,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "ALTER TABLE t21 DROP COLUMN v1", - Expected: []sql.Row{{types.NewOkResult(0)}}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}}, }, }, { @@ -305,7 +305,7 @@ var ColumnDefaultTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t22", - Expected: []sql.Row{{3, 1, 2}, {4, 2, 3}}}, + Expected: []sql.UntypedSqlRow{{3, 1, 2}, {4, 2, 3}}}, }, }, { @@ -319,7 +319,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t23 order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 3}, {3, 2, 4}, {8, 3, 9}, @@ -338,7 +338,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t24 order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, 2}, {2, 4, 3}, {3, 5, 4}, @@ -357,7 +357,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t25", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 2}, {2, 4, 3}, {3, 6, -3}, @@ -376,7 +376,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t26", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 2}, {2, 3, 4}, {3, -3, 6}, @@ -390,7 +390,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DESCRIBE t27", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, ""}, {"v1", "double", "YES", "", "-1.1", ""}, }, @@ -411,7 +411,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t29 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 3}, {2, 3, 4}, {3, 4, 5}, @@ -419,7 +419,7 @@ var ColumnDefaultTests = []ScriptTest{ }, { Query: "SHOW CREATE TABLE t29", - Expected: []sql.Row{{"t29", "CREATE TABLE `t29` (\n" + + Expected: []sql.UntypedSqlRow{{"t29", "CREATE TABLE `t29` (\n" + " `pk` bigint NOT NULL,\n" + " `v1y` bigint,\n" + " `v2` bigint DEFAULT ((`v1y` + 1)),\n" + @@ -438,7 +438,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT pk, v1, v2, V3 FROM t30", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 4, 5, 7}, {2, 4, 5, 7}, }, @@ -455,7 +455,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t31", - Expected: []sql.Row{{1, 0}, {2, 0}, {3, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}, {2, 0}, {3, 0}}, }, }, }, @@ -469,7 +469,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t32", - Expected: []sql.Row{{1, ""}, {2, ""}, {3, ""}}, + Expected: []sql.UntypedSqlRow{{1, ""}, {2, ""}, {3, ""}}, }, }, }, @@ -488,7 +488,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "desc t33", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "varchar(100)", "NO", "PRI", "(replace(uuid(), '-', ''))", "DEFAULT_GENERATED"}, {"v1_new", "timestamp(6)", "YES", "", "CURRENT_TIMESTAMP(6)", "DEFAULT_GENERATED"}, {"v2", "varchar(100)", "YES", "", nil, ""}, @@ -578,71 +578,71 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE TABLE t997(pk BIGINT PRIMARY KEY, v1 BLOB DEFAULT 0x61)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t997 VALUES(42, DEFAULT)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * from t997", - Expected: []sql.Row{{42, []uint8{0x61}}}, + Expected: []sql.UntypedSqlRow{{42, []uint8{0x61}}}, }, { Query: "CREATE TABLE t998(pk BIGINT PRIMARY KEY, v1 TEXT DEFAULT 'hi')", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t998 VALUES(1, DEFAULT)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * from t998", - Expected: []sql.Row{{1, "hi"}}, + Expected: []sql.UntypedSqlRow{{1, "hi"}}, }, { Query: "CREATE TABLE t999(pk BIGINT PRIMARY KEY, v1 LONGTEXT DEFAULT 'hi')", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t999 VALUES(10, DEFAULT)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * from t999", - Expected: []sql.Row{{10, "hi"}}, + Expected: []sql.UntypedSqlRow{{10, "hi"}}, }, { Query: "CREATE TABLE t34(pk INT PRIMARY KEY, v1 JSON)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t34 alter column v1 set default '{}'", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO t34 VALUES(100, DEFAULT)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * from t34", - Expected: []sql.Row{{100, "{}"}}, + Expected: []sql.UntypedSqlRow{{100, "{}"}}, }, { Query: "ALTER TABLE t34 alter column v1 set default ('{}')", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE t35(i int default 100, j JSON)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t35 alter column j set default '[]'", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t35 alter column j set default ('[]')", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -784,7 +784,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int DEFAULT '2'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -792,19 +792,19 @@ var ColumnDefaultTests = []ScriptTest{ }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "YES", "", "2", ""}, }, }, { Query: "select table_name, column_name, column_default from information_schema.columns where table_name = 't';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "i", "2"}, }, }, { Query: "select * from t;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, }, }, @@ -817,7 +817,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `f` float DEFAULT '1'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -825,19 +825,19 @@ var ColumnDefaultTests = []ScriptTest{ }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"f", "float", "YES", "", "1", ""}, }, }, { Query: "select table_name, column_name, column_default from information_schema.columns where table_name = 't';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "f", "1"}, }, }, { Query: "select * from t;", - Expected: []sql.Row{{1.0}}, + Expected: []sql.UntypedSqlRow{{1.0}}, }, }, }, @@ -850,7 +850,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `f` float DEFAULT '1.23'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -858,19 +858,19 @@ var ColumnDefaultTests = []ScriptTest{ }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"f", "float", "YES", "", "1.23", ""}, }, }, { Query: "select table_name, column_name, column_default from information_schema.columns where table_name = 't';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "f", "1.23"}, }, }, { Query: "select * from t;", - Expected: []sql.Row{{1.23}}, + Expected: []sql.UntypedSqlRow{{1.23}}, }, }, }, @@ -883,7 +883,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `f` float DEFAULT ('1.23000')\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -891,19 +891,19 @@ var ColumnDefaultTests = []ScriptTest{ }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"f", "float", "YES", "", "('1.23000')", "DEFAULT_GENERATED"}, }, }, { Query: "select table_name, column_name, column_default from information_schema.columns where table_name = 't';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "f", "'1.23000'"}, }, }, { Query: "select * from t;", - Expected: []sql.Row{{1.23}}, + Expected: []sql.UntypedSqlRow{{1.23}}, }, }, }, @@ -916,7 +916,7 @@ var ColumnDefaultTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int DEFAULT (1)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -924,19 +924,19 @@ var ColumnDefaultTests = []ScriptTest{ }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "YES", "", "(1)", "DEFAULT_GENERATED"}, }, }, { Query: "select table_name, column_name, column_default from information_schema.columns where table_name = 't';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "i", "1"}, }, }, { Query: "select * from t;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, diff --git a/enginetest/queries/create_table_queries.go b/enginetest/queries/create_table_queries.go index bb0f63c9aa..0b66cd38c6 100644 --- a/enginetest/queries/create_table_queries.go +++ b/enginetest/queries/create_table_queries.go @@ -24,57 +24,57 @@ import ( var CreateTableQueries = []WriteQueryTest{ { WriteQuery: `create table tableWithComment (pk int) COMMENT 'Table Comments Work!'`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE tableWithComment", - ExpectedSelect: []sql.Row{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT='Table Comments Work!'"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT='Table Comments Work!'"}}, }, { WriteQuery: `create table tableWithComment (pk int) COMMENT='Table Comments=Still Work'`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE tableWithComment", - ExpectedSelect: []sql.Row{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT='Table Comments=Still Work'"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT='Table Comments=Still Work'"}}, }, { WriteQuery: `create table tableWithComment (pk int) COMMENT "~!@ #$ %^ &* ()"`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE tableWithComment", - ExpectedSelect: []sql.Row{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT='~!@ #$ %^ &* ()'"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT='~!@ #$ %^ &* ()'"}}, }, { WriteQuery: `create table floattypedefs (a float(10), b float(10, 2), c double(10, 2))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE floattypedefs", - ExpectedSelect: []sql.Row{{"floattypedefs", "CREATE TABLE `floattypedefs` (\n `a` float,\n `b` float,\n `c` double\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"floattypedefs", "CREATE TABLE `floattypedefs` (\n `a` float,\n `b` float,\n `c` double\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (a INTEGER, b TEXT, c DATE, d TIMESTAMP, e VARCHAR(20), f BLOB NOT NULL, b1 BOOL, b2 BOOLEAN NOT NULL, g DATETIME, h CHAR(40))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int,\n `b` text,\n `c` date,\n `d` timestamp,\n `e` varchar(20),\n `f` blob NOT NULL,\n `b1` tinyint(1),\n `b2` tinyint(1) NOT NULL,\n `g` datetime,\n `h` char(40)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int,\n `b` text,\n `c` date,\n `d` timestamp,\n `e` varchar(20),\n `f` blob NOT NULL,\n `b1` tinyint(1),\n `b2` tinyint(1) NOT NULL,\n `g` datetime,\n `h` char(40)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (a INTEGER NOT NULL PRIMARY KEY, b VARCHAR(10) NOT NULL)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10) NOT NULL,\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10) NOT NULL,\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (a INTEGER, b TEXT NOT NULL COMMENT 'comment', c bool, primary key (a))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` text NOT NULL COMMENT 'comment',\n `c` tinyint(1),\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` text NOT NULL COMMENT 'comment',\n `c` tinyint(1),\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (a INTEGER, create_time timestamp(6) NOT NULL DEFAULT NOW(6), primary key (a))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `create_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `create_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 LIKE mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` bigint NOT NULL,\n `s` varchar(20) NOT NULL COMMENT 'column s',\n PRIMARY KEY (`i`),\n KEY `idx_si` (`s`,`i`),\n KEY `mytable_i_s` (`i`,`s`),\n UNIQUE KEY `mytable_s` (`s`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` bigint NOT NULL,\n `s` varchar(20) NOT NULL COMMENT 'column s',\n PRIMARY KEY (`i`),\n KEY `idx_si` (`s`,`i`),\n KEY `mytable_i_s` (`i`,`s`),\n UNIQUE KEY `mytable_s` (`s`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 ( @@ -82,63 +82,63 @@ var CreateTableQueries = []WriteQueryTest{ v1 bigint default (2) comment 'hi there', index idx_v1 (v1) comment 'index here' )`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` bigint NOT NULL,\n `v1` bigint DEFAULT (2) COMMENT 'hi there',\n PRIMARY KEY (`pk`),\n KEY `idx_v1` (`v1`) COMMENT 'index here'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` bigint NOT NULL,\n `v1` bigint DEFAULT (2) COMMENT 'hi there',\n PRIMARY KEY (`pk`),\n KEY `idx_v1` (`v1`) COMMENT 'index here'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `create table t1 like foo.othertable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `text` varchar(20) NOT NULL,\n `number` mediumint,\n PRIMARY KEY (`text`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `text` varchar(20) NOT NULL,\n `number` mediumint,\n PRIMARY KEY (`text`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (a INTEGER NOT NULL PRIMARY KEY, b VARCHAR(10) UNIQUE)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10),\n PRIMARY KEY (`a`),\n UNIQUE KEY `b` (`b`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10),\n PRIMARY KEY (`a`),\n UNIQUE KEY `b` (`b`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (a INTEGER NOT NULL PRIMARY KEY, b VARCHAR(10) UNIQUE KEY)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10),\n PRIMARY KEY (`a`),\n UNIQUE KEY `b` (`b`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10),\n PRIMARY KEY (`a`),\n UNIQUE KEY `b` (`b`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 SELECT * from mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` bigint NOT NULL,\n `s` varchar(20) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` bigint NOT NULL,\n `s` varchar(20) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE mydb.t1 (a INTEGER NOT NULL PRIMARY KEY, b VARCHAR(10) NOT NULL)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE mydb.t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10) NOT NULL,\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `a` int NOT NULL,\n `b` varchar(10) NOT NULL,\n PRIMARY KEY (`a`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (i int primary key, j int auto_increment unique)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`i`),\n UNIQUE KEY `j` (`j`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`i`),\n UNIQUE KEY `j` (`j`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (i int primary key, j int auto_increment, index (j))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`i`),\n KEY `j` (`j`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`i`),\n KEY `j` (`j`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (i int primary key, j int auto_increment, k int, unique(j,k))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n `k` int,\n PRIMARY KEY (`i`),\n UNIQUE KEY `j` (`j`,`k`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n `k` int,\n PRIMARY KEY (`i`),\n UNIQUE KEY `j` (`j`,`k`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (i int primary key, j int auto_increment, k int, index (j,k))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n `k` int,\n PRIMARY KEY (`i`),\n KEY `j` (`j`,`k`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `j` int NOT NULL AUTO_INCREMENT,\n `k` int,\n PRIMARY KEY (`i`),\n KEY `j` (`j`,`k`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 ( @@ -148,9 +148,9 @@ var CreateTableQueries = []WriteQueryTest{ col3 text DEFAULT (_utf8mb4'abc'), PRIMARY KEY (pk) )`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE t1", - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` int NOT NULL,\n `col1` blob DEFAULT ('abc'),\n `col2` json DEFAULT (json_object('a',1)),\n `col3` text DEFAULT ('abc'),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` int NOT NULL,\n `col1` blob DEFAULT ('abc'),\n `col2` json DEFAULT (json_object('a',1)),\n `col3` text DEFAULT ('abc'),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE td ( @@ -163,112 +163,112 @@ var CreateTableQueries = []WriteQueryTest{ col7 timestamp DEFAULT NOW(), col8 bigint DEFAULT (NOW()) )`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE td", - ExpectedSelect: []sql.Row{{"td", "CREATE TABLE `td` (\n `pk` int NOT NULL,\n `col2` int NOT NULL DEFAULT '2',\n `col3` double NOT NULL DEFAULT (round(-1.58,0)),\n `col4` varchar(10) DEFAULT 'new row',\n `col5` float DEFAULT '33.33',\n `col6` int DEFAULT NULL,\n `col7` timestamp DEFAULT CURRENT_TIMESTAMP,\n `col8` bigint DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"td", "CREATE TABLE `td` (\n `pk` int NOT NULL,\n `col2` int NOT NULL DEFAULT '2',\n `col3` double NOT NULL DEFAULT (round(-1.58,0)),\n `col4` varchar(10) DEFAULT 'new row',\n `col5` float DEFAULT '33.33',\n `col6` int DEFAULT NULL,\n `col7` timestamp DEFAULT CURRENT_TIMESTAMP,\n `col8` bigint DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `create table t1 (i int primary key, b1 blob, b2 blob, index(b1(123), b2(456)))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob,\n `b2` blob,\n PRIMARY KEY (`i`),\n KEY `b1` (`b1`(123),`b2`(456))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob,\n `b2` blob,\n PRIMARY KEY (`i`),\n KEY `b1` (`b1`(123),`b2`(456))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `create table t1 (i int primary key, b1 blob, b2 blob, unique index(b1(123), b2(456)))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob,\n `b2` blob,\n PRIMARY KEY (`i`),\n UNIQUE KEY `b1` (`b1`(123),`b2`(456))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob,\n `b2` blob,\n PRIMARY KEY (`i`),\n UNIQUE KEY `b1` (`b1`(123),`b2`(456))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `create table t1 (i int primary key, b1 blob, b2 blob, index(b1(10)), index(b2(20)), index(b1(123), b2(456)))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob,\n `b2` blob,\n PRIMARY KEY (`i`),\n KEY `b1` (`b1`(10)),\n KEY `b1_2` (`b1`(123),`b2`(456)),\n KEY `b2` (`b2`(20))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob,\n `b2` blob,\n PRIMARY KEY (`i`),\n KEY `b1` (`b1`(10)),\n KEY `b1_2` (`b1`(123),`b2`(456)),\n KEY `b2` (`b2`(20))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 as select * from mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `select * from t1 order by i`, - ExpectedSelect: []sql.Row{{1, "first row"}, {2, "second row"}, {3, "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}, {3, "third row"}}, }, { WriteQuery: `CREATE TABLE t1 as select * from mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` bigint NOT NULL,\n `s` varchar(20) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` bigint NOT NULL,\n `s` varchar(20) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 as select s, i from mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `select * from t1 order by i`, - ExpectedSelect: []sql.Row{{"first row", 1}, {"second row", 2}, {"third row", 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{"first row", 1}, {"second row", 2}, {"third row", 3}}, }, { WriteQuery: `CREATE TABLE t1 as select distinct s, i from mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `select * from t1 order by i`, - ExpectedSelect: []sql.Row{{"first row", 1}, {"second row", 2}, {"third row", 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{"first row", 1}, {"second row", 2}, {"third row", 3}}, }, { WriteQuery: `CREATE TABLE t1 as select s, i from mytable order by s`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `select * from t1 order by i`, - ExpectedSelect: []sql.Row{{"first row", 1}, {"second row", 2}, {"third row", 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{"first row", 1}, {"second row", 2}, {"third row", 3}}, }, // TODO: the second column should be named `sum(i)` but is `SUM(mytable.i)` { WriteQuery: `CREATE TABLE t1 as select s, sum(i) from mytable group by s`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `select * from t1 order by s`, // other column is named `SUM(mytable.i)` - ExpectedSelect: []sql.Row{{"first row", float64(1)}, {"second row", float64(2)}, {"third row", float64(3)}}, + ExpectedSelect: []sql.UntypedSqlRow{{"first row", float64(1)}, {"second row", float64(2)}, {"third row", float64(3)}}, }, { WriteQuery: `CREATE TABLE t1 as select s, sum(i) from mytable group by s having sum(i) > 2`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "select * from t1", - ExpectedSelect: []sql.Row{{"third row", float64(3)}}, + ExpectedSelect: []sql.UntypedSqlRow{{"third row", float64(3)}}, }, { WriteQuery: `CREATE TABLE t1 as select s, i from mytable order by s limit 1`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: `select * from t1 order by i`, - ExpectedSelect: []sql.Row{{"first row", 1}}, + ExpectedSelect: []sql.UntypedSqlRow{{"first row", 1}}, }, { WriteQuery: `CREATE TABLE t1 as select concat("new", s), i from mytable`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: `select * from t1 order by i`, - ExpectedSelect: []sql.Row{{"newfirst row", 1}, {"newsecond row", 2}, {"newthird row", 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{"newfirst row", 1}, {"newsecond row", 2}, {"newthird row", 3}}, }, { WriteQuery: `CREATE TABLE t1 (pk varchar(10) primary key collate binary)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `SHOW CREATE TABLE t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (pk varchar(10) primary key charset binary)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `SHOW CREATE TABLE t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (pk varchar(10) primary key character set binary)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `SHOW CREATE TABLE t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (pk varchar(10) primary key charset binary collate binary)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `SHOW CREATE TABLE t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `CREATE TABLE t1 (pk varchar(10) primary key character set binary collate binary)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `SHOW CREATE TABLE t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `pk` varbinary(10) NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, } @@ -282,14 +282,14 @@ var CreateTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE numericDisplayWidthTest;", - Expected: []sql.Row{{"numericDisplayWidthTest", + Expected: []sql.UntypedSqlRow{{"numericDisplayWidthTest", "CREATE TABLE `numericDisplayWidthTest` (\n `pk` int NOT NULL,\n `b` tinyint(1),\n `ti` tinyint,\n `ti1` tinyint(1),\n `ti2` tinyint,\n `i1` int,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { // MySQL only honors display width when it is set to 1 and used with the TINYINT type; // all other uses parse correctly, but are dropped. Query: "SHOW FULL FIELDS FROM numericDisplayWidthTest;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", interface{}(nil), "NO", "PRI", nil, "", "", ""}, {"b", "tinyint(1)", interface{}(nil), "YES", "", nil, "", "", ""}, {"ti", "tinyint", interface{}(nil), "YES", "", nil, "", "", ""}, @@ -331,7 +331,7 @@ var CreateTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` int NOT NULL,\n" + " `d` datetime,\n" + @@ -340,15 +340,15 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "insert into t1 values (1, '2020-01-01 00:00:00.123456')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by pk", - Expected: []sql.Row{{1, MustParseTime(time.DateTime, "2020-01-01 00:00:00")}}, + Expected: []sql.UntypedSqlRow{{1, MustParseTime(time.DateTime, "2020-01-01 00:00:00")}}, }, { Query: "show create table t2", - Expected: []sql.Row{{"t2", + Expected: []sql.UntypedSqlRow{{"t2", "CREATE TABLE `t2` (\n" + " `pk` int NOT NULL,\n" + " `d` datetime(3),\n" + @@ -357,15 +357,15 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "insert into t2 values (1, '2020-01-01 00:00:00.123456')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t2 order by pk", - Expected: []sql.Row{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123000000Z")}}, + Expected: []sql.UntypedSqlRow{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123000000Z")}}, }, { Query: "show create table t3", - Expected: []sql.Row{{"t3", + Expected: []sql.UntypedSqlRow{{"t3", "CREATE TABLE `t3` (\n" + " `pk` int NOT NULL,\n" + " `d` datetime(6),\n" + @@ -374,11 +374,11 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "insert into t3 values (1, '2020-01-01 00:00:00.123456')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t3 order by pk", - Expected: []sql.Row{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123456000Z")}}, + Expected: []sql.UntypedSqlRow{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123456000Z")}}, }, { Query: "create table t4 (pk int primary key, d datetime(-1))", @@ -398,7 +398,7 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "CREATE TABLE tt (pk int primary key, d datetime(6) default current_timestamp(6))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -412,7 +412,7 @@ var CreateTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `pk` int NOT NULL,\n" + " `d` timestamp,\n" + @@ -421,16 +421,16 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "insert into t1 values (1, '2020-01-01 00:00:00.123456')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { SkipResultCheckOnServerEngine: true, // the nanosecond is returned over the wire Query: "select * from t1 order by pk", - Expected: []sql.Row{{1, MustParseTime(time.DateTime, "2020-01-01 00:00:00")}}, + Expected: []sql.UntypedSqlRow{{1, MustParseTime(time.DateTime, "2020-01-01 00:00:00")}}, }, { Query: "show create table t2", - Expected: []sql.Row{{"t2", + Expected: []sql.UntypedSqlRow{{"t2", "CREATE TABLE `t2` (\n" + " `pk` int NOT NULL,\n" + " `d` timestamp(3),\n" + @@ -439,16 +439,16 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "insert into t2 values (1, '2020-01-01 00:00:00.123456')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { SkipResultCheckOnServerEngine: true, // the nanosecond is returned over the wire Query: "select * from t2 order by pk", - Expected: []sql.Row{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123000000Z")}}, + Expected: []sql.UntypedSqlRow{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123000000Z")}}, }, { Query: "show create table t3", - Expected: []sql.Row{{"t3", + Expected: []sql.UntypedSqlRow{{"t3", "CREATE TABLE `t3` (\n" + " `pk` int NOT NULL,\n" + " `d` timestamp(6),\n" + @@ -457,12 +457,12 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: "insert into t3 values (1, '2020-01-01 00:00:00.123456')", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { SkipResultCheckOnServerEngine: true, // the nanosecond is returned over the wire Query: "select * from t3 order by pk", - Expected: []sql.Row{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123456000Z")}}, + Expected: []sql.UntypedSqlRow{{1, MustParseTime(time.RFC3339Nano, "2020-01-01T00:00:00.123456000Z")}}, }, { Query: "create table t4 (pk int primary key, d TIMESTAMP(-1))", @@ -483,7 +483,7 @@ var CreateTableScriptTests = []ScriptTest{ { // 64 characters Query: "create table abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl (a int primary key)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -493,7 +493,7 @@ var CreateTableScriptTests = []ScriptTest{ { // 64 characters Query: "create table a (abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl int primary key)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -503,7 +503,7 @@ var CreateTableScriptTests = []ScriptTest{ { // 64 characters Query: "create table b (a int primary key, constraint abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl check (a > 0))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -513,7 +513,7 @@ var CreateTableScriptTests = []ScriptTest{ { // 64 characters Query: "create table c (a int primary key, b int, key abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl (b))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -523,7 +523,7 @@ var CreateTableScriptTests = []ScriptTest{ { // 64 characters Query: "create table d (a int primary key, constraint abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl foreign key (a) references parent(a))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // 65 characters @@ -589,7 +589,7 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: `create table t (i int, primary key(i)) charset=utf8mb4 collate=utf8mb4_esperanto_ci;`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -599,11 +599,11 @@ var CreateTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `create table t1 (i int) charset latin1`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `show create table t1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int\n" + ") ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci"}, @@ -611,11 +611,11 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: `create table t2 (i int) character set latin1`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `show create table t2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `i` int\n" + ") ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci"}, @@ -623,11 +623,11 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: `create table t3 (i int) charset binary`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `show create table t3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t3", "CREATE TABLE `t3` (\n" + " `i` int\n" + ") ENGINE=InnoDB DEFAULT CHARSET=binary COLLATE=binary"}, @@ -635,11 +635,11 @@ var CreateTableScriptTests = []ScriptTest{ }, { Query: `create table t4 (i int) character set binary`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `show create table t4`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t4", "CREATE TABLE `t4` (\n" + " `i` int\n" + ") ENGINE=InnoDB DEFAULT CHARSET=binary COLLATE=binary"}, @@ -655,7 +655,7 @@ var CreateTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " KEY `i` (`i`)\n" + @@ -666,11 +666,11 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table if not exists t1 (i int, index (i));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " KEY `i` (`i`)\n" + @@ -681,11 +681,11 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table if not exists t1 (i int, index notthesamename (i));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " KEY `i` (`i`)\n" + @@ -696,11 +696,11 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table if not exists t1 (i int primary key, foreign key (i) references t1(i));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " KEY `i` (`i`)\n" + @@ -711,11 +711,11 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table if not exists t1 (i int, check (i > 10));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " KEY `i` (`i`)\n" + @@ -735,13 +735,13 @@ var CreateTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table t1 select * from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int NOT NULL,\n" + " `j` int DEFAULT '100'\n" + @@ -751,13 +751,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t2 select j from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `j` int DEFAULT '100'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -766,13 +766,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t3 select j as i from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t3", "CREATE TABLE `t3` (\n" + " `i` int DEFAULT '100'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -781,13 +781,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t4 select j + 1 from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t4", "CREATE TABLE `t4` (\n" + " `(a.j + 1)` bigint\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -796,13 +796,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t5 select a.j from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t5;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t5", "CREATE TABLE `t5` (\n" + " `j` int DEFAULT '100'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -811,13 +811,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t6 select sqa.j from (select i, j from a) sqa;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t6", "CREATE TABLE `t6` (\n" + " `j` int DEFAULT '100'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -826,13 +826,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t7 select (select j from a) sq from dual;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, // ??? }, }, { Query: "show create table t7;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t7", "CREATE TABLE `t7` (\n" + " `sq` int\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -841,13 +841,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t8 select * from (select * from a) a join (select * from b) b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t8;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t8", "CREATE TABLE `t8` (\n" + " `i` int NOT NULL,\n" + " `j` int DEFAULT '100',\n" + @@ -859,13 +859,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: `create table t9 select * from json_table('[{"c1": 1}]', '$[*]' columns (c1 int path '$.c1' default '100' on empty)) as jt;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "show create table t9;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t9", "CREATE TABLE `t9` (\n" + " `c1` int NOT NULL\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -875,14 +875,14 @@ var CreateTableScriptTests = []ScriptTest{ { Skip: true, // syntax unsupported Query: `create table t10 (select j from a) union (select y from b);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Skip: true, // syntax unsupported Query: "show create table t10;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t9", "CREATE TABLE `t9` (\n" + " `c1` int NOT NULL\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -891,13 +891,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t11 select sum(j) over() as jj from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t11;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t11", "CREATE TABLE `t11` (\n" + " `jj` int NOT NULL\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -906,13 +906,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t12 select j from a group by j;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t12;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t12", "CREATE TABLE `t12` (\n" + " `j` int DEFAULT '100'\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -921,13 +921,13 @@ var CreateTableScriptTests = []ScriptTest{ { Query: "create table t13 select * from c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t13;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t13", "CREATE TABLE `t13` (\n" + " `p` int NOT NULL,\n" + " `q` int DEFAULT '300',\n" + @@ -955,7 +955,7 @@ var CreateTableInSubroutineTests = []ScriptTest{ }, { Query: "SELECT * from bar;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, Skip: true, }, }, @@ -990,11 +990,11 @@ var CreateTableAutoIncrementTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table t1 (a int auto_increment unique, b int, primary key(b))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t1 (b) values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.OkResult{ RowsAffected: 2, @@ -1005,7 +1005,7 @@ var CreateTableAutoIncrementTests = []ScriptTest{ }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL AUTO_INCREMENT,\n" + " `b` int NOT NULL,\n" + @@ -1015,7 +1015,7 @@ var CreateTableAutoIncrementTests = []ScriptTest{ }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, }, }, @@ -1025,11 +1025,11 @@ var CreateTableAutoIncrementTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table t1 (a int auto_increment, b int, primary key(b), unique key(a))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t1 (b) values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.OkResult{ RowsAffected: 2, @@ -1040,7 +1040,7 @@ var CreateTableAutoIncrementTests = []ScriptTest{ }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL AUTO_INCREMENT,\n" + " `b` int NOT NULL,\n" + @@ -1050,7 +1050,7 @@ var CreateTableAutoIncrementTests = []ScriptTest{ }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, }, }, @@ -1071,11 +1071,11 @@ var CreateTableAutoIncrementTests = []ScriptTest{ { // this just ignores the auto_increment argument Query: "create table t1 (i int) auto_increment=10;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -1084,11 +1084,11 @@ var CreateTableAutoIncrementTests = []ScriptTest{ { Query: "create table t2 (i int auto_increment primary key) auto_increment=10;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `i` int NOT NULL AUTO_INCREMENT,\n" + " PRIMARY KEY (`i`)\n" + @@ -1097,11 +1097,11 @@ var CreateTableAutoIncrementTests = []ScriptTest{ }, { Query: "insert into t2 values (null), (null), (null)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 3, InsertID: 10}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 3, InsertID: 10}}}, }, { Query: "select * from t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, {11}, {12}, @@ -1120,26 +1120,26 @@ var BrokenCreateTableQueries = []WriteQueryTest{ // To fix this, Vitess should return the parsed table options as structured data, instead of as a // single string. WriteQuery: `create table tableWithComment (pk int) COMMENT "'"`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SHOW CREATE TABLE tableWithComment", - ExpectedSelect: []sql.Row{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT=''''"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"tableWithComment", "CREATE TABLE `tableWithComment` (\n `pk` int\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin COMMENT=''''"}}, }, { WriteQuery: `create table t1 (b blob, primary key(b(1)))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `b` blob NOT NULL,\n PRIMARY KEY (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `b` blob NOT NULL,\n PRIMARY KEY (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `create table t1 (b1 blob, b2 blob, primary key(b1(123), b2(456)))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `b1` blob NOT NULL,\n `b2` blob NOT NULL,\n PRIMARY KEY (`b1`(123),`b2`(456))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `b1` blob NOT NULL,\n `b2` blob NOT NULL,\n PRIMARY KEY (`b1`(123),`b2`(456))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { WriteQuery: `create table t1 (i int, b1 blob, b2 blob, primary key(b1(123), b2(456), i))`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: `show create table t1`, - ExpectedSelect: []sql.Row{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob NOT NULL,\n `b2` blob NOT NULL,\n PRIMARY KEY (`b1`(123),`b2`(456),`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n `i` int NOT NULL,\n `b1` blob NOT NULL,\n `b2` blob NOT NULL,\n PRIMARY KEY (`b1`(123),`b2`(456),`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, } diff --git a/enginetest/queries/delete_queries.go b/enginetest/queries/delete_queries.go index 17dc603561..b29ead5566 100644 --- a/enginetest/queries/delete_queries.go +++ b/enginetest/queries/delete_queries.go @@ -24,121 +24,121 @@ import ( var DeleteTests = []WriteQueryTest{ { WriteQuery: "DELETE FROM mytable;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable;", ExpectedSelect: nil, }, { WriteQuery: "DELETE FROM mytable WHERE i = 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE I = 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE i < 3;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE i > 1;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE i <= 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE i >= 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE s = 'first row';", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(2), "second row"}, {int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE s <> 'dne';", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable;", ExpectedSelect: nil, }, { WriteQuery: "DELETE FROM mytable WHERE i in (2,3);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE s LIKE '%row';", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable;", ExpectedSelect: nil, }, { WriteQuery: "DELETE FROM mytable WHERE s = 'dne';", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable ORDER BY i DESC LIMIT 1;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(2), "second row"}}, }, { WriteQuery: "DELETE FROM mytable ORDER BY i DESC LIMIT 1 OFFSET 1;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(3), "third row"}}, }, { WriteQuery: "DELETE FROM mytable WHERE (i,s) = (1, 'first row');", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(2), "second row"}, {int64(3), "third row"}}, }, { WriteQuery: `DELETE FROM tabletest where 's' = 'something'`, - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, }, { WriteQuery: "with t (n) as (select (1) from dual) delete from mytable where i in (select n from t)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, SelectQuery: "select * from mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(2, "second row"), - sql.NewRow(3, "third row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {2, "second row"}, + {3, "third row"}, }, }, { WriteQuery: "with recursive t (n) as (select (1) from dual union all select n + 1 from t where n < 2) delete from mytable where i in (select n from t)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, SelectQuery: "select * from mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(3, "third row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {3, "third row"}, }, }, } @@ -148,138 +148,138 @@ var DeleteTests = []WriteQueryTest{ var DeleteJoinTests = []WriteQueryTest{ { WriteQuery: "DELETE mytable FROM mytable join tabletest where mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 3}}, }, { WriteQuery: "DELETE MYTABLE FROM mytAble join tAbletest where mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 3}}, }, { WriteQuery: "DELETE tabletest FROM mytable join tabletest where mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{3, 0}}, + ExpectedSelect: []sql.UntypedSqlRow{{3, 0}}, }, { WriteQuery: "DELETE t1 FROM mytable as t1 join tabletest where t1.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 3}}, }, { WriteQuery: "DELETE mytable, tabletest FROM mytable join tabletest where mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 0}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 0}}, }, { WriteQuery: "DELETE MYTABLE, TABLETEST FROM mytable join tabletest where mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 0}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 0}}, }, { WriteQuery: "DELETE mytable FROM mytable;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT count(*) FROM mytable;", - ExpectedSelect: []sql.Row{{0}}, + ExpectedSelect: []sql.UntypedSqlRow{{0}}, }, { WriteQuery: "DELETE mytable FROM mytable WHERE i > 9999;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, SelectQuery: "SELECT count(*) FROM mytable;", - ExpectedSelect: []sql.Row{{3}}, + ExpectedSelect: []sql.UntypedSqlRow{{3}}, }, { WriteQuery: "DELETE FROM mytable USING mytable inner join tabletest on mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 3}}, }, { WriteQuery: "DELETE FROM tabletest USING mytable inner join tabletest on mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{3, 0}}, + ExpectedSelect: []sql.UntypedSqlRow{{3, 0}}, }, { WriteQuery: "DELETE FROM mytable, tabletest USING mytable inner join tabletest on mytable.i=tabletest.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{0, 0}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, 0}}, }, { WriteQuery: "DELETE mytable FROM mytable join tabletest where mytable.i=tabletest.i and mytable.i = 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{2, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{2, 3}}, }, { WriteQuery: "DELETE mytable, tabletest FROM mytable join tabletest where mytable.i=tabletest.i and mytable.i = 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{2, 2}}, + ExpectedSelect: []sql.UntypedSqlRow{{2, 2}}, }, { WriteQuery: "DELETE tabletest, mytable FROM mytable join tabletest where mytable.i=tabletest.i and mytable.i = 2;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{2, 2}}, + ExpectedSelect: []sql.UntypedSqlRow{{2, 2}}, }, { WriteQuery: "DELETE mytable FROM mytable join (select 1 as i union all select 2 as i) dt where mytable.i=dt.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{1, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, 3}}, }, { WriteQuery: "with t (n) as (select (1) from dual) delete mytable from mytable join tabletest where mytable.i=tabletest.i and mytable.i in (select n from t)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{2, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{2, 3}}, }, { WriteQuery: "with t (n) as (select (1) from dual) delete mytable, tabletest from mytable join tabletest where mytable.i=tabletest.i and mytable.i in (select n from t)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{2, 2}}, + ExpectedSelect: []sql.UntypedSqlRow{{2, 2}}, }, { // Single target table, join with table function WriteQuery: "DELETE mytable FROM mytable join tabletest on mytable.i=tabletest.i join JSON_TABLE('[{\"x\": 1},{\"x\": 2}]', '$[*]' COLUMNS (x INT PATH '$.x')) as jt on jt.x=mytable.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{1, 3}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, 3}}, }, { // Multiple target tables, join with table function WriteQuery: "DELETE mytable, tabletest FROM mytable join tabletest on mytable.i=tabletest.i join JSON_TABLE('[{\"x\": 1},{\"x\": 2}]', '$[*]' COLUMNS (x INT PATH '$.x')) as jt on jt.x=mytable.i;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT (select count(*) FROM mytable), (SELECT count(*) from tabletest);", - ExpectedSelect: []sql.Row{{1, 1}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, 1}}, }, } var SpatialDeleteTests = []WriteQueryTest{ { WriteQuery: "DELETE FROM point_table;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM point_table;", ExpectedSelect: nil, }, { WriteQuery: "DELETE FROM line_table;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM line_table;", ExpectedSelect: nil, }, { WriteQuery: "DELETE FROM polygon_table;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM polygon_table;", ExpectedSelect: nil, }, diff --git a/enginetest/queries/derived_table_outer_scope_visibility_queries.go b/enginetest/queries/derived_table_outer_scope_visibility_queries.go index 2cb1624ff9..cc62f62c97 100644 --- a/enginetest/queries/derived_table_outer_scope_visibility_queries.go +++ b/enginetest/queries/derived_table_outer_scope_visibility_queries.go @@ -32,57 +32,57 @@ var DerivedTableOuterScopeVisibilityQueries = []ScriptTest{ // A subquery containing a derived table, used in the WHERE clause of a top-level query, has visibility // to tables and columns in the top-level query. Query: "SELECT * FROM t1 WHERE t1.d > (SELECT dt.a FROM (SELECT t2.a AS a FROM t2 WHERE t2.b = t1.b) dt);", - Expected: []sql.Row{{2, 2, 2, 200, 200}}, + Expected: []sql.UntypedSqlRow{{2, 2, 2, 200, 200}}, }, { // A subquery containing a derived table, used in the HAVING clause of a top-level query, has visibility // to tables and columns in the top-level query. Query: "SELECT * FROM t1 HAVING t1.d > (SELECT dt.a FROM (SELECT t2.a AS a FROM t2 WHERE t2.b = t1.b) dt);", - Expected: []sql.Row{{2, 2, 2, 200, 200}}, + Expected: []sql.UntypedSqlRow{{2, 2, 2, 200, 200}}, }, { Query: "SELECT (SELECT dt.z FROM (SELECT t2.a AS z FROM t2 WHERE t2.b = t1.b) dt) FROM t1;", - Expected: []sql.Row{{nil}, {2}}, + Expected: []sql.UntypedSqlRow{{nil}, {2}}, }, { Query: "SELECT (SELECT max(dt.z) FROM (SELECT t2.a AS z FROM t2 WHERE t2.b = t1.b) dt) FROM t1;", - Expected: []sql.Row{{nil}, {2}}, + Expected: []sql.UntypedSqlRow{{nil}, {2}}, }, { // A subquery containing a derived table, projected in a SELECT query, has visibility to tables and columns // in the top-level query. Query: "SELECT t1.*, (SELECT max(dt.a) FROM (SELECT t2.a AS a FROM t2 WHERE t2.b = t1.b) dt) FROM t1;", - Expected: []sql.Row{{1, 1, 1, 100, 100, nil}, {2, 2, 2, 200, 200, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1, 100, 100, nil}, {2, 2, 2, 200, 200, 2}}, }, { // A subquery containing a derived table, projected in a GROUPBY query, has visibility to tables and columns // in the top-level query. Query: "SELECT t1.a, t1.b, (SELECT max(dt.a) FROM (SELECT t2.a AS a FROM t2 WHERE t2.b = t1.b) dt) FROM t1 GROUP BY 1, 2, 3;", - Expected: []sql.Row{{1, 1, nil}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, nil}, {2, 2, 2}}, }, { // A subquery containing a derived table, projected in a WINDOW query, has visibility to tables and columns // in the top-level query. Query: "SELECT val, row_number() over (partition by val) as 'row_number', (SELECT two from (SELECT val*2, val*3) as dt(one, two)) as a1 from numbers having a1 > 10;", - Expected: []sql.Row{{4, 1, 12}, {5, 1, 15}, {6, 1, 18}, {6, 2, 18}, {6, 3, 18}}, + Expected: []sql.UntypedSqlRow{{4, 1, 12}, {5, 1, 15}, {6, 1, 18}, {6, 2, 18}, {6, 3, 18}}, }, { // A subquery containing a derived table, used in the GROUP BY clause of a top-level query as a grouping // expression, has visibility to tables and columns in the top-level query. Skip: true, // memoization to fix Query: "SELECT max(val), (select max(dt.a) from (SELECT val as a) as dt(a)) as a1 from numbers group by a1;", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}}, }, { // CTEs are eligible for outer scope visibility, as long as they are contained in a subquery expression. Query: "SELECT DISTINCT numbers.val, (WITH cte1 AS (SELECT val * 2 as val2 from numbers) SELECT count(*) from cte1 where numbers.val = cte1.val2) as count from numbers having count > 0;", - Expected: []sql.Row{{2, 2}, {4, 1}, {6, 3}}, + Expected: []sql.UntypedSqlRow{{2, 2}, {4, 1}, {6, 3}}, }, { // Recursive CTEs are eligible for outer scope visibility as well, as long as they are contained in a // subquery expression. Query: "select distinct n1.val, (with recursive cte1(n) as (select (n1.val) from dual union all select n + 1 from cte1 where n < 10) select sum(n) from cte1) from numbers n1 where n1.val > 4;", - Expected: []sql.Row{{5, 45.0}, {6, 40.0}}, + Expected: []sql.UntypedSqlRow{{5, 45.0}, {6, 40.0}}, }, }, }, @@ -148,11 +148,11 @@ SELECT ( ) AS rack_count FROM dcim_rackgroup WHERE dcim_rackgroup.id IN ('rackgroup1', 'rackgroup2')`, - Expected: []sql.Row{{4}, {1}}, + Expected: []sql.UntypedSqlRow{{4}, {1}}, }, { Query: "SELECT COUNT(*) FROM (SELECT (SELECT count(*) FROM (SELECT U0.`id` FROM `dcim_rack` U0 INNER JOIN `dcim_rackgroup` U1 ON (U0.`group_id` = U1.`id`) WHERE (U1.`lft` >= `dcim_rackgroup`.`lft` AND U1.`lft` <= `dcim_rackgroup`.`rght` AND U1.`tree_id` = `dcim_rackgroup`.`tree_id`)) _count) AS `rack_count` FROM `dcim_rackgroup` WHERE `dcim_rackgroup`.`id` IN ('rackgroup1', 'rackgroup2')) subquery;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, }, }, diff --git a/enginetest/queries/event_queries.go b/enginetest/queries/event_queries.go index 09b6c81306..857761dfa4 100644 --- a/enginetest/queries/event_queries.go +++ b/enginetest/queries/event_queries.go @@ -31,31 +31,31 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE EVENT event_with_starts_and_ends ON SCHEDULE EVERY '1:2' MINUTE_SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR ENDS CURRENT_TIMESTAMP + INTERVAL 1 DAY DISABLE DO INSERT INTO totals VALUES (1);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CREATE EVENT event_with_starts_only ON SCHEDULE EVERY '1:2' MINUTE_SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DISABLE DO INSERT INTO totals VALUES (1);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CREATE EVENT event_with_ends_only ON SCHEDULE EVERY '1:2' MINUTE_SECOND ENDS CURRENT_TIMESTAMP + INTERVAL 1 DAY DISABLE DO INSERT INTO totals VALUES (1);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CREATE EVENT event_without_starts_and_ends ON SCHEDULE EVERY '1:2' MINUTE_SECOND DISABLE DO INSERT INTO totals VALUES (1);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CREATE EVENT event2 ON SCHEDULE EVERY 3 DAY STARTS '2037-10-16 23:59:00' + INTERVAL 2 DAY ENDS '2037-11-16 23:59:00' + INTERVAL 1 MONTH DO INSERT INTO totals VALUES (1000);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW EVENTS LIKE 'event2';", - Expected: []sql.Row{{"mydb", "event2", "`root`@`localhost`", "SYSTEM", "RECURRING", nil, "3", "DAY", "2037-10-18 23:59:00", "2037-12-16 23:59:00", "ENABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "event2", "`root`@`localhost`", "SYSTEM", "RECURRING", nil, "3", "DAY", "2037-10-18 23:59:00", "2037-12-16 23:59:00", "ENABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "SHOW CREATE EVENT event2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"event2", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `event2` ON SCHEDULE EVERY 3 DAY STARTS '2037-10-18 23:59:00' ENDS '2037-12-16 23:59:00' ON COMPLETION NOT PRESERVE ENABLE DO INSERT INTO totals VALUES (1000)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, }, }, @@ -70,11 +70,11 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE EVENT event2 ON SCHEDULE AT '38-01-16 12:2:3.' + INTERVAL 1 DAY ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (100);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW EVENTS;", - Expected: []sql.Row{{"mydb", "event2", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2038-01-17 12:02:03", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "event2", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2038-01-17 12:02:03", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, }, }, @@ -88,15 +88,15 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW EVENTS;", - Expected: []sql.Row{{"mydb", "event1", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2038-01-17 23:59:00", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "event1", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2038-01-17 23:59:00", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "DROP EVENT event1", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW EVENTS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -118,7 +118,7 @@ var EventTests = []ScriptTest{ }, { Query: "CREATE EVENT IF NOT EXISTS my_event1 ON SCHEDULE EVERY '1:2' MINUTE_SECOND DISABLE DO INSERT INTO totals VALUES (1);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, ExpectedWarning: 1537, ExpectedWarningsCount: 1, ExpectedWarningMessageSubstring: "Event 'my_event1' already exists", @@ -137,36 +137,36 @@ var EventTests = []ScriptTest{ }, { Query: "DROP EVENT IF EXISTS non_existent_event", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, ExpectedWarning: 1305, ExpectedWarningsCount: 1, ExpectedWarningMessageSubstring: "Event non_existent_event does not exist", }, { Query: "CREATE EVENT past_event1 ON SCHEDULE AT '2006-02-10 23:59:00' DISABLE DO INSERT INTO totals VALUES (100);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, ExpectedWarning: 1588, ExpectedWarningMessageSubstring: "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.", ExpectedWarningsCount: 1, }, { Query: "SHOW EVENTS LIKE 'past_event1';", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "CREATE EVENT past_event2 ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DO INSERT INTO totals VALUES (100);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, ExpectedWarning: 1544, ExpectedWarningMessageSubstring: "Event execution time is in the past. Event has been disabled", ExpectedWarningsCount: 1, }, { Query: "SHOW EVENTS LIKE 'past_event2';", - Expected: []sql.Row{{"mydb", "past_event2", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2006-02-10 23:59:00", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "past_event2", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2006-02-10 23:59:00", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP ON COMPLETION PRESERVE DISABLE ON SLAVE DO INSERT INTO totals VALUES (100);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, ExpectedWarning: 1235, ExpectedWarningMessageSubstring: "DISABLE ON SLAVE status is not supported yet, used DISABLE status instead", ExpectedWarningsCount: 1, @@ -187,14 +187,14 @@ var EventTests = []ScriptTest{ }, { Query: "ALTER EVENT my_event1 ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, ExpectedWarning: 1544, ExpectedWarningsCount: 1, ExpectedWarningMessageSubstring: "Event execution time is in the past. Event has been disabled", }, { Query: "CREATE EVENT my_event2 ON SCHEDULE EVERY '1:2' MINUTE_SECOND DISABLE DO INSERT INTO totals VALUES (2);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "ALTER EVENT my_event2 RENAME TO my_event1;", @@ -212,11 +212,11 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER EVENT my_event1 ENABLE;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW CREATE EVENT my_event1;", - Expected: []sql.Row{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, }, }, @@ -230,23 +230,23 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER EVENT my_event1 ON COMPLETION NOT PRESERVE;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW CREATE EVENT my_event1;", - Expected: []sql.Row{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION NOT PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION NOT PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "SHOW EVENTS;", - Expected: []sql.Row{{"mydb", "my_event1", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2006-02-10 23:59:00", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "my_event1", "`root`@`localhost`", "SYSTEM", "ONE TIME", "2006-02-10 23:59:00", nil, nil, nil, nil, "DISABLED", 0, "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "ALTER EVENT my_event1 ENABLE;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW EVENTS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -260,19 +260,19 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER EVENT my_event1 ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW CREATE EVENT my_event1;", - Expected: []sql.Row{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "ALTER EVENT my_event1 ON SCHEDULE EVERY 5 HOUR STARTS '2037-10-16 23:59:00' COMMENT 'updating the event schedule from AT';", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW CREATE EVENT my_event1;", - Expected: []sql.Row{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE EVERY 5 HOUR STARTS '2037-10-16 23:59:00' ON COMPLETION PRESERVE DISABLE COMMENT 'updating the event schedule from AT' DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE EVERY 5 HOUR STARTS '2037-10-16 23:59:00' ON COMPLETION PRESERVE DISABLE COMMENT 'updating the event schedule from AT' DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, }, }, @@ -286,23 +286,23 @@ var EventTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE EVENT my_event1;", - Expected: []sql.Row{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"my_event1", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `my_event1` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "ALTER EVENT my_event1 RENAME TO newEventName;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW CREATE EVENT newEventName;", - Expected: []sql.Row{{"newEventName", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `newEventName` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"newEventName", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `newEventName` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE DO INSERT INTO totals VALUES (1)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, { Query: "ALTER EVENT newEventName COMMENT 'insert 2 instead of 1' DO INSERT INTO totals VALUES (2);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SHOW CREATE EVENT newEventName;", - Expected: []sql.Row{{"newEventName", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `newEventName` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE COMMENT 'insert 2 instead of 1' DO INSERT INTO totals VALUES (2)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"newEventName", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "SYSTEM", "CREATE DEFINER = `root`@`localhost` EVENT `newEventName` ON SCHEDULE AT '2006-02-10 23:59:00' ON COMPLETION PRESERVE DISABLE COMMENT 'insert 2 instead of 1' DO INSERT INTO totals VALUES (2)", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}}, }, }, }, diff --git a/enginetest/queries/external_procedure_queries.go b/enginetest/queries/external_procedure_queries.go index c4db672e01..f8c95285bf 100644 --- a/enginetest/queries/external_procedure_queries.go +++ b/enginetest/queries/external_procedure_queries.go @@ -35,7 +35,7 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam;", - Expected: []sql.Row{{16}}, + Expected: []sql.UntypedSqlRow{{16}}, }, }, }, @@ -47,19 +47,19 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @uservar12;", - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, { Query: "SELECT @uservar13;", - Expected: []sql.Row{{uint(5)}}, + Expected: []sql.UntypedSqlRow{{uint(5)}}, }, { Query: "SELECT @uservar14;", - Expected: []sql.Row{{"5"}}, + Expected: []sql.UntypedSqlRow{{"5"}}, }, { Query: "SELECT @uservar15;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, }, }, @@ -71,7 +71,7 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL p1(11);", - Expected: []sql.Row{{22}}, + Expected: []sql.UntypedSqlRow{{22}}, }, }, }, @@ -80,15 +80,15 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL memory_overloaded_mult(1);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "CALL memory_overloaded_mult(2, 3);", - Expected: []sql.Row{{6}}, + Expected: []sql.UntypedSqlRow{{6}}, }, { Query: "CALL memory_overloaded_mult(4, 5, 6);", - Expected: []sql.Row{{120}}, + Expected: []sql.UntypedSqlRow{{120}}, }, }, }, @@ -98,17 +98,17 @@ var ExternalProcedureTests = []ScriptTest{ { Query: "CALL memory_overloaded_type_test(1, 100, 10000, 1000000, 100000000, 3, 300," + "10, 1000, 100000, 10000000, 1000000000, 30, 3000);", - Expected: []sql.Row{{1111114444}}, + Expected: []sql.UntypedSqlRow{{1111114444}}, }, { Query: "CALL memory_overloaded_type_test(false, 'hi', 'A', '2020-02-20 12:00:00', 123.456," + "true, 'bye', 'B', '2022-02-02 12:00:00', 654.32);", - Expected: []sql.Row{{`aa:false,ba:true,ab:"hi",bb:"bye",ac:[65],bc:[66],ad:2020-02-20,bd:2022-02-02,ae:123.456,be:654.32`}}, + Expected: []sql.UntypedSqlRow{{`aa:false,ba:true,ab:"hi",bb:"bye",ac:[65],bc:[66],ad:2020-02-20,bd:2022-02-02,ae:123.456,be:654.32`}}, }, { Query: "CALL memory_type_test3(1, 100, 10000, 1000000, 100000000, 3, 300," + "10, 1000, 100000, 10000000, 1000000000, 30, 3000);", - Expected: []sql.Row{{uint64(1111114444)}}, + Expected: []sql.UntypedSqlRow{{uint64(1111114444)}}, }, }, }, @@ -123,23 +123,23 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam1, @outparam2, @outparam3, @outparam4;", - Expected: []sql.Row{{1, 0, "A", "B"}}, + Expected: []sql.UntypedSqlRow{{1, 0, "A", "B"}}, }, { Query: "CALL memory_inout_bool_byte(@outparam1, @outparam2, @outparam3, @outparam4);", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @outparam1, @outparam2, @outparam3, @outparam4;", - Expected: []sql.Row{{1, 1, "A", []byte("C")}}, + Expected: []sql.UntypedSqlRow{{1, 1, "A", []byte("C")}}, }, { Query: "CALL memory_inout_bool_byte(@outparam1, @outparam2, @outparam3, @outparam4);", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT @outparam1, @outparam2, @outparam3, @outparam4;", - Expected: []sql.Row{{1, 0, "A", []byte("D")}}, + Expected: []sql.UntypedSqlRow{{1, 0, "A", []byte("D")}}, }, }, }, @@ -157,23 +157,23 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL memory_variadic_add();", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "CALL memory_variadic_add(1);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "CALL memory_variadic_add(1, 2);", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "CALL memory_variadic_add(1, 2, 3);", - Expected: []sql.Row{{6}}, + Expected: []sql.UntypedSqlRow{{6}}, }, { Query: "CALL memory_variadic_add(1, 2, 3, 4);", - Expected: []sql.Row{{10}}, + Expected: []sql.UntypedSqlRow{{10}}, }, }, }, @@ -182,15 +182,15 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL memory_variadic_byte_slice();", - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, { Query: "CALL memory_variadic_byte_slice('A');", - Expected: []sql.Row{{"A"}}, + Expected: []sql.UntypedSqlRow{{"A"}}, }, { Query: "CALL memory_variadic_byte_slice('A', 'B');", - Expected: []sql.Row{{"AB"}}, + Expected: []sql.UntypedSqlRow{{"AB"}}, }, }, }, @@ -207,7 +207,7 @@ var ExternalProcedureTests = []ScriptTest{ }, { Query: "CALL memory_variadic_overload('A', 'B');", - Expected: []sql.Row{{"A-B"}}, + Expected: []sql.UntypedSqlRow{{"A-B"}}, }, { Query: "CALL memory_variadic_overload('A', 'B', 'C');", @@ -215,7 +215,7 @@ var ExternalProcedureTests = []ScriptTest{ }, { Query: "CALL memory_variadic_overload('A', 'B', 5);", - Expected: []sql.Row{{"A,B,[5]"}}, + Expected: []sql.UntypedSqlRow{{"A,B,[5]"}}, }, }, }, @@ -224,7 +224,7 @@ var ExternalProcedureTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create procedure memory_variadic_overload;", - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "memory_variadic_overload", "", "CREATE PROCEDURE memory_variadic_overload() SELECT 'External stored procedure';", diff --git a/enginetest/queries/foreign_key_queries.go b/enginetest/queries/foreign_key_queries.go index 1bed490dfa..33f44f45fc 100644 --- a/enginetest/queries/foreign_key_queries.go +++ b/enginetest/queries/foreign_key_queries.go @@ -32,7 +32,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE child;", - Expected: []sql.Row{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_named` (`v1`),\n CONSTRAINT `fk_named` FOREIGN KEY (`v1`) REFERENCES `parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_named` (`v1`),\n CONSTRAINT `fk_named` FOREIGN KEY (`v1`) REFERENCES `parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -44,7 +44,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE sibling;", - Expected: []sql.Row{{"sibling", "CREATE TABLE `sibling` (\n `id` int NOT NULL,\n `v1` int,\n PRIMARY KEY (`id`),\n KEY `fk_named` (`v1`),\n CONSTRAINT `fk_named` FOREIGN KEY (`v1`) REFERENCES `parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"sibling", "CREATE TABLE `sibling` (\n `id` int NOT NULL,\n `v1` int,\n PRIMARY KEY (`id`),\n KEY `fk_named` (`v1`),\n CONSTRAINT `fk_named` FOREIGN KEY (`v1`) REFERENCES `parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -57,7 +57,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE child ADD CONSTRAINT fk_id FOREIGN KEY (v1) REFERENCES parent(id);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -105,18 +105,18 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE TABLE child1 (pk BIGINT PRIMARY KEY, v1 CHAR(30), CONSTRAINT fk_child1 FOREIGN KEY (v1) REFERENCES parent1 (v1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE child2 (pk BIGINT PRIMARY KEY, v1 VARCHAR(30), CONSTRAINT fk_child2 FOREIGN KEY (v1) REFERENCES parent2 (v1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE child3 (pk BIGINT PRIMARY KEY, v1 BINARY(30), CONSTRAINT fk_child3 FOREIGN KEY (v1) REFERENCES parent3 (v1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE child4 (pk BIGINT PRIMARY KEY, v1 VARBINARY(30), CONSTRAINT fk_child4 FOREIGN KEY (v1) REFERENCES parent4 (v1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -233,15 +233,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE child;", - Expected: []sql.Row{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`),\n CONSTRAINT `fk_name` FOREIGN KEY (`v1`) REFERENCES `parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`),\n CONSTRAINT `fk_name` FOREIGN KEY (`v1`) REFERENCES `parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE child DROP FOREIGN KEY fk_name;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE child;", - Expected: []sql.Row{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE child DROP FOREIGN KEY fk_name;", @@ -291,15 +291,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE child;", - Expected: []sql.Row{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`),\n CONSTRAINT `fk_name` FOREIGN KEY (`v1`) REFERENCES `new_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`),\n CONSTRAINT `fk_name` FOREIGN KEY (`v1`) REFERENCES `new_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "RENAME TABLE child TO new_child;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE new_child;", - Expected: []sql.Row{{"new_child", "CREATE TABLE `new_child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`),\n CONSTRAINT `fk_name` FOREIGN KEY (`v1`) REFERENCES `new_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"new_child", "CREATE TABLE `new_child` (\n `id` int NOT NULL,\n `v1` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk_name` (`v1`),\n CONSTRAINT `fk_name` FOREIGN KEY (`v1`) REFERENCES `new_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -316,11 +316,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "RENAME TABLE b_test TO c_test;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE c_test;", - Expected: []sql.Row{{"c_test", "CREATE TABLE `c_test` (\n `a_id` int,\n KEY `a_id` (`a_id`),\n " + + Expected: []sql.UntypedSqlRow{{"c_test", "CREATE TABLE `c_test` (\n `a_id` int,\n KEY `a_id` (`a_id`),\n " + "CONSTRAINT `c_test_ibfk_1` FOREIGN KEY (`a_id`) REFERENCES `a_test` (`id`)\n) " + "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, @@ -336,15 +336,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE child1;", - Expected: []sql.Row{{"child1", "CREATE TABLE `child1` (\n `pk` bigint NOT NULL,\n PRIMARY KEY (`pk`),\n CONSTRAINT `fk` FOREIGN KEY (`pk`) REFERENCES `new_parent1` (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"child1", "CREATE TABLE `child1` (\n `pk` bigint NOT NULL,\n PRIMARY KEY (`pk`),\n CONSTRAINT `fk` FOREIGN KEY (`pk`) REFERENCES `new_parent1` (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "RENAME TABLE child1 TO new_child1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE new_child1;", - Expected: []sql.Row{{"new_child1", "CREATE TABLE `new_child1` (\n `pk` bigint NOT NULL,\n PRIMARY KEY (`pk`),\n CONSTRAINT `fk` FOREIGN KEY (`pk`) REFERENCES `new_parent1` (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"new_child1", "CREATE TABLE `new_child1` (\n `pk` bigint NOT NULL,\n PRIMARY KEY (`pk`),\n CONSTRAINT `fk` FOREIGN KEY (`pk`) REFERENCES `new_parent1` (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -360,11 +360,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DROP TABLE child;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DROP TABLE parent;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -376,7 +376,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DROP TABLE t;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -397,15 +397,15 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE child DROP FOREIGN KEY fk_name;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child DROP INDEX v1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE parent DROP INDEX v1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -419,7 +419,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE child;", - Expected: []sql.Row{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1_new` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk1` (`v1_new`),\n CONSTRAINT `fk1` FOREIGN KEY (`v1_new`) REFERENCES `parent` (`v1_new`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"child", "CREATE TABLE `child` (\n `id` int NOT NULL,\n `v1_new` int,\n `v2` int,\n PRIMARY KEY (`id`),\n KEY `fk1` (`v1_new`),\n CONSTRAINT `fk1` FOREIGN KEY (`v1_new`) REFERENCES `parent` (`v1_new`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -488,39 +488,39 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE parent1 MODIFY v1 CHAR(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child1 MODIFY v1 CHAR(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE parent2 MODIFY v1 VARCHAR(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child2 MODIFY v1 VARCHAR(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE parent3 MODIFY v1 BINARY(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child3 MODIFY v1 BINARY(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE parent4 MODIFY v1 VARBINARY(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child4 MODIFY v1 VARBINARY(30);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // Make sure the type change didn't cause INSERTs to break or some other strange behavior Query: "INSERT INTO child2 VALUES (2, 'bb');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO child2 VALUES (3, 'cc');", @@ -547,11 +547,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE parent1 MODIFY v2 BIGINT;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child1 MODIFY v2 BIGINT;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -567,11 +567,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE child DROP FOREIGN KEY fk_name;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE parent DROP COLUMN v1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -587,11 +587,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE child DROP FOREIGN KEY fk_name;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child DROP COLUMN v1;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -635,15 +635,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM one;", - Expected: []sql.Row{{1, 5, 4}, {2, 7, 5}, {4, 9, 5}}, + Expected: []sql.UntypedSqlRow{{1, 5, 4}, {2, 7, 5}, {4, 9, 5}}, }, { Query: "SELECT * FROM two;", - Expected: []sql.Row{{2, 5, 3}, {3, 7, 5}}, + Expected: []sql.UntypedSqlRow{{2, 5, 3}, {3, 7, 5}}, }, { Query: "SELECT * FROM three;", - Expected: []sql.Row{{3, 5, 3}, {4, 7, 5}}, + Expected: []sql.UntypedSqlRow{{3, 5, 3}, {4, 7, 5}}, }, }, }, @@ -662,19 +662,19 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM one;", - Expected: []sql.Row{{1, 1, 1}, {2, 4, 8}, {3, 9, 27}, {4, 4, 16}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 4, 8}, {3, 9, 27}, {4, 4, 16}}, }, { Query: "SELECT * FROM two;", - Expected: []sql.Row{{1, 1, 1}, {2, nil, 2}, {3, nil, 3}, {4, 4, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, nil, 2}, {3, nil, 3}, {4, 4, 4}}, }, { Query: "DELETE one FROM one inner join two on one.pk=two.pk;", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "select * from two;", - Expected: []sql.Row{{1, nil, 1}, {2, nil, 2}, {3, nil, 3}, {4, nil, 4}}, + Expected: []sql.UntypedSqlRow{{1, nil, 1}, {2, nil, 2}, {3, nil, 3}, {4, nil, 4}}, }, }, }, @@ -693,7 +693,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "UPDATE one SET v1 = v1;", - Expected: []sql.Row{{types.OkResult{Info: plan.UpdateInfo{Matched: 3}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{Info: plan.UpdateInfo{Matched: 3}}}}, }, { Query: "DELETE FROM one;", @@ -725,7 +725,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * from three union all select * from four;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -745,11 +745,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * from three;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from four;", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, }, }, @@ -768,7 +768,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "UPDATE one SET v1 = v1;", - Expected: []sql.Row{{types.OkResult{Info: plan.UpdateInfo{Matched: 3}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{Info: plan.UpdateInfo{Matched: 3}}}}, }, { Query: "DELETE FROM one;", @@ -795,7 +795,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "INSERT INTO two VALUES (4, NULL, NULL);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -811,11 +811,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE parent ADD CONSTRAINT fk_name1 FOREIGN KEY (v1) REFERENCES parent(v1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE parent ADD CONSTRAINT fk_name2 FOREIGN KEY (v1, v2) REFERENCES parent(v1, v2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -831,7 +831,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{1, 1, 1}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 2, 1}}, }, { Query: "DELETE FROM parent WHERE v1 = 1;", @@ -863,11 +863,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "REPLACE INTO parent VALUES (1, 1, 1), (2, 2, 2);", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{1, 1, 1}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 2, 2}}, }, { Query: "UPDATE parent SET v1 = 2;", @@ -875,7 +875,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "SELECT * FROM parent order by v1;", - Expected: []sql.Row{{1, 1, 1}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 2, 2}}, }, { Query: "UPDATE parent SET v1 = 2 WHERE id = 1;", @@ -883,7 +883,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "SELECT * FROM parent order by v1;", - Expected: []sql.Row{{1, 1, 1}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 2, 2}}, }, { Query: "REPLACE INTO parent VALUES (1, 1, 2), (2, 2, 1);", @@ -891,19 +891,19 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "SELECT * FROM parent order by v1;", - Expected: []sql.Row{{1, 1, 1}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 2, 2}}, }, { Query: "UPDATE parent SET v2 = 2 WHERE id = 1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "UPDATE parent SET v2 = 1 WHERE id = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT * FROM parent order by v1;", - Expected: []sql.Row{{1, 1, 2}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 2}, {2, 2, 1}}, }, { Query: "UPDATE parent SET v1 = 2;", @@ -915,11 +915,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DELETE FROM parent WHERE v1 = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -939,11 +939,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "REPLACE INTO parent VALUES (1, 1, 1), (2, 2, 2);", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{1, 1, 1}, {2, 2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {2, 2, 2}}, }, { Query: "UPDATE parent SET v1 = 2;", @@ -955,23 +955,23 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "REPLACE INTO parent VALUES (1,1,2), (2,2,1);", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{1, 1, nil}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, nil}, {2, 2, 1}}, }, { Query: "UPDATE parent SET v2 = 2 WHERE id = 1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "UPDATE parent SET v2 = 1 WHERE id = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{Matched: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{Matched: 1}}}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{1, 1, 2}, {2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 2}, {2, 2, 1}}, }, { Query: "UPDATE parent SET v1 = 2;", @@ -983,11 +983,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DELETE FROM parent WHERE v1 = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{2, 2, nil}}, + Expected: []sql.UntypedSqlRow{{2, 2, nil}}, }, }, }, @@ -1009,7 +1009,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `UPDATE test SET v1 = NULL, v2 = NULL WHERE test.pk = 0;`, - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{ @@ -1034,7 +1034,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE FROM under_limit WHERE pk = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "DELETE FROM over_limit WHERE pk = 1;", @@ -1042,11 +1042,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DELETE FROM over_limit WHERE pk = 0;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "UPDATE over_limit SET pk = 1 WHERE pk = 1;", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{ @@ -1081,7 +1081,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE FROM under_cycle1 WHERE pk = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "DELETE FROM over_cycle1 WHERE pk = 1;", @@ -1114,7 +1114,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE FROM under_cycle1 WHERE pk = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "DELETE FROM over_cycle1 WHERE pk = 1;", @@ -1165,11 +1165,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DELETE FROM t16;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "DELETE FROM t1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -1216,11 +1216,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DELETE FROM t16;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "UPDATE t1 SET pk = 2;", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{ @@ -1247,7 +1247,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "SELECT * FROM colors;", - Expected: []sql.Row{{1, "red"}, {2, "green"}, {3, "blue"}, {4, "purple"}}, + Expected: []sql.UntypedSqlRow{{1, "red"}, {2, "green"}, {3, "blue"}, {4, "purple"}}, }, }, }, @@ -1262,11 +1262,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO objects (id, name, color) VALUES (5, 'hi', 'yellow');", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM objects;", - Expected: []sql.Row{{1, "truck", "red"}, {2, "ball", "green"}, {3, "shoe", "blue"}}, + Expected: []sql.UntypedSqlRow{{1, "truck", "red"}, {2, "ball", "green"}, {3, "shoe", "blue"}}, }, }, }, @@ -1285,28 +1285,28 @@ var ForeignKeyTests = []ScriptTest{ // No-op update bad to bad should not cause constraint violation Skip: true, Query: "update delayed_child set pk=1 where pk=1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 0}}}, }, }, { // Update on non-existent row should not cause constraint violation Query: "update delayed_child set pk=3 where pk=3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{Matched: 0, Updated: 0}}}, }, }, { // No-op update good to good should not cause constraint violation Query: "update delayed_child set pk=20 where pk=20;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 0}}}, }, }, { // Updating bad value to good value still fails Query: "update delayed_child set pk=10 where pk=1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, @@ -1326,19 +1326,19 @@ var ForeignKeyTests = []ScriptTest{ { // No-op update good to good should not cause constraint violation Query: "delete from delayed_child where false;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, }, { Query: "delete from delayed_child where pk = 20;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "delete from delayed_child where pk = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -1356,15 +1356,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE delayed_child;", - Expected: []sql.Row{{"delayed_child", "CREATE TABLE `delayed_child` (\n `pk` int NOT NULL,\n `v1` int,\n PRIMARY KEY (`pk`),\n KEY `fk_delayed` (`v1`),\n CONSTRAINT `fk_delayed` FOREIGN KEY (`v1`) REFERENCES `delayed_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"delayed_child", "CREATE TABLE `delayed_child` (\n `pk` int NOT NULL,\n `v1` int,\n PRIMARY KEY (`pk`),\n KEY `fk_delayed` (`v1`),\n CONSTRAINT `fk_delayed` FOREIGN KEY (`v1`) REFERENCES `delayed_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "SELECT * FROM delayed_parent;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM delayed_child;", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "INSERT INTO delayed_child VALUES (2, 3);", @@ -1372,15 +1372,15 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "INSERT INTO delayed_parent VALUES (1, 2), (2, 3);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO delayed_child VALUES (2, 3);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM delayed_child;", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, }, }, @@ -1424,11 +1424,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE delayed_child;", - Expected: []sql.Row{{"delayed_child", "CREATE TABLE `delayed_child` (\n `pk` int NOT NULL,\n `v1` int,\n PRIMARY KEY (`pk`),\n KEY `fk_delayed` (`v1`),\n CONSTRAINT `fk_delayed` FOREIGN KEY (`v1`) REFERENCES `delayed_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"delayed_child", "CREATE TABLE `delayed_child` (\n `pk` int NOT NULL,\n `v1` int,\n PRIMARY KEY (`pk`),\n KEY `fk_delayed` (`v1`),\n CONSTRAINT `fk_delayed` FOREIGN KEY (`v1`) REFERENCES `delayed_parent` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "SELECT * FROM delayed_child;", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "INSERT INTO delayed_child VALUES (2, 3);", @@ -1436,19 +1436,19 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "CREATE TABLE delayed_parent (pk INT PRIMARY KEY, v1 INT, INDEX (v1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO delayed_parent VALUES (1, 2), (2, 3);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO delayed_child VALUES (2, 3);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM delayed_child;", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, }, }, @@ -1468,19 +1468,19 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "SET FOREIGN_KEY_CHECKS=0;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "TRUNCATE parent;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DROP TABLE parent;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SET FOREIGN_KEY_CHECKS=1;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "INSERT INTO child VALUES (4, 5, 6);", @@ -1488,23 +1488,23 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "CREATE TABLE parent (pk INT PRIMARY KEY, v1 INT, INDEX (v1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO parent VALUES (1, 5);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO child VALUES (4, 5, 6);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{1, 5}}, + Expected: []sql.UntypedSqlRow{{1, 5}}, }, { Query: "SELECT * FROM child;", - Expected: []sql.Row{{4, 5, 6}}, + Expected: []sql.UntypedSqlRow{{4, 5, 6}}, }, }, }, @@ -1522,11 +1522,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "CREATE INDEX foreign_key1 ON public.states(state);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE public.cities ADD CONSTRAINT foreign_key1 FOREIGN KEY (state) REFERENCES public.states(state);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -1539,7 +1539,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE hours;", - Expected: []sql.Row{{"hours", "CREATE TABLE `hours` (\n `restaurant_id` int NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`restaurant_id`),\n CONSTRAINT `fk_name` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"hours", "CREATE TABLE `hours` (\n `restaurant_id` int NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`restaurant_id`),\n CONSTRAINT `fk_name` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -1554,11 +1554,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE child ADD CONSTRAINT fk1 FOREIGN KEY (b) REFERENCES parent (b);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child ADD CONSTRAINT fk2 FOREIGN KEY (a) REFERENCES parent (b);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE child ADD CONSTRAINT fk3 FOREIGN KEY (a, b) REFERENCES parent (a, b);", @@ -1566,7 +1566,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "ALTER TABLE child ADD CONSTRAINT fk4 FOREIGN KEY (b, a) REFERENCES parent (b, a);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -1580,11 +1580,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE TABLE child(id int unique, fk1 int, fk2 int, primary key(fk2, fk1, id), constraint `fk` foreign key(fk1, fk2) references parent (fk1, fk2));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "Show create table child;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child", "CREATE TABLE `child` (\n" + " `id` int NOT NULL,\n" + " `fk1` int NOT NULL,\n" + @@ -1642,7 +1642,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "DELETE FROM self WHERE v1 = 2;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -1655,11 +1655,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE FROM self WHERE v1 = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, // Cascading deletions do not count + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, // Cascading deletions do not count }, { Query: "SELECT * FROM self;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1674,7 +1674,7 @@ var ForeignKeyTests = []ScriptTest{ { // Casing is preserved in show create table statements Query: "show create table t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int NOT NULL,\n `J` int,\n" + " PRIMARY KEY (`i`),\n" + @@ -1685,7 +1685,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "insert into t1 values (1, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -1696,7 +1696,7 @@ var ForeignKeyTests = []ScriptTest{ { // Casing is preserved in show create table statements Query: "show create table t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `I` int NOT NULL,\n" + " `j` int,\n" + @@ -1708,7 +1708,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "insert into t2 values (1, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -1718,7 +1718,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "show create table t3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t3", "CREATE TABLE `t3` (\n" + " `i` int NOT NULL,\n `j` int,\n" + " PRIMARY KEY (`i`),\n" + @@ -1729,7 +1729,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "insert into t3 values (1, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -1773,19 +1773,19 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE FROM parent WHERE pk = 1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM parent;", - Expected: []sql.Row{{2, 2, 2}, {3, 3, 3}}, + Expected: []sql.UntypedSqlRow{{2, 2, 2}, {3, 3, 3}}, }, { Query: "SELECT * FROM child;", - Expected: []sql.Row{{1, nil, nil}, {2, 2, 2}, {3, 3, 3}}, + Expected: []sql.UntypedSqlRow{{1, nil, nil}, {2, 2, 2}, {3, 3, 3}}, }, { Query: "SELECT * FROM child2;", - Expected: []sql.Row{{1, nil, nil}, {2, 2, 2}, {3, 3, 3}}, + Expected: []sql.UntypedSqlRow{{1, nil, nil}, {2, 2, 2}, {3, 3, 3}}, }, }, }, @@ -1807,11 +1807,11 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "INSERT INTO one VALUES (1, 2, 4) on duplicate key update v1 = VALUES(v1)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "SELECT * FROM two where pk = 2", - Expected: []sql.Row{{2, 2, 1}}, + Expected: []sql.UntypedSqlRow{{2, 2, 1}}, }, }, }, @@ -1825,19 +1825,19 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO child1 VALUES (1, 1);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM child1;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "UPDATE parent1 SET pk = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT * FROM child1;", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, }, }, @@ -1851,19 +1851,19 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO child1 VALUES (1, 1, 2), (2, 4, 5);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "SELECT * FROM child1;", - Expected: []sql.Row{{1, 1, 2}, {2, 4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1, 2}, {2, 4, 5}}, }, { Query: "UPDATE parent1 SET pk2 = pk1 + pk2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, Info: plan.UpdateInfo{Matched: 2, Updated: 2}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, Info: plan.UpdateInfo{Matched: 2, Updated: 2}}}}, }, { Query: "SELECT * FROM child1;", - Expected: []sql.Row{{1, 1, 3}, {2, 4, 9}}, + Expected: []sql.UntypedSqlRow{{1, 1, 3}, {2, 4, 9}}, }, }, }, @@ -1880,11 +1880,11 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM one;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM two;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1906,15 +1906,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM one;", - Expected: []sql.Row{{1, 5, 4}, {2, 7, 5}, {4, 9, 5}}, + Expected: []sql.UntypedSqlRow{{1, 5, 4}, {2, 7, 5}, {4, 9, 5}}, }, { Query: "SELECT * FROM two;", - Expected: []sql.Row{{2, 5, 3}, {3, 7, 5}}, + Expected: []sql.UntypedSqlRow{{2, 5, 3}, {3, 7, 5}}, }, { Query: "SELECT * FROM three;", - Expected: []sql.Row{{3, 5, 3}, {4, 7, 5}}, + Expected: []sql.UntypedSqlRow{{3, 5, 3}, {4, 7, 5}}, }, }, }, @@ -1927,19 +1927,19 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT into a (x, y) VALUES (1, 3);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT into b (x, y) VALUES (2, 3);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT x, y from a;", - Expected: []sql.Row{{1, 3}}, + Expected: []sql.UntypedSqlRow{{1, 3}}, }, { Query: "SELECT x, y from b;", - Expected: []sql.Row{{2, 3}}, + Expected: []sql.UntypedSqlRow{{2, 3}}, }, { Query: "INSERT into b (x, y) VALUES (3, 5);", @@ -1956,19 +1956,19 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT into a (x, y) VALUES (1, 3);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT into b (x, y) VALUES (2, 3);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT x, y from a;", - Expected: []sql.Row{{1, 3}}, + Expected: []sql.UntypedSqlRow{{1, 3}}, }, { Query: "SELECT x, y from b;", - Expected: []sql.Row{{2, 3}}, + Expected: []sql.UntypedSqlRow{{2, 3}}, }, { Query: "INSERT into b (x, y) VALUES (3, 5);", @@ -1987,15 +1987,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE a SET y = 4 where y = 3;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT x, y from a;", - Expected: []sql.Row{{1, 4}}, + Expected: []sql.UntypedSqlRow{{1, 4}}, }, { Query: "SELECT x, y from b;", - Expected: []sql.Row{{2, 4}}, + Expected: []sql.UntypedSqlRow{{2, 4}}, }, }, }, @@ -2010,15 +2010,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE a SET y = 4 where y = 3;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT x, y from a;", - Expected: []sql.Row{{1, 4}}, + Expected: []sql.UntypedSqlRow{{1, 4}}, }, { Query: "SELECT x, y from b;", - Expected: []sql.Row{{2, 4}}, + Expected: []sql.UntypedSqlRow{{2, 4}}, }, }, }, @@ -2033,15 +2033,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE from a where x = 1 AND y = 3;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * from a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * from b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -2056,15 +2056,15 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DELETE from a where x = 1 AND y = 3;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * from a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * from b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -2076,7 +2076,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE TABLE t2 (pk char(32) COLLATE utf8mb4_0900_bin PRIMARY KEY, CONSTRAINT fk_1 FOREIGN KEY (pk) REFERENCES t1 (pk));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -2106,13 +2106,13 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "alter table child1 add constraint fk1 foreign key (fk1, pk2) references parent1 (fk1, pk2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child1", "CREATE TABLE `child1` (\n" + " `fk1` int,\n" + " `pk1` int NOT NULL,\n" + @@ -2126,13 +2126,13 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "insert into child1 values (0, 1, 2, 3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "insert into child1 values (0, 99, 2, 99);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -2142,13 +2142,13 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "alter table child2 add constraint fk2 foreign key (fk1, pk2, pk1) references parent1 (fk1, pk2, pk1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child2", "CREATE TABLE `child2` (\n" + " `fk1` int,\n" + " `pk1` int NOT NULL,\n" + @@ -2162,13 +2162,13 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "insert into child2 values (0, 1, 2, 3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "insert into child2 values (0, 1, 2, 99);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -2178,19 +2178,19 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "alter table child3 add constraint fk3 foreign key (fk1, pk2, pk1, pk3) references parent1 (fk1, pk2, pk1, pk3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "insert into child3 values (0, 1, 2, 3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "show create table child3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child3", "CREATE TABLE `child3` (\n" + " `fk1` int,\n" + " `pk1` int NOT NULL,\n" + @@ -2208,13 +2208,13 @@ var ForeignKeyTests = []ScriptTest{ }, { // although idx4 would be a valid index, it is not used for the foreign key fk4 Query: "alter table child4 add constraint fk4 foreign key (fk1, pk2, pk1, pk3) references parent1 (fk1, pk2, pk1, pk3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child4", "CREATE TABLE `child4` (\n" + " `fk1` int,\n" + " `pk1` int NOT NULL,\n" + @@ -2229,13 +2229,13 @@ var ForeignKeyTests = []ScriptTest{ }, { // idx4 satisfies the foreign key fk5 Query: "alter table child4 add constraint fk5 foreign key (fk1) references parent1 (fk1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child4", "CREATE TABLE `child4` (\n" + " `fk1` int,\n" + " `pk1` int NOT NULL,\n" + @@ -2261,7 +2261,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table mychild;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mychild", "CREATE TABLE `mychild` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2271,13 +2271,13 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "alter table mychild rename constraint foreign key myfk to newfk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table mychild;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mychild", "CREATE TABLE `mychild` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2288,13 +2288,13 @@ var ForeignKeyTests = []ScriptTest{ // case insensitive rename { Query: "alter table mychild rename constraint foreign key NeWfK to NewNewFk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table mychild;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mychild", "CREATE TABLE `mychild` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2335,25 +2335,25 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table child1 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "alter table child1 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "alter table child1 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child1", "CREATE TABLE `child1` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2366,20 +2366,20 @@ var ForeignKeyTests = []ScriptTest{ { Query: "alter table child2 add constraint `child2_ibfk_1` foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { // If generated name collides with existing, then a new name will be generated Query: "alter table child2 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child2", "CREATE TABLE `child2` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2397,19 +2397,19 @@ var ForeignKeyTests = []ScriptTest{ { // unlike secondary index naming, constraints will find highest existing index and increment from there Query: "alter table child3 add constraint `child3_ibfk_100` foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "alter table child3 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table child3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child3", "CREATE TABLE `child3` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2422,7 +2422,7 @@ var ForeignKeyTests = []ScriptTest{ { // Name generation is case-sensitive Query: "alter table child4 add constraint `CHILD4_IBFK_1` foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, @@ -2433,7 +2433,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "show create table child4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child4", "CREATE TABLE `child4` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2444,21 +2444,21 @@ var ForeignKeyTests = []ScriptTest{ { Query: "alter table child5 add constraint `child5_ibfk_-2` foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { // This adds -1, which is interpreted as 4294967295 Query: "alter table child5 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { // This adds 4294967296, which overflows back to 0 Query: "alter table child5 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, @@ -2470,7 +2470,7 @@ var ForeignKeyTests = []ScriptTest{ { // foreign keys are sorted by name Query: "show create table child5;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child5", "CREATE TABLE `child5` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2484,20 +2484,20 @@ var ForeignKeyTests = []ScriptTest{ // empty string constraint names are allowed if specified explicitly { Query: "alter table child6 add constraint `` foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "alter table child6 add foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Skip: true, // we need parser changes to tell the difference between an empty string and a NULL Query: "show create table child6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"child6", "CREATE TABLE `child6` (\n" + " `j` int NOT NULL,\n" + " PRIMARY KEY (`j`),\n" + @@ -2509,7 +2509,7 @@ var ForeignKeyTests = []ScriptTest{ { Query: "alter table child1 add constraint `child7_ibfk_1` foreign key (j) references theparent (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, @@ -2553,7 +2553,7 @@ var ForeignKeyTests = []ScriptTest{ { // When an explicit name is provided for a foreign key, the same name is used for the generated index Query: "SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX FROM information_schema.STATISTICS WHERE TABLE_NAME='parent1' ORDER BY INDEX_NAME, SEQ_IN_INDEX;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"parent1", "fk_b_a", "a_id2", 1}, {"parent1", "fk_b_a", "a_id3", 2}, }, @@ -2568,11 +2568,11 @@ var ForeignKeyTests = []ScriptTest{ // When no name is provided for a foreign key, the index created automaticaly will be named after the // first column in the key. If that name is already in use, MySQL appends a number to the name. Query: "ALTER TABLE parent2 ADD FOREIGN KEY (v2) REFERENCES child1(v1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX FROM information_schema.STATISTICS WHERE TABLE_NAME='parent2' ORDER BY INDEX_NAME, SEQ_IN_INDEX;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"parent2", "fk1", "v4", 1}, {"parent2", "PRIMARY", "v1", 1}, {"parent2", "v2", "v5", 1}, @@ -2603,13 +2603,13 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update child1 set j = 1 where i = 101;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from child1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, 1, 1}, {101, 1, 2}, }, @@ -2627,7 +2627,7 @@ var ForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from parent1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2635,7 +2635,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "select * from child1 order by j, k;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 3}, {3, 1}, @@ -2643,13 +2643,13 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "update parent1 set i = 20 where i = 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from parent1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {20}, @@ -2657,7 +2657,7 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "select * from child1 order by j, k;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, {3, 1}, {20, 3}, @@ -2665,20 +2665,20 @@ var ForeignKeyTests = []ScriptTest{ }, { Query: "delete from parent1 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from parent1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, {20}, }, }, { Query: "select * from child1 order by j, k;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {20, 3}, }, }, @@ -2707,7 +2707,7 @@ var CreateForeignKeyTests = []ScriptTest{ FROM information_schema.REFERENTIAL_CONSTRAINTS RC, information_schema.KEY_COLUMN_USAGE KCU WHERE RC.TABLE_NAME = 'child' AND RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.TABLE_NAME = KCU.TABLE_NAME AND RC.REFERENCED_TABLE_NAME = KCU.REFERENCED_TABLE_NAME;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"fk1", "mydb", "child", "d", "mydb", "parent", "b", "NO ACTION", "CASCADE"}, {"fk4", "mydb", "child", "d", "mydb", "child", "c", "NO ACTION", "NO ACTION"}, }, @@ -2718,7 +2718,7 @@ var CreateForeignKeyTests = []ScriptTest{ FROM information_schema.REFERENTIAL_CONSTRAINTS RC, information_schema.KEY_COLUMN_USAGE KCU WHERE RC.TABLE_NAME = 'child2' AND RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.TABLE_NAME = KCU.TABLE_NAME AND RC.REFERENCED_TABLE_NAME = KCU.REFERENCED_TABLE_NAME;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"fk2", "mydb", "child2", "f", "mydb", "parent", "b", "NO ACTION", "RESTRICT"}, {"fk3", "mydb", "child2", "f", "mydb", "child", "d", "SET NULL", "NO ACTION"}, }, @@ -2751,7 +2751,7 @@ var CreateForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE child3 ADD COLUMN v1 BIGINT NULL, ADD CONSTRAINT fk_child3 FOREIGN KEY (v1) REFERENCES parent3(v1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -2760,15 +2760,15 @@ var CreateForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SET FOREIGN_KEY_CHECKS=0;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "CREATE TABLE child4 (pk BIGINT PRIMARY KEY, CONSTRAINT fk_child4 FOREIGN KEY (pk) REFERENCES delayed_parent4 (pk))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE delayed_parent4 (pk BIGINT PRIMARY KEY)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -2790,7 +2790,7 @@ var DropForeignKeyTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE child2 DROP CONSTRAINT fk2", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `SELECT RC.CONSTRAINT_NAME, RC.CONSTRAINT_SCHEMA, RC.TABLE_NAME, KCU.COLUMN_NAME, @@ -2798,13 +2798,13 @@ var DropForeignKeyTests = []ScriptTest{ FROM information_schema.REFERENTIAL_CONSTRAINTS RC, information_schema.KEY_COLUMN_USAGE KCU WHERE RC.TABLE_NAME = 'child2' AND RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.TABLE_NAME = KCU.TABLE_NAME AND RC.REFERENCED_TABLE_NAME = KCU.REFERENCED_TABLE_NAME;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"fk3", "mydb", "child2", "f", "mydb", "child", "d", "SET NULL", "NO ACTION"}, }, }, { Query: "ALTER TABLE child2 DROP CONSTRAINT fk3", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `SELECT RC.CONSTRAINT_NAME, RC.CONSTRAINT_SCHEMA, RC.TABLE_NAME, KCU.COLUMN_NAME, @@ -2812,7 +2812,7 @@ var DropForeignKeyTests = []ScriptTest{ FROM information_schema.REFERENTIAL_CONSTRAINTS RC, information_schema.KEY_COLUMN_USAGE KCU WHERE RC.TABLE_NAME = 'child2' AND RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.TABLE_NAME = KCU.TABLE_NAME AND RC.REFERENCED_TABLE_NAME = KCU.REFERENCED_TABLE_NAME;`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, diff --git a/enginetest/queries/fulltext_queries.go b/enginetest/queries/fulltext_queries.go index 23276a6287..75a20b9935 100644 --- a/enginetest/queries/fulltext_queries.go +++ b/enginetest/queries/fulltext_queries.go @@ -31,62 +31,62 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT pk, v1 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi"}}, }, { Query: "SELECT v1, v2 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{"ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{"ghi", "jkl"}}, }, { Query: "SELECT pk, v1, v2 FROM test WHERE MATCH(v2, v1) AGAINST ('jkl');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT pk, v2 FROM test WHERE MATCH(v2, v1) AGAINST ('jkl');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "jkl"}}, }, { Query: "SELECT v1 FROM test WHERE MATCH(v2, v1) AGAINST ('jkl');", CheckIndexedAccess: true, - Expected: []sql.Row{{"ghi"}}, + Expected: []sql.UntypedSqlRow{{"ghi"}}, }, { Query: "SELECT v2 FROM test WHERE MATCH(v2, v1) AGAINST ('jkl');", CheckIndexedAccess: true, - Expected: []sql.Row{{"jkl"}}, + Expected: []sql.UntypedSqlRow{{"jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl') = 0;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl') > 0;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno') AND pk = 3;", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(3), "mno", "mno"}}, + Expected: []sql.UntypedSqlRow{{uint64(3), "mno", "mno"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno') OR pk = 1;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(1), "abc", "def pqr"}, {uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def pqr"}, {uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -100,22 +100,22 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT uk, v1 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi"}}, }, { Query: "SELECT uk, v2, v1 FROM test WHERE MATCH(v2, v1) AGAINST ('jkl');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "jkl", "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "jkl", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -129,32 +129,32 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{"ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{"ghi", "jkl"}}, }, { Query: "SELECT v1 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{"ghi"}}, + Expected: []sql.UntypedSqlRow{{"ghi"}}, }, { Query: "SELECT v2 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{"jkl"}}, + Expected: []sql.UntypedSqlRow{{"jkl"}}, }, { Query: "SELECT v2, v1 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{"jkl", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"jkl", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl');", CheckIndexedAccess: false, - Expected: []sql.Row{{"ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{"ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: false, - Expected: []sql.Row{{"ghi", "jkl"}, {"mno", "mno"}, {"ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{"ghi", "jkl"}, {"mno", "mno"}, {"ghs", "mno shg"}}, }, }, }, @@ -168,12 +168,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, }, }, }, @@ -187,12 +187,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, }, }, }, @@ -206,12 +206,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", uint64(1), "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", uint64(1), "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", uint64(1), "jkl"}, {uint64(3), "mno", uint64(1), "mno"}, {uint64(5), "ghs", uint64(1), "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", uint64(1), "jkl"}, {uint64(3), "mno", uint64(1), "mno"}, {uint64(5), "ghs", uint64(1), "mno shg"}}, }, }, }, @@ -225,17 +225,17 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}}, }, { Query: "SELECT v2, uk2 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{"jkl", uint64(1)}}, + Expected: []sql.UntypedSqlRow{{"jkl", uint64(1)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, }, }, }, @@ -249,12 +249,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), uint64(1), "ghi", "jkl"}, {uint64(3), uint64(1), "mno", "mno"}, {uint64(5), uint64(1), "ghs", "mno shg"}}, }, }, }, @@ -268,17 +268,17 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", uint64(1), "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", uint64(1), "jkl"}}, }, { Query: "SELECT v2, uk2 FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{"jkl", uint64(1)}}, + Expected: []sql.UntypedSqlRow{{"jkl", uint64(1)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", uint64(1), "jkl"}, {uint64(3), "mno", uint64(1), "mno"}, {uint64(5), "ghs", uint64(1), "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", uint64(1), "jkl"}, {uint64(3), "mno", uint64(1), "mno"}, {uint64(5), "ghs", uint64(1), "mno shg"}}, }, }, }, @@ -292,39 +292,39 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "UPDATE test SET v1 = 'rgb' WHERE pk = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('rgb');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "rgb", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "rgb", "jkl"}}, }, { Query: "UPDATE test SET v2 = 'mno' WHERE pk = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "rgb", "mno"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "rgb", "mno"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "DELETE FROM test WHERE pk = 3;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "rgb", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "rgb", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -338,36 +338,36 @@ var FulltextTests = []ScriptTest{ { // Full-Text handles NULL values by ignoring them, meaning non-null values are still added to the document Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('abc');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc", nil}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", nil}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "UPDATE test SET v1 = NULL WHERE pk = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('jkl');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), nil, "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), nil, "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST (NULL);", CheckIndexedAccess: true, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT pk, v1, v2, MATCH(v1, v2) AGAINST (NULL) FROM test;", CheckIndexedAccess: false, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1), "abc", nil, float32(0)}, {uint64(2), nil, "jkl", float32(0)}, {uint64(3), "mno", "mno", float32(0)}, @@ -377,11 +377,11 @@ var FulltextTests = []ScriptTest{ }, { Query: "DROP INDEX idx ON test;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test ADD FULLTEXT INDEX idx (v1, v2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -397,62 +397,62 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test1 WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v2, v1) AGAINST ('jkl') = 0;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v2, v1) AGAINST ('jkl mno') AND pk = 3;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(3), "mno", "mno"}}, + Expected: []sql.UntypedSqlRow{{uint64(3), "mno", "mno"}}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v1, v2) AGAINST ('GHI');", CheckIndexedAccess: true, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v2, v1) AGAINST ('JKL') = 0;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(1), "abc", "def pqr"}, {uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def pqr"}, {uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v2, v1) AGAINST ('JKL MNO') AND pk = 3;", CheckIndexedAccess: false, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v2, v1) AGAINST ('jkl') = 0;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v2, v1) AGAINST ('jkl mno') AND pk = 3;", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(3), "mno", "mno"}}, + Expected: []sql.UntypedSqlRow{{uint64(3), "mno", "mno"}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v1, v2) AGAINST ('GHI');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v2, v1) AGAINST ('JKL') = 0;", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def pqr"}, {uint64(3), "mno", "mno"}, {uint64(4), "stu vwx", "xyz zyx yzx"}, {uint64(5), "ghs", "mno shg"}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v2, v1) AGAINST ('JKL MNO') AND pk = 3;", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(3), "mno", "mno"}}, + Expected: []sql.UntypedSqlRow{{uint64(3), "mno", "mno"}}, }, }, }, @@ -465,7 +465,7 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT MATCH(doc) AGAINST('aaaa') AS relevance FROM test ORDER BY relevance DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float32(5.9636202)}, {float32(4.0278959)}, {float32(3.3721533)}, @@ -474,7 +474,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT MATCH(doc) AGAINST('aaaa') AS relevance, pk FROM test ORDER BY relevance DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float32(5.9636202), int32(4)}, {float32(4.0278959), int32(2)}, {float32(3.3721533), int32(3)}, @@ -483,7 +483,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk, MATCH(doc) AGAINST('aaaa') AS relevance FROM test ORDER BY relevance ASC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(1), float32(0)}, {int32(3), float32(3.3721533)}, {int32(2), float32(4.0278959)}, @@ -492,7 +492,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk, doc, MATCH(doc) AGAINST('aaaa') AS relevance FROM test ORDER BY relevance DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(4), "AAAA aaaa aaaac aaaa Aaaa aaaa", float32(5.9636202)}, {int32(2), "g hhhh aaaab ooooo aaaa", float32(4.0278959)}, {int32(3), "aaaA ff j kkkk llllllll", float32(3.3721533)}, @@ -501,7 +501,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk, doc, MATCH(doc) AGAINST('aaaa') AS relevance FROM test ORDER BY relevance ASC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(1), "bbbb ff cccc ddd eee", float32(0)}, {int32(3), "aaaA ff j kkkk llllllll", float32(3.3721533)}, {int32(2), "g hhhh aaaab ooooo aaaa", float32(4.0278959)}, @@ -510,7 +510,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk FROM test ORDER BY MATCH(doc) AGAINST('aaaa') DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(4)}, {int32(2)}, {int32(3)}, @@ -519,7 +519,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk, doc FROM test ORDER BY MATCH(doc) AGAINST('aaaa') ASC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(1), "bbbb ff cccc ddd eee"}, {int32(3), "aaaA ff j kkkk llllllll"}, {int32(2), "g hhhh aaaab ooooo aaaa"}, @@ -528,7 +528,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT 1 FROM test ORDER BY MATCH(doc) AGAINST('aaaa') DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(1)}, {int32(1)}, {int32(1)}, @@ -537,18 +537,18 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk, MATCH(doc) AGAINST('aaaa') AS relevance FROM test HAVING relevance > 4 ORDER BY relevance DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(4), float32(5.9636202)}, {int32(2), float32(4.0278959)}, }, }, { // Test with an added column to ensure that unnecessary columns do not affect the results Query: "ALTER TABLE test ADD COLUMN extracol INT DEFAULT 7;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT pk FROM test ORDER BY MATCH(doc) AGAINST('aaaa') DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(4)}, {int32(2)}, {int32(3)}, @@ -557,11 +557,11 @@ var FulltextTests = []ScriptTest{ }, { // Drop the primary key to ensure that results are still consistent without a primary key Query: "ALTER TABLE test DROP PRIMARY KEY;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT pk FROM test ORDER BY MATCH(doc) AGAINST('aaaa') ASC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(1)}, {int32(3)}, {int32(2)}, @@ -570,7 +570,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SELECT pk, MATCH(doc) AGAINST('aaaa') AS relevance FROM test ORDER BY relevance DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(4), float32(5.9636202)}, {int32(2), float32(4.0278959)}, {int32(3), float32(3.3721533)}, @@ -590,12 +590,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -610,12 +610,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -630,12 +630,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -650,12 +650,12 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('jkl mno');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}, {uint64(3), "mno", "mno"}, {uint64(5), "ghs", "mno shg"}}, }, }, }, @@ -669,11 +669,11 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "DROP INDEX idx ON test;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", @@ -693,11 +693,11 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "ALTER TABLE test DROP INDEX idx;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", @@ -715,12 +715,12 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test ADD COLUMN v3 FLOAT DEFAULT 7 FIRST;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{float32(7), uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{float32(7), uint64(2), "ghi", "jkl"}}, }, }, }, @@ -733,12 +733,12 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test MODIFY COLUMN v3 FLOAT AFTER pk;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), float32(7), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), float32(7), "ghi", "jkl"}}, }, }, }, @@ -751,12 +751,12 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test MODIFY COLUMN v2 TEXT;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, }, }, @@ -782,12 +782,12 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test DROP COLUMN v3;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, }, }, @@ -801,25 +801,25 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('abc');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2) AGAINST ('def');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v3) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "def", "ghi"}}, }, { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `pk` bigint unsigned NOT NULL,\n `v1` varchar(200),\n `v2` varchar(200),\n `v3` varchar(200),\n PRIMARY KEY (`pk`),\n FULLTEXT KEY `idx1` (`v1`,`v2`),\n FULLTEXT KEY `idx2` (`v2`),\n FULLTEXT KEY `idx3` (`v2`,`v3`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `pk` bigint unsigned NOT NULL,\n `v1` varchar(200),\n `v2` varchar(200),\n `v3` varchar(200),\n PRIMARY KEY (`pk`),\n FULLTEXT KEY `idx1` (`v1`,`v2`),\n FULLTEXT KEY `idx2` (`v2`),\n FULLTEXT KEY `idx3` (`v2`,`v3`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE test DROP COLUMN v2;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('abc');", @@ -839,25 +839,25 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('abc');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc", "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v3) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc", "ghi"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc", "ghi"}}, }, { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `pk` bigint unsigned NOT NULL,\n `v1` varchar(200),\n `v3` varchar(200),\n PRIMARY KEY (`pk`),\n FULLTEXT KEY `idx1` (`v1`),\n FULLTEXT KEY `idx3` (`v3`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `pk` bigint unsigned NOT NULL,\n `v1` varchar(200),\n `v3` varchar(200),\n PRIMARY KEY (`pk`),\n FULLTEXT KEY `idx1` (`v1`),\n FULLTEXT KEY `idx3` (`v3`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE test DROP COLUMN v3;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('abc');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(1), "abc"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v3) AGAINST ('ghi');", @@ -866,7 +866,7 @@ var FulltextTests = []ScriptTest{ }, { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `pk` bigint unsigned NOT NULL,\n `v1` varchar(200),\n PRIMARY KEY (`pk`),\n FULLTEXT KEY `idx1` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `pk` bigint unsigned NOT NULL,\n `v1` varchar(200),\n PRIMARY KEY (`pk`),\n FULLTEXT KEY `idx1` (`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -879,12 +879,12 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test ADD PRIMARY KEY (pk);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, }, }, @@ -897,12 +897,12 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE test DROP PRIMARY KEY;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, }, }, @@ -915,7 +915,7 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { // This is mainly to check for a panic Query: "DROP TABLE test;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -929,16 +929,16 @@ var FulltextTests = []ScriptTest{ { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{{uint64(2), "ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "ghi", "jkl"}}, }, { Query: "TRUNCATE TABLE test;", - Expected: []sql.Row{{types.NewOkResult(5)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(5)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: true, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -947,15 +947,15 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE TABLE `film_text` (`film_id` SMALLINT NOT NULL, `title` VARCHAR(255) NOT NULL, `description` TEXT, PRIMARY KEY (`film_id`), FULLTEXT KEY `idx_title_description` (`title`,`description`));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CREATE TABLE other_table (pk BIGINT PRIMARY KEY, v1 TEXT);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE other_table ADD FULLTEXT INDEX idx (v1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -968,40 +968,40 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "RENAME TABLE test1 TO test2;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v1, v2) AGAINST ('abc');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def"}}, }, { Query: "CREATE TABLE test1 (v1 VARCHAR(200), v2 VARCHAR(200), FULLTEXT idx (v1, v2));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO test1 VALUES ('ghi', 'jkl');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v1, v2) AGAINST ('abc');", CheckIndexedAccess: false, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v1, v2) AGAINST ('abc');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def"}}, }, { Query: "SELECT * FROM test1 WHERE MATCH(v1, v2) AGAINST ('jkl');", CheckIndexedAccess: false, - Expected: []sql.Row{{"ghi", "jkl"}}, + Expected: []sql.UntypedSqlRow{{"ghi", "jkl"}}, }, { Query: "SELECT * FROM test2 WHERE MATCH(v1, v2) AGAINST ('jkl');", CheckIndexedAccess: false, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1014,20 +1014,20 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `v1` varchar(200),\n `v2` varchar(200),\n FULLTEXT KEY `idx` (`v2`,`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `v1` varchar(200),\n `v2` varchar(200),\n FULLTEXT KEY `idx` (`v2`,`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE test RENAME INDEX idx TO new_idx;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v1) AGAINST ('abc');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def"}}, }, { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `v1` varchar(200),\n `v2` varchar(200),\n FULLTEXT KEY `new_idx` (`v2`,`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `v1` varchar(200),\n `v2` varchar(200),\n FULLTEXT KEY `new_idx` (`v2`,`v1`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -1042,47 +1042,47 @@ var FulltextTests = []ScriptTest{ Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('abc');", // TODO keyColumns are null type, blocks index access CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('def');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v2) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v3) AGAINST ('abc');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v3) AGAINST ('def');", CheckIndexedAccess: false, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v1, v3) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v3) AGAINST ('abc');", CheckIndexedAccess: false, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v3) AGAINST ('def');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def", "ghi"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v2, v3) AGAINST ('ghi');", CheckIndexedAccess: false, - Expected: []sql.Row{{"abc", "def", "ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc", "def", "ghi"}}, }, }, }, @@ -1137,11 +1137,11 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (v1) VALUES ('abc'), ('def');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 1}}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{uint64(1), "abc"}, {uint64(2), "def"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc"}, {uint64(2), "def"}}, }, }, }, @@ -1153,19 +1153,19 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (v1) VALUES ('abc');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "INSERT INTO test (pk, v1) VALUES (2, 'def');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{uint64(1), "abc"}, {uint64(2), "def"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "abc"}, {uint64(2), "def"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('def');", - Expected: []sql.Row{{uint64(2), "def"}}, + Expected: []sql.UntypedSqlRow{{uint64(2), "def"}}, }, }, }, @@ -1177,31 +1177,31 @@ var FulltextTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (v1) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "REPLACE INTO test (v1) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{uint64(1), "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}, }, { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM test WHERE MATCH(v1) AGAINST ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, diff --git a/enginetest/queries/generated_columns.go b/enginetest/queries/generated_columns.go index 364fa2d372..0975717af6 100644 --- a/enginetest/queries/generated_columns.go +++ b/enginetest/queries/generated_columns.go @@ -30,7 +30,7 @@ var GeneratedColumnTests = []ScriptTest{ { Query: "show create table t1", // TODO: double parens here is a bug - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -47,23 +47,23 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 order by a", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "insert into t1(a) values (1), (2), (3)", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}, {3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}, {3, 4}}, }, { Query: "insert into t1(a,b) values (4, DEFAULT)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 where b = 5 order by a", - Expected: []sql.Row{{4, 5}}, + Expected: []sql.UntypedSqlRow{{4, 5}}, }, { Query: "update t1 set b = b + 1", @@ -71,19 +71,19 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "update t1 set a = 10 where a = 1", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{2, 3}, {3, 4}, {4, 5}, {10, 11}}, + Expected: []sql.UntypedSqlRow{{2, 3}, {3, 4}, {4, 5}, {10, 11}}, }, { Query: "delete from t1 where b = 11", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{2, 3}, {3, 4}, {4, 5}}, + Expected: []sql.UntypedSqlRow{{2, 3}, {3, 4}, {4, 5}}, }, }, }, @@ -96,7 +96,7 @@ var GeneratedColumnTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t16", - Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}}}, + Expected: []sql.UntypedSqlRow{{5, 1, 4}, {5, 2, 4}}}, }, }, { @@ -108,7 +108,7 @@ var GeneratedColumnTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t17", - Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}}}, + Expected: []sql.UntypedSqlRow{{5, 1, 3}, {6, 2, 4}}}, }, }, { @@ -119,11 +119,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -133,35 +133,35 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "insert into t1(a) values (1), (2)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, { Query: "update t1 set a = 10 where a = 1", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t1 where b = 11 order by a", - Expected: []sql.Row{{10, 11}}, + Expected: []sql.UntypedSqlRow{{10, 11}}, }, { Query: "delete from t1 where b = 11", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 where b = 3 order by a", - Expected: []sql.Row{{2, 3}}, + Expected: []sql.UntypedSqlRow{{2, 3}}, }, }, }, @@ -174,11 +174,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -188,15 +188,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, }, }, @@ -209,11 +209,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` float GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -223,15 +223,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, float64(2)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, }, }, @@ -244,11 +244,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 add column c int as (b+1) stored, add index b1(b), add column d int as (b+2) stored", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -260,15 +260,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2, 3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2, 3, 4}, {2, 3, 4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}, {2, 3, 4, 5}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 2, 3, 4}, {2, 3, 4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}, {2, 3, 4, 5}}, }, }, }, @@ -281,11 +281,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create unique index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` * `a`)) STORED,\n" + @@ -296,15 +296,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 4 order by a", - Expected: []sql.Row{{-2, 4, 0}}, + Expected: []sql.UntypedSqlRow{{-2, 4, 0}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{-2, 4, 0}, {-1, 1, 0}}, + Expected: []sql.UntypedSqlRow{{-2, 4, 0}, {-1, 1, 0}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{-1, 1, 0}, {-2, 4, 0}}, + Expected: []sql.UntypedSqlRow{{-1, 1, 0}, {-2, 4, 0}}, }, { Query: "insert into t1(a) values (2)", @@ -325,11 +325,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)),\n" + @@ -340,15 +340,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, }, }, @@ -361,11 +361,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` float GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -375,15 +375,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, float64(2)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, }, }, @@ -396,11 +396,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` float GENERATED ALWAYS AS ((`a` + 1)),\n" + @@ -411,15 +411,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, float64(2)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, }, }, @@ -431,11 +431,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b,c)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)) STORED,\n" + @@ -446,35 +446,35 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "insert into t1(a,c) values (1,3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 where b = 2 and c = 3 order by a", - Expected: []sql.Row{{1, 2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3}}, }, { Query: "insert into t1(a,c) values (2,4)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from t1 where b = 3 and c = 4", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3}}, }, { Query: "update t1 set a = 5, c = 10 where b = 2 and c = 3", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t1 where b = 6 and c = 10 order by a", - Expected: []sql.Row{{5, 6, 10}}, + Expected: []sql.UntypedSqlRow{{5, 6, 10}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{5, 6, 10}}, + Expected: []sql.UntypedSqlRow{{5, 6, 10}}, }, }, }, @@ -487,15 +487,15 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 add column c int as (a + b) stored", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2, 3}, {2, 3, 5}, {3, 4, 7}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3}, {2, 3, 5}, {3, 4, 7}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int,\n" + @@ -513,13 +513,13 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table t (`col 1` int, `col 2` int, `col 3` int generated always as (`col 1` + `col 2` + pow(`col 1`, `col 2`)) stored);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `col 1` int,\n" + " `col 2` int,\n" + @@ -529,25 +529,25 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "insert into t (`col 1`, `col 2`) values (1, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 4}, }, }, { Query: "alter table tt add column `col 3` int generated always as (`col 1` + `col 2` + pow(`col 1`, `col 2`)) stored;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table tt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"tt", "CREATE TABLE `tt` (\n" + " `col 1` int,\n" + " `col 2` int,\n" + @@ -557,13 +557,13 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "insert into tt (`col 1`, `col 2`) values (1, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from tt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 4}, }, }, @@ -577,13 +577,13 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table t (`col 1` int, `col 2` int, `col 3` int generated always as (`col 1` + `col 2` + pow(`col 1`, `col 2`)) virtual);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `col 1` int,\n" + " `col 2` int,\n" + @@ -593,25 +593,25 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "insert into t (`col 1`, `col 2`) values (1, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 4}, }, }, { Query: "alter table tt add column `col 3` int generated always as (`col 1` + `col 2` + pow(`col 1`, `col 2`)) virtual;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table tt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"tt", "CREATE TABLE `tt` (\n" + " `col 1` int,\n" + " `col 2` int,\n" + @@ -621,13 +621,13 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "insert into tt (`col 1`, `col 2`) values (1, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from tt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 4}, }, }, @@ -642,7 +642,7 @@ var GeneratedColumnTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t16", - Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}}}, + Expected: []sql.UntypedSqlRow{{5, 1, 4}, {5, 2, 4}}}, }, }, { @@ -654,7 +654,7 @@ var GeneratedColumnTests = []ScriptTest{ }, Assertions: []ScriptTestAssertion{{ Query: "SELECT * FROM t17", - Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}}}, + Expected: []sql.UntypedSqlRow{{5, 1, 3}, {6, 2, 4}}}, }, }, { @@ -665,15 +665,15 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t1 (a) values (1), (2), (3)", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}, {3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}, {3, 4}}, }, { Query: "update t1 set a = 4 where a = 3", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ Matched: 1, @@ -683,15 +683,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}, {4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}, {4, 5}}, }, { Query: "delete from t1 where a = 2", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {4, 5}}, }, { Query: "update t1 set b = b + 1", @@ -708,59 +708,59 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t1 (a) values (1), (2), (3)", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}, {3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}, {3, 4}}, }, { Query: "insert into t2 (c) values (1), (2), (3)", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t2 order by c", - Expected: []sql.Row{{1, 0}, {2, 1}, {3, 2}}, + Expected: []sql.UntypedSqlRow{{1, 0}, {2, 1}, {3, 2}}, }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "select * from t2 where d = 2 order by c", - Expected: []sql.Row{{3, 2}}, + Expected: []sql.UntypedSqlRow{{3, 2}}, }, { Query: "select sum(b) from t1 where b > 2", - Expected: []sql.Row{{7.0}}, + Expected: []sql.UntypedSqlRow{{7.0}}, }, { Query: "select sum(d) from t2 where d >= 1", - Expected: []sql.Row{{3.0}}, + Expected: []sql.UntypedSqlRow{{3.0}}, }, { Query: "select a, (select b from t1 t1a where t1a.a = t1.a+1) from t1 order by a", - Expected: []sql.Row{{1, 3}, {2, 4}, {3, nil}}, + Expected: []sql.UntypedSqlRow{{1, 3}, {2, 4}, {3, nil}}, }, { Query: "select c, (select d from t2 t2a where t2a.c = t2.c+1) from t2 order by c", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, nil}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, nil}}, }, { Query: "select * from t1 join t2 on a = c order by a", - Expected: []sql.Row{{1, 2, 1, 0}, {2, 3, 2, 1}, {3, 4, 3, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2, 1, 0}, {2, 3, 2, 1}, {3, 4, 3, 2}}, }, { Query: "select * from t1 join t2 on a = d order by a", - Expected: []sql.Row{{1, 2, 2, 1}, {2, 3, 3, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2, 2, 1}, {2, 3, 3, 2}}, }, { Query: "select * from t1 join t2 on b = d order by a", - Expected: []sql.Row{{1, 2, 3, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 2}}, }, { Query: "select * from t1 join (select * from t2) as t3 on b = d order by a", - Expected: []sql.Row{{1, 2, 3, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 2}}, }, }, }, @@ -773,27 +773,27 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t1 (a) values (1), (2), (3)", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "insert into t2 (c) values (1), (2), (3)", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "create trigger t1insert before insert on t1 for each row insert into t2 (c) values (new.b + 1)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t1 (a) values (4), (5)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}}, }, { Query: "select * from t2 order by c", - Expected: []sql.Row{{1, 0}, {2, 1}, {3, 2}, {6, 5}, {7, 6}}, + Expected: []sql.UntypedSqlRow{{1, 0}, {2, 1}, {3, 2}, {6, 5}, {7, 6}}, }, }, }, @@ -805,11 +805,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t1 (a, j) values (1, '{"a": 1, "b": 2}'), (2, '{"a": 1}'), (3, '{"b": "300"}')`, - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON(`{"a": 1, "b": 2}`), 2}, {2, types.MustJSON(`{"a": 1}`), nil}, {3, types.MustJSON(`{"b": "300"}`), 300}}, @@ -824,11 +824,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t1 (a, b) values ('abc', '123'), ('def', null), ('ghi', '')`, - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "123", "abc123"}, {"def", nil, nil}, {"ghi", "", "ghi"}, @@ -850,7 +850,7 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t order by pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, nil, nil}, {2, 3, 4, 5}, {3, 4, nil, nil}, @@ -858,19 +858,19 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t where col1 = 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, nil, nil}, }, }, { Query: "select * from t where col1 = 3 and pk = 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 3, 4, 5}, }, }, { Query: "select * from t where pk = 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 3, 4, 5}, }, }, @@ -885,15 +885,15 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t1 (a, c) values (1,5), (3,7)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "insert into t1 (c, a) values (5,6), (7,8)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 3, 5}, {2, 3, 5, 7}, {2, 6, 8, 5}, @@ -902,7 +902,7 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "update t1 set a = 4 where a = 3", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ Matched: 1, @@ -912,7 +912,7 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 3, 5}, {2, 4, 6, 7}, {2, 6, 8, 5}, @@ -921,11 +921,11 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "delete from t1 where v2 = 6", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 3, 5}, {2, 6, 8, 5}, {2, 8, 10, 7}, @@ -941,15 +941,15 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t1 (a, b) values (1, 2), (3, 4)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "alter table t1 add column c int generated always as (a + b) virtual", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2, 3}, {3, 4, 7}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3}, {3, 4, 7}}, }, }, }, @@ -962,11 +962,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)),\n" + @@ -977,15 +977,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 2}, {2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 3}}, }, }, }, @@ -998,36 +998,36 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t1 where c = 7", - Expected: []sql.Row{{3, 4, 7}}, + Expected: []sql.UntypedSqlRow{{3, 4, 7}}, }, { Query: "select * from t1 where c = 8", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "update t1 set b = 5 where c = 3", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 5, 6}, {3, 4, 7}, }, }, { Query: "select * from t1 where c = 6", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 5, 6}, }, }, { Query: "delete from t1 where c = 6", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 4, 7}, }, }, @@ -1042,26 +1042,26 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t1 where v = 2", - Expected: []sql.Row{{"{\"a\": 2}", 2}}, + Expected: []sql.UntypedSqlRow{{"{\"a\": 2}", 2}}, }, { Query: "update t1 set j = '{\"a\": 5}' where v = 2", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t1 order by v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"{\"b\": 3}", nil}, {"{\"a\": 1}", 1}, {"{\"a\": 5}", 5}}, }, { Query: "delete from t1 where v = 5", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"{\"b\": 3}", nil}, {"{\"a\": 1}", 1}, }, @@ -1077,11 +1077,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` float GENERATED ALWAYS AS ((`a` + 1)),\n" + @@ -1092,15 +1092,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, float64(2)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, float64(2)}, {2, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(2)}, {2, float64(3)}}, }, }, }, @@ -1113,11 +1113,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t1 add column c int as (b+1) stored, add index b1(b), add column d int as (b+2) stored", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` + 1)),\n" + @@ -1130,15 +1130,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 2 order by a", - Expected: []sql.Row{{1, 2, 3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2, 3, 4}, {2, 3, 4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}, {2, 3, 4, 5}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{1, 2, 3, 4}, {2, 3, 4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}, {2, 3, 4, 5}}, }, }, }, @@ -1151,11 +1151,11 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create unique index i1 on t1(b)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t1", - Expected: []sql.Row{{"t1", + Expected: []sql.UntypedSqlRow{{"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` int GENERATED ALWAYS AS ((`a` * `a`)),\n" + @@ -1167,15 +1167,15 @@ var GeneratedColumnTests = []ScriptTest{ }, { Query: "select * from t1 where b = 4 order by a", - Expected: []sql.Row{{-2, 4, 0}}, + Expected: []sql.UntypedSqlRow{{-2, 4, 0}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{-2, 4, 0}, {-1, 1, 0}}, + Expected: []sql.UntypedSqlRow{{-2, 4, 0}, {-1, 1, 0}}, }, { Query: "select * from t1 order by b", - Expected: []sql.Row{{-1, 1, 0}, {-2, 4, 0}}, + Expected: []sql.UntypedSqlRow{{-1, 1, 0}, {-2, 4, 0}}, }, { Query: "insert into t1(a) values (2)", @@ -1222,35 +1222,35 @@ var GeneratedColumnTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t2 (a) values (1), (2)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from t2 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 4}, }, }, { Query: "select * from t2 where b = 4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 4}, }, }, { Query: "insert into t3 (a) values (1), (2)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from t3 order by a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 4}, }, }, { Query: "select * from t3 where a = 2 and b = 4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 4}, }, }, diff --git a/enginetest/queries/index_queries.go b/enginetest/queries/index_queries.go index a09de816ac..62563c7808 100644 --- a/enginetest/queries/index_queries.go +++ b/enginetest/queries/index_queries.go @@ -23,2817 +23,2817 @@ import ( var ComplexIndexQueries = []QueryTest{ { Query: `SELECT * FROM comp_index_t0 WHERE ((v1<25) OR (v1>24));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE v1>97 or v2 is NULL;`, - Expected: []sql.Row{{98, 98, 0}, {99, 98, 51}, {100, 98, 61}}, + Expected: []sql.UntypedSqlRow{{98, 98, 0}, {99, 98, 51}, {100, 98, 61}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1>=99 AND v2<>83) OR (v1>=1));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<=38 AND v2<41) OR (v1>60)) OR (v1<22));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{33, 34, 22}, sql.Row{83, 80, 61}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{36, 38, 20}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>92 AND v2>25) OR (v1 BETWEEN 6 AND 24 AND v2=80));`, - Expected: []sql.Row{sql.Row{100, 98, 61}, sql.Row{99, 98, 51}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{100, 98, 61}, {99, 98, 51}, {97, 93, 96}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1<=29) OR (v1=49 AND v2<48));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{15, 14, 57}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{24, 24, 60}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{28, 27, 24}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{18, 16, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>75) OR (v1<=11));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=86) OR (v1<>9)) AND (v1=87 AND v2<=45);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t0 WHERE (((v1<=5) OR (v1=71)) OR (v1<>96));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=97) OR (v1 BETWEEN 36 AND 98));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1=86 AND v2>41) OR (v1<>6 AND v2>16));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{64, 59, 29}, sql.Row{96, 93, 21}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<>22 AND v2>18) OR (v1<>12)) OR (v1<=34));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<11) OR (v1>=66 AND v2=22));`, - Expected: []sql.Row{sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{1, 0, 52}, sql.Row{8, 6, 51}, sql.Row{6, 5, 60}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>45 AND v2>37) OR (v1<98 AND v2<=35));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>=16 AND v2>96) OR (v1<80));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<=98) OR (v1<85 AND v2>60)) OR (v1<>53 AND v2 BETWEEN 82 AND 89));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<=16) OR (v1>=77 AND v2>77)) OR (v1>19 AND v2>27));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{64, 59, 29}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>=46) AND (v1>=28 AND v2<>68) OR (v1>=33 AND v2<>39));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<39 AND v2<10) OR (v1>64 AND v2<=15)) AND (v1>=41);`, - Expected: []sql.Row{sql.Row{85, 81, 4}, sql.Row{89, 84, 9}, sql.Row{80, 78, 0}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{85, 81, 4}, {89, 84, 9}, {80, 78, 0}, {98, 98, 0}, {75, 68, 11}, {94, 89, 3}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE (((v1<=91) OR (v1<70 AND v2>=23)) OR (v1>23 AND v2<38));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{58, 56, 0}, sql.Row{85, 81, 4}, sql.Row{62, 58, 12}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{68, 61, 3}, sql.Row{52, 48, 22}, sql.Row{53, 49, 0}, sql.Row{95, 93, 19}, sql.Row{89, 84, 9}, sql.Row{51, 47, 5}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{70, 63, 19}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<71) OR (v1 BETWEEN 46 AND 79));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>52) OR (v1<=14));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>74) OR (v1<>40 AND v2>=54));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=69 AND v2<24) OR (v1<77 AND v2<=53));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{0, 0, 48}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{77, 72, 52}, sql.Row{33, 34, 22}, sql.Row{63, 58, 32}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{28, 27, 24}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{18, 16, 53}, sql.Row{36, 38, 20}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1<>94) OR (v1<=52));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<>23 AND v2>64) OR (v1>73 AND v2<=66)) OR (v1 BETWEEN 39 AND 69 AND v2>84));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{92, 86, 88}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{79, 76, 39}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{10, 6, 73}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{67, 60, 66}, sql.Row{89, 84, 9}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{23, 19, 97}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{22, 19, 75}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>54 AND v2<16) OR (v1<74 AND v2>29)) AND (v1 BETWEEN 34 AND 48);`, - Expected: []sql.Row{sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{47, 45, 31}, sql.Row{45, 44, 67}, sql.Row{43, 43, 63}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{44, 44, 48}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>44 AND v2>12) OR (v1<=5 AND v2>27));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{52, 48, 22}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{64, 59, 29}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{25, 25, 14}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=54 AND v2<>13) OR (v1>84));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>1 AND v2<>51) OR (v1=28));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1>35) OR (v1 BETWEEN 11 AND 21)) OR (v1<>98));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1=16 AND v2=57) OR (v1<46 AND v2 BETWEEN 78 AND 89));`, - Expected: []sql.Row{sql.Row{49, 45, 86}, sql.Row{30, 28, 83}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{49, 45, 86}, {30, 28, 83}, {35, 35, 89}, {39, 39, 86}, {42, 42, 82}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1<53 AND v2<10) AND (v1<>37) OR (v1>23));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 34 AND 34 AND v2 BETWEEN 0 AND 91) OR (v1 BETWEEN 54 AND 77 AND v2>92));`, - Expected: []sql.Row{sql.Row{73, 65, 97}, sql.Row{33, 34, 22}, sql.Row{74, 67, 95}, sql.Row{34, 34, 91}}, + Expected: []sql.UntypedSqlRow{{73, 65, 97}, {33, 34, 22}, {74, 67, 95}, {34, 34, 91}}, }, { Query: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{78, 74, 81}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 17 AND 54 AND v2>=37) AND (v1<42 AND v2=96) OR (v1<>50));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>39 AND v2>66) OR (v1=99));`, - Expected: []sql.Row{sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{92, 86, 88}, sql.Row{45, 44, 67}, sql.Row{73, 65, 97}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{84, 80, 88}, sql.Row{71, 63, 69}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 24 AND 66) OR (v1<=81 AND v2<>29));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<>18 AND v2<>8) OR (v1>=10 AND v2>3)) OR (v1=53));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>=42 AND v2>34) OR (v1<=40 AND v2<=49));`, - Expected: []sql.Row{sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{2, 2, 4}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{33, 34, 22}, sql.Row{83, 80, 61}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{48, 45, 63}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{71, 63, 69}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 8 AND 38) OR (v1>=23 AND v2 BETWEEN 36 AND 49));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{50, 46, 46}, sql.Row{15, 14, 57}, sql.Row{16, 14, 98}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{57, 54, 38}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{65, 59, 45}, sql.Row{13, 13, 44}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>57 AND v2 BETWEEN 2 AND 93) OR (v1=52));`, - Expected: []sql.Row{sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{30, 28, 83}, sql.Row{69, 61, 34}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((((v1<24) OR (v1<41)) OR (v1<12 AND v2=2)) OR (v1=3 AND v2<>66));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{15, 14, 57}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>52 AND v2<90) OR (v1 BETWEEN 27 AND 77 AND v2 BETWEEN 49 AND 83));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{78, 74, 81}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>2) OR (v1<72 AND v2>=21)) AND (v1=69 AND v2 BETWEEN 44 AND 48);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((((v1>77) OR (v1=57)) OR (v1>9 AND v2>80)) OR (v1=22));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{92, 86, 88}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{93, 87, 51}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{89, 84, 9}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{23, 19, 97}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{60, 57, 29}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((((v1>28) OR (v1<=30 AND v2=30)) OR (v1<29)) OR (v1 BETWEEN 54 AND 74));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>30 AND v2 BETWEEN 20 AND 41) OR (v1>=69 AND v2=51));`, - Expected: []sql.Row{sql.Row{5, 5, 36}, sql.Row{47, 45, 31}, sql.Row{87, 83, 30}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{52, 48, 22}, sql.Row{69, 61, 34}, sql.Row{82, 79, 36}, sql.Row{20, 18, 31}, sql.Row{56, 51, 35}, sql.Row{33, 34, 22}, sql.Row{63, 58, 32}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{28, 27, 24}, sql.Row{64, 59, 29}, sql.Row{96, 93, 21}, sql.Row{32, 33, 39}, sql.Row{99, 98, 51}, sql.Row{60, 57, 29}, sql.Row{36, 38, 20}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>39) OR (v1=55)) AND (v1=67);`, - Expected: []sql.Row{sql.Row{74, 67, 95}}, + Expected: []sql.UntypedSqlRow{{74, 67, 95}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE (((v1<20 AND v2<=46) OR (v1<>4 AND v2=26)) OR (v1>36 AND v2<>13));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{17, 16, 19}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<=5 AND v2>66) OR (v1<=0)) OR (v1 BETWEEN 10 AND 87));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{81, 78, 90}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<37) OR (v1<=48 AND v2<=54)) OR (v1=88));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{28, 27, 24}, sql.Row{51, 47, 5}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<>31) OR (v1<>43)) OR (v1>37 AND v2>5));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<=91) OR (v1<>79)) OR (v1<64));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>48) OR (v1>11));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>40) OR (v1>=49 AND v2>=92));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((((v1<40) OR (v1<=59)) OR (v1<99)) AND (v1>=83) OR (v1>9));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=53 AND v2<=79) OR (v1>50 AND v2>26)) AND (v1>26) AND (v1>43 AND v2<7);`, - Expected: []sql.Row{sql.Row{54, 50, 0}, sql.Row{53, 49, 0}, sql.Row{51, 47, 5}}, + Expected: []sql.UntypedSqlRow{{54, 50, 0}, {53, 49, 0}, {51, 47, 5}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE (((v1 BETWEEN 27 AND 84) OR (v1<98 AND v2>38)) OR (v1<>30));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1=45) OR (v1=28));`, - Expected: []sql.Row{sql.Row{49, 45, 86}, sql.Row{47, 45, 31}, sql.Row{46, 45, 22}, sql.Row{30, 28, 83}, sql.Row{29, 28, 24}, sql.Row{48, 45, 63}}, + Expected: []sql.UntypedSqlRow{{49, 45, 86}, {47, 45, 31}, {46, 45, 22}, {30, 28, 83}, {29, 28, 24}, {48, 45, 63}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE (v1 BETWEEN 11 AND 18) AND (v1>31 AND v2 BETWEEN 38 AND 88);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1>95 AND v2>5) OR (v1>16 AND v2>=38));`, - Expected: []sql.Row{sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{23, 19, 97}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{22, 19, 75}, sql.Row{44, 44, 48}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>=23) OR (v1=47 AND v2>23));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1=30) OR (v1<>67));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>=30 AND v2>=67) OR (v1<=52));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{73, 65, 97}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{54, 50, 0}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{13, 13, 44}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{23, 19, 97}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{80, 78, 0}, sql.Row{98, 98, 0}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{44, 44, 48}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<11 AND v2<>32) OR (v1 BETWEEN 35 AND 41)) OR (v1>=76));`, - Expected: []sql.Row{sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{92, 86, 88}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{79, 76, 39}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{89, 84, 9}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{36, 38, 20}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1=15 AND v2=8) AND (v1>2) OR (v1 BETWEEN 50 AND 97));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{65, 59, 45}, sql.Row{95, 93, 19}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<67 AND v2<>39) OR (v1>36));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>66) OR (v1<50));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1 BETWEEN 5 AND 19) OR (v1<>50 AND v2>=51)) OR (v1>55));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1 BETWEEN 16 AND 65) OR (v1<>18 AND v2>=81)) OR (v1 BETWEEN 6 AND 48));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1>=31 AND v2>=55) OR (v1 BETWEEN 1 AND 28)) OR (v1 BETWEEN 26 AND 41 AND v2<=15));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{100, 98, 61}, sql.Row{13, 13, 44}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<=77 AND v2 BETWEEN 4 AND 26) OR (v1<=1 AND v2<>20)) OR (v1>8 AND v2>40));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{55, 50, 14}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{0, 0, 48}, sql.Row{11, 9, 44}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 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{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1<>50) OR (v1<=88)) OR (v1>=28 AND v2 BETWEEN 30 AND 85));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=94) OR (v1<=87));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<>56 AND v2<93) OR (v1<73 AND v2<=70));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((((v1>=85) OR (v1=91)) OR (v1<88 AND v2<42)) OR (v1<>42 AND v2<=10));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{82, 79, 36}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{56, 51, 35}, sql.Row{89, 84, 9}, sql.Row{33, 34, 22}, sql.Row{63, 58, 32}, sql.Row{17, 16, 19}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{28, 27, 24}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{99, 98, 51}, sql.Row{31, 31, 14}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{36, 38, 20}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>42 AND v2<=13) OR (v1=7));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{85, 81, 4}, sql.Row{62, 58, 12}, sql.Row{54, 50, 0}, sql.Row{68, 61, 3}, sql.Row{53, 49, 0}, sql.Row{89, 84, 9}, sql.Row{51, 47, 5}, sql.Row{80, 78, 0}, sql.Row{98, 98, 0}, sql.Row{75, 68, 11}, sql.Row{94, 89, 3}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1=63) OR (v1 BETWEEN 55 AND 82 AND v2 BETWEEN 0 AND 6)) OR (v1=46));`, - Expected: []sql.Row{sql.Row{58, 56, 0}, sql.Row{85, 81, 4}, sql.Row{50, 46, 46}, sql.Row{68, 61, 3}, sql.Row{80, 78, 0}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}}, + Expected: []sql.UntypedSqlRow{{58, 56, 0}, {85, 81, 4}, {50, 46, 46}, {68, 61, 3}, {80, 78, 0}, {70, 63, 19}, {71, 63, 69}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 20 AND 77 AND v2>=49) OR (v1<13));`, - Expected: []sql.Row{sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{66, 59, 54}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{73, 65, 97}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{43, 43, 63}, sql.Row{1, 0, 52}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{6, 5, 60}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1>=72) OR (v1<49 AND v2<>36)) OR (v1>=10 AND v2<1));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE (((v1 BETWEEN 18 AND 87) OR (v1>=42 AND v2>44)) OR (v1<26 AND v2<=55)) AND (v1<=21);`, - Expected: []sql.Row{sql.Row{3, 2, 10}, sql.Row{5, 5, 36}, sql.Row{21, 19, 48}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{2, 2, 4}, sql.Row{0, 0, 48}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{22, 19, 75}, sql.Row{18, 16, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>98 AND v2<75) OR (v1=47));`, - Expected: []sql.Row{sql.Row{51, 47, 5}}, + Expected: []sql.UntypedSqlRow{{51, 47, 5}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1<=57 AND v2>=43) OR (v1<27 AND v2<>3));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{15, 14, 57}, sql.Row{16, 14, 98}, sql.Row{21, 19, 48}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{59, 56, 60}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{25, 25, 14}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{44, 44, 48}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 16 AND 45 AND v2=22) OR (v1>=87 AND v2=48));`, - Expected: []sql.Row{sql.Row{46, 45, 22}, sql.Row{33, 34, 22}}, + Expected: []sql.UntypedSqlRow{{46, 45, 22}, {33, 34, 22}}, }, { Query: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 45 AND 74 AND v2<=74) OR (v1<>48 AND v2>58));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{10, 6, 73}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{23, 19, 97}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((((v1<32 AND v2>=79) OR (v1<=28)) OR (v1 BETWEEN 46 AND 72)) OR (v1>16));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<10) OR (v1<89));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1>=64 AND v2>=69) OR (v1>=2));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{85, 81, 4}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{93, 87, 51}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{95, 93, 19}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{89, 84, 9}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{80, 78, 0}, sql.Row{86, 82, 16}, sql.Row{96, 93, 21}, sql.Row{98, 98, 0}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{75, 68, 11}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}, sql.Row{94, 89, 3}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1<=65) OR (v1<64));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{58, 56, 0}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{3, 2, 10}, sql.Row{49, 45, 86}, sql.Row{5, 5, 36}, sql.Row{9, 6, 60}, sql.Row{50, 46, 46}, sql.Row{62, 58, 12}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{54, 50, 0}, sql.Row{55, 50, 14}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{68, 61, 3}, sql.Row{4, 3, 35}, sql.Row{7, 6, 1}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{2, 2, 4}, sql.Row{12, 9, 97}, sql.Row{30, 28, 83}, sql.Row{53, 49, 0}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{0, 0, 48}, sql.Row{10, 6, 73}, sql.Row{11, 9, 44}, sql.Row{20, 18, 31}, sql.Row{41, 42, 0}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{1, 0, 52}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{39, 39, 86}, sql.Row{8, 6, 51}, sql.Row{14, 14, 53}, sql.Row{17, 16, 19}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{51, 47, 5}, sql.Row{64, 59, 29}, sql.Row{25, 25, 14}, sql.Row{27, 27, 9}, sql.Row{32, 33, 39}, sql.Row{6, 5, 60}, sql.Row{22, 19, 75}, sql.Row{31, 31, 14}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{70, 63, 19}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{36, 38, 20}, sql.Row{42, 42, 82}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1=46) OR (v1>9 AND v2>=22));`, - Expected: []sql.Row{sql.Row{19, 16, 95}, sql.Row{61, 57, 49}, sql.Row{72, 65, 80}, sql.Row{49, 45, 86}, sql.Row{50, 46, 46}, sql.Row{92, 86, 88}, sql.Row{15, 14, 57}, sql.Row{47, 45, 31}, sql.Row{87, 83, 30}, sql.Row{91, 86, 56}, sql.Row{16, 14, 98}, sql.Row{66, 59, 54}, sql.Row{76, 69, 34}, sql.Row{79, 76, 39}, sql.Row{21, 19, 48}, sql.Row{46, 45, 22}, sql.Row{57, 54, 38}, sql.Row{93, 87, 51}, sql.Row{45, 44, 67}, sql.Row{52, 48, 22}, sql.Row{30, 28, 83}, sql.Row{69, 61, 34}, sql.Row{73, 65, 97}, sql.Row{90, 84, 45}, sql.Row{82, 79, 36}, sql.Row{20, 18, 31}, sql.Row{43, 43, 63}, sql.Row{65, 59, 45}, sql.Row{100, 98, 61}, sql.Row{13, 13, 44}, sql.Row{56, 51, 35}, sql.Row{59, 56, 60}, sql.Row{67, 60, 66}, sql.Row{77, 72, 52}, sql.Row{24, 24, 60}, sql.Row{33, 34, 22}, sql.Row{35, 35, 89}, sql.Row{63, 58, 32}, sql.Row{83, 80, 61}, sql.Row{39, 39, 86}, sql.Row{14, 14, 53}, sql.Row{23, 19, 97}, sql.Row{26, 25, 31}, sql.Row{29, 28, 24}, sql.Row{38, 39, 55}, sql.Row{40, 40, 97}, sql.Row{74, 67, 95}, sql.Row{78, 74, 81}, sql.Row{81, 78, 90}, sql.Row{88, 83, 74}, sql.Row{28, 27, 24}, sql.Row{37, 38, 66}, sql.Row{48, 45, 63}, sql.Row{64, 59, 29}, sql.Row{32, 33, 39}, sql.Row{84, 80, 88}, sql.Row{99, 98, 51}, sql.Row{22, 19, 75}, sql.Row{44, 44, 48}, sql.Row{60, 57, 29}, sql.Row{71, 63, 69}, sql.Row{18, 16, 53}, sql.Row{34, 34, 91}, sql.Row{42, 42, 82}, sql.Row{97, 93, 96}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t0 WHERE ((v1 BETWEEN 21 AND 33 AND v2>25) OR (v1<0));`, - Expected: []sql.Row{sql.Row{30, 28, 83}, sql.Row{24, 24, 60}, sql.Row{26, 25, 31}, sql.Row{32, 33, 39}}, + Expected: []sql.UntypedSqlRow{{30, 28, 83}, {24, 24, 60}, {26, 25, 31}, {32, 33, 39}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<>87 AND v2 BETWEEN 8 AND 33) OR (v1 BETWEEN 39 AND 69 AND v3<4));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{27, 23, 13, 53}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{13, 10, 16, 21}, sql.Row{25, 21, 9, 89}, sql.Row{4, 5, 17, 42}, sql.Row{29, 23, 28, 90}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{55, 49, 26, 11}, sql.Row{99, 98, 31, 21}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{69, 61, 11, 25}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{22, 15, 2, 69}}, + Expected: []sql.UntypedSqlRow{{22, 15, 2, 69}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1<93 AND v2<39 AND v3 BETWEEN 30 AND 97) OR (v1>54)) OR (v1<66));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>59 AND v2<=15) OR (v1 BETWEEN 2 AND 51)) OR (v1>15 AND v2 BETWEEN 31 AND 81));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<3 AND v2<>23 AND v3<>11) OR (v1<>49)) AND (v1<=41 AND v2>40);`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{6, 6, 81, 33}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{21, 14, 91, 1}, sql.Row{39, 29, 77, 46}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{88, 85, 53, 50}, sql.Row{84, 82, 11, 6}, sql.Row{80, 75, 91, 35}, sql.Row{81, 76, 40, 52}, sql.Row{82, 76, 44, 87}, sql.Row{85, 82, 46, 32}, sql.Row{87, 84, 93, 37}, sql.Row{86, 84, 40, 8}, sql.Row{83, 81, 32, 4}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<6 AND v2<>44) OR (v1 BETWEEN 27 AND 96)) OR (v1>22 AND v2<>30 AND v3<49));`, - Expected: []sql.Row{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1>29 AND v2=40) OR (v1<=74)) OR (v1<13 AND v2 BETWEEN 27 AND 82 AND v3<82));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>6 AND v2 BETWEEN 0 AND 97) OR (v1<>40 AND v3<10 AND v2<>10));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((((v1>=35) OR (v1=86)) OR (v1>41 AND v2>=92)) OR (v1<>28));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{97, 95, 89, 66}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{97, 95, 89, 66}, {61, 55, 81, 80}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>9) OR (v1>14 AND v2>10));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<=39 AND v2 BETWEEN 17 AND 34) OR (v1=89 AND v3>49 AND v2>58)) OR (v1>97));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{4, 5, 17, 42}, sql.Row{29, 23, 28, 90}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{99, 98, 31, 21}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<7 AND v2<>43) OR (v1<>5 AND v3<0 AND v2<1));`, - Expected: []sql.Row{sql.Row{2, 3, 38, 37}, sql.Row{3, 3, 99, 99}, sql.Row{1, 2, 65, 9}, sql.Row{6, 6, 81, 33}, sql.Row{4, 5, 17, 42}, sql.Row{5, 6, 6, 76}, sql.Row{0, 0, 3, 16}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{73, 66, 73, 4}}, + Expected: []sql.UntypedSqlRow{{73, 66, 73, 4}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>27) OR (v1>=22 AND v2>99 AND v3>=43));`, - Expected: []sql.Row{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>25 AND v2 BETWEEN 1 AND 82) OR (v1>31 AND v2=86));`, - Expected: []sql.Row{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{93, 90, 30, 67}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{41, 31, 47, 91}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{73, 66, 73, 4}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>27 AND v3=10) OR (v1>=25 AND v2<26)) AND (v1>=62 AND v2<=96 AND v3>28);`, - Expected: []sql.Row{sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}}, + Expected: []sql.UntypedSqlRow{{90, 87, 22, 34}, {75, 70, 8, 54}}, }, { Query: `SELECT * FROM comp_index_t1 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{sql.Row{47, 36, 84, 75}, sql.Row{78, 72, 65, 64}, sql.Row{49, 38, 88, 68}, sql.Row{52, 42, 80, 85}, sql.Row{59, 54, 57, 83}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{18, 13, 47, 30}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{30, 23, 30, 44}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=15 AND v2>28) OR (v1<=84 AND v2<>91));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1=49 AND v2<=52 AND v3 BETWEEN 23 AND 38) OR (v1 BETWEEN 30 AND 84 AND v2=94));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 8 AND 18) OR (v1=27 AND v2<=4 AND v3<14));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{22, 15, 2, 69}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{15, 10, 47, 36}, sql.Row{9, 8, 9, 21}, sql.Row{10, 8, 37, 90}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{20, 14, 38, 24}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=4) OR (v1=0 AND v2<=63));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1<=99 AND v2<>86) AND (v1>=21 AND v2>36);`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{87, 84, 93, 37}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>43) OR (v1=14));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<>29 AND v2>93 AND v3<64) OR (v1<>54 AND v2>35));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<88) OR (v1<>45 AND v2<89)) AND (v1=98 AND v2<=81 AND v3 BETWEEN 34 AND 77);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>65 AND v2<>86 AND v3<=2) OR (v1<>37 AND v2<=96));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{27, 23, 13, 53}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{4, 5, 17, 42}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{50, 41, 17, 68}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{55, 49, 26, 11}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{9, 8, 9, 21}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{70, 63, 85, 23}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<81 AND v2>=28) OR (v1=19 AND v2 BETWEEN 9 AND 57));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<32) OR (v1>=52)) OR (v1>=98));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>47) OR (v1<>25));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1>27 AND v2<=80 AND v3 BETWEEN 11 AND 37) AND (v1=87 AND v2<54) AND (v1>29);`, - Expected: []sql.Row{sql.Row{90, 87, 22, 34}}, + Expected: []sql.UntypedSqlRow{{90, 87, 22, 34}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1<>65 AND v2>=52) OR (v1<=85)) OR (v1<=64 AND v3=9 AND v2>=36));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=12 AND v2>=65) OR (v1=11 AND v2<1));`, - Expected: []sql.Row{sql.Row{97, 95, 89, 66}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{49, 38, 88, 68}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{43, 33, 70, 50}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{39, 29, 77, 46}, sql.Row{70, 63, 85, 23}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=92 AND v2<=42) OR (v1>=58));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>0) OR (v1<81 AND v2>=70)) OR (v1>=52));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{64, 56, 58, 4}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{51, 41, 77, 26}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{18, 13, 47, 30}, sql.Row{79, 74, 78, 26}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{55, 49, 26, 11}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{9, 8, 9, 21}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>43 AND v2<53 AND v3<=20) OR (v1<7 AND v2<>79));`, - Expected: []sql.Row{sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{3, 3, 99, 99}, sql.Row{71, 65, 17, 9}, sql.Row{1, 2, 65, 9}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{4, 5, 17, 42}, sql.Row{31, 24, 20, 8}, sql.Row{55, 49, 26, 11}, sql.Row{77, 71, 39, 15}, sql.Row{5, 6, 6, 76}, sql.Row{0, 0, 3, 16}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 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{sql.Row{13, 10, 16, 21}, sql.Row{4, 5, 17, 42}, sql.Row{36, 29, 7, 38}, sql.Row{31, 24, 20, 8}, sql.Row{33, 26, 15, 28}, sql.Row{9, 8, 9, 21}, sql.Row{0, 0, 3, 16}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1<=76) AND (v1<=94);`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{12, 9, 71, 82}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1=16 AND v2<>25 AND v3<>3) OR (v1>=4 AND v2 BETWEEN 4 AND 93 AND v3>39));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{12, 9, 71, 82}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{81, 76, 40, 52}, sql.Row{67, 59, 77, 53}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{29, 23, 28, 90}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((((v1>=51 AND v2<83) OR (v1>=15 AND v2>=3)) OR (v1<=49)) OR (v1<69));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1<>43 AND v2>10) AND (v1>30 AND v2 BETWEEN 18 AND 78 AND v3 BETWEEN 75 AND 81);`, - Expected: []sql.Row{sql.Row{89, 86, 63, 79}, sql.Row{42, 32, 40, 76}}, + Expected: []sql.UntypedSqlRow{{89, 86, 63, 79}, {42, 32, 40, 76}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>1) OR (v1<34 AND v2>=57 AND v3 BETWEEN 15 AND 67));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>3 AND v2>32) OR (v1<=26 AND v3>=27 AND v2>=5));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>25 AND v2<>70 AND v3<=51) OR (v1<=71 AND v2>59));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{39, 29, 77, 46}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{12, 9, 71, 82}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{37, 29, 21, 74}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=48 AND v2 BETWEEN 33 AND 66) OR (v1>=91));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{7, 7, 33, 51}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{16, 12, 44, 84}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{35, 28, 39, 84}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>26 AND v2 BETWEEN 66 AND 79 AND v3<=94) OR (v1 BETWEEN 16 AND 55));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 28 AND 49 AND v2<47) OR (v1>37 AND v2 BETWEEN 45 AND 61 AND v3<73));`, - Expected: []sql.Row{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{38, 29, 27, 48}, sql.Row{54, 46, 58, 8}, sql.Row{74, 67, 55, 27}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{37, 29, 21, 74}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{35, 28, 39, 84}, sql.Row{42, 32, 40, 76}, sql.Row{85, 82, 46, 32}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=77) OR (v1<50)) AND (v1<=53 AND v2>35 AND v3<>98);`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{35, 28, 39, 84}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>46 AND v2<>49 AND v3<=44) OR (v1 BETWEEN 64 AND 80 AND v2=41 AND v3<=68));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{96, 94, 92, 38}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{55, 49, 26, 11}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{83, 81, 32, 4}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1=95 AND v3<47 AND v2>=97) OR (v1 BETWEEN 11 AND 36 AND v2<=83));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{40, 31, 47, 21}, sql.Row{27, 23, 13, 53}, sql.Row{38, 29, 27, 48}, sql.Row{22, 15, 2, 69}, sql.Row{34, 27, 35, 12}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=65 AND v2=39 AND v3 BETWEEN 49 AND 67) OR (v1<57 AND v2>35));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{47, 36, 84, 75}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{65, 56, 66, 33}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{35, 28, 39, 84}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{27, 23, 13, 53}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{67, 59, 77, 53}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{15, 10, 47, 36}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{8, 7, 37, 42}, sql.Row{30, 23, 30, 44}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=17 AND v2>38) AND (v1>=79) OR (v1<>38));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=4 AND v2=26) OR (v1>21 AND v2 BETWEEN 14 AND 64));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{71, 65, 17, 9}, sql.Row{38, 29, 27, 48}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{93, 90, 30, 67}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>50) OR (v1<=58 AND v2<=95)) OR (v1=10));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1<64 AND v2>=90 AND v3>41) AND (v1>=14 AND v2 BETWEEN 30 AND 70 AND v3>=25);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1<27 AND v2<=43) OR (v1<62 AND v2<=99)) OR (v1<>48 AND v2<29 AND v3<>69));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{2, 3, 38, 37}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{7, 7, 33, 51}, sql.Row{4, 5, 17, 42}, sql.Row{15, 10, 47, 36}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{90, 87, 22, 34}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1<>44 AND v2>=10) AND (v1=47 AND v2=14 AND v3<30);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>6 AND v2=50) OR (v1>=16));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>=43 AND v2<28 AND v3<>24) OR (v1<36 AND v2=14 AND v3 BETWEEN 16 AND 55));`, - Expected: []sql.Row{sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{62, 56, 0, 97}, sql.Row{53, 45, 1, 57}, sql.Row{55, 49, 26, 11}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{69, 61, 11, 25}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>48 AND v2<=80) OR (v1=72 AND v3 BETWEEN 45 AND 52 AND v2=98));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{78, 72, 65, 64}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1>=98 AND v2=51) AND (v1>34);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1>2) OR (v1<=30)) OR (v1<>35 AND v2 BETWEEN 6 AND 61 AND v3>=16));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>19) OR (v1<>48));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 12 AND 42 AND v2<=12) OR (v1<34 AND v2 BETWEEN 30 AND 47 AND v3<>50));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{7, 7, 33, 51}, sql.Row{22, 15, 2, 69}, sql.Row{34, 27, 35, 12}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{18, 13, 47, 30}, sql.Row{36, 29, 7, 38}, sql.Row{41, 31, 47, 91}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((((v1>=6) OR (v1>7)) OR (v1<88 AND v2<=34 AND v3<=47)) OR (v1>=10)) OR (v1=10));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1>=74) OR (v1>=1)) OR (v1=54 AND v2>=38 AND v3>2)) AND (v1>5);`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=45 AND v2>18) OR (v1<64 AND v2=25 AND v3>97));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<37 AND v3>77) OR (v1>38 AND v3<>57 AND v2=87));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{12, 9, 71, 82}, sql.Row{3, 3, 99, 99}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{29, 23, 28, 90}, sql.Row{41, 31, 47, 91}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{35, 28, 39, 84}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{33, 26, 15, 28}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{5, 6, 6, 76}, sql.Row{30, 23, 30, 44}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>23 AND v3<=52) OR (v1<>19 AND v2=25));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1<=12 AND v2>=65) AND (v1<6 AND v2>=92);`, - Expected: []sql.Row{sql.Row{3, 3, 99, 99}}, + Expected: []sql.UntypedSqlRow{{3, 3, 99, 99}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1=62 AND v2<>32) OR (v1>=55 AND v2=41 AND v3>73));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1<>34 AND v2<=62) OR (v1>5 AND v2 BETWEEN 59 AND 98 AND v3<69)) OR (v1>34));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{88, 85, 53, 50}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{30, 23, 30, 44}, sql.Row{69, 61, 11, 25}, sql.Row{0, 0, 3, 16}, sql.Row{23, 16, 40, 36}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=42) OR (v1 BETWEEN 13 AND 30 AND v2<50));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 16 AND 49) OR (v1<=69 AND v2>9 AND v3<=8));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{40, 31, 47, 21}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>71 AND v2>44) OR (v1<76 AND v2>=10)) OR (v1>=44 AND v2=66));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{92, 88, 88, 42}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1>=99 AND v2<66) OR (v1 BETWEEN 1 AND 47)) OR (v1<>2 AND v2<30));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>9 AND v2<74) AND (v1<=63 AND v2=18) OR (v1<46));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<=20 AND v2<=62) OR (v1>45 AND v2=33 AND v3<=4)) OR (v1>29));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{20, 14, 38, 24}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=26 AND v2 BETWEEN 6 AND 80) AND (v1=47 AND v2<67 AND v3<7) OR (v1>63));`, - Expected: []sql.Row{sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{73, 66, 73, 4}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<11) OR (v1<>33));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<9 AND v2=94 AND v3>8) OR (v1>=63));`, - Expected: []sql.Row{sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{73, 66, 73, 4}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<43) OR (v1 BETWEEN 40 AND 49 AND v2>26 AND v3 BETWEEN 22 AND 80));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 4 AND 85 AND v2<>45 AND v3<=41) OR (v1>67 AND v2<25));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{46, 36, 4, 36}, sql.Row{18, 13, 47, 30}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{55, 49, 26, 11}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{33, 26, 15, 28}, sql.Row{9, 8, 9, 21}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>77) OR (v1<=54 AND v2<=71 AND v3>=49)) OR (v1>54 AND v2<30 AND v3=6));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{84, 82, 11, 6}, sql.Row{57, 50, 86, 6}}, + Expected: []sql.UntypedSqlRow{{84, 82, 11, 6}, {57, 50, 86, 6}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<>50) OR (v1<=71));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1=41) OR (v1>29 AND v2<>31));`, - Expected: []sql.Row{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{37, 29, 21, 74}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{24, 20, 29, 93}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>2 AND v2<76 AND v3<=35) OR (v1<=12 AND v3 BETWEEN 25 AND 30));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{71, 65, 17, 9}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{18, 13, 47, 30}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{55, 49, 26, 11}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{9, 8, 9, 21}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=24) OR (v1>=47 AND v2<=75 AND v3<=52));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1>=21 AND v2<>70) OR (v1<=77 AND v2>4)) OR (v1<28 AND v2<=3 AND v3<>21));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=60 AND v2>91) OR (v1<=10));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{3, 3, 99, 99}, sql.Row{7, 7, 33, 51}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{6, 6, 81, 33}, sql.Row{13, 10, 16, 21}, sql.Row{4, 5, 17, 42}, sql.Row{15, 10, 47, 36}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{0, 0, 3, 16}, sql.Row{87, 84, 93, 37}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{44, 34, 27, 58}, sql.Row{38, 29, 27, 48}, sql.Row{48, 37, 27, 32}}, + Expected: []sql.UntypedSqlRow{{44, 34, 27, 58}, {38, 29, 27, 48}, {48, 37, 27, 32}}, }, { Query: `SELECT * FROM comp_index_t1 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{sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{60, 55, 45, 46}, sql.Row{100, 98, 42, 22}, sql.Row{72, 66, 46, 46}, sql.Row{26, 21, 42, 76}, sql.Row{85, 82, 46, 32}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1>=19 AND v2<2) AND (v1<4 AND v3>23 AND v2<>53);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 34 AND 40) OR (v1<=80 AND v2<>53)) AND (v1=81 AND v2=17 AND v3<>12);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>34 AND v2 BETWEEN 18 AND 67 AND v3<67) OR (v1>21));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>45) OR (v1>=91 AND v2>=8 AND v3<=38)) OR (v1<>58 AND v3<=32 AND v2<>45));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=48) OR (v1<38 AND v2>=26)) AND (v1<=45 AND v2>21) AND (v1=83 AND v2=20);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>25) OR (v1<53));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<95 AND v2>=12) OR (v1 BETWEEN 41 AND 55 AND v2<=81 AND v3<46));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{94, 91, 15, 15}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1>4) AND (v1=3 AND v2 BETWEEN 4 AND 34 AND v3<=40);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>36 AND v2>82) OR (v1 BETWEEN 22 AND 59));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=0) OR (v1 BETWEEN 17 AND 45));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{40, 31, 47, 21}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{34, 27, 35, 12}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<1 AND v3<=34) OR (v1 BETWEEN 2 AND 57 AND v2<>70));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1>4) AND (v1 BETWEEN 8 AND 35 AND v2>=94 AND v3=32) AND (v1>=12);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1>12) OR (v1>=26 AND v2 BETWEEN 77 AND 87 AND v3<19)) OR (v1<=89));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{2, 3, 38, 37}, sql.Row{40, 31, 47, 21}, sql.Row{47, 36, 84, 75}, sql.Row{51, 41, 77, 26}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{8, 7, 37, 42}, sql.Row{35, 28, 39, 84}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1=67 AND v2<>69) OR (v1<28 AND v2<62 AND v3>=99));`, - Expected: []sql.Row{sql.Row{74, 67, 55, 27}}, + Expected: []sql.UntypedSqlRow{{74, 67, 55, 27}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<45 AND v2>5 AND v3>20) OR (v1<17));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{6, 6, 81, 33}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1=40 AND v2<>18) OR (v1<>97 AND v2<>17 AND v3<>48));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>63) AND (v1<=44 AND v2<>43 AND v3=29) OR (v1=38 AND v2>45));`, - Expected: []sql.Row{sql.Row{49, 38, 88, 68}}, + Expected: []sql.UntypedSqlRow{{49, 38, 88, 68}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<=6) OR (v1>0 AND v2 BETWEEN 3 AND 50));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{1, 2, 65, 9}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{50, 41, 17, 68}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{0, 0, 3, 16}, sql.Row{23, 16, 40, 36}, sql.Row{42, 32, 40, 76}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 5 AND 35 AND v2<=3 AND v3<>14) OR (v1>11));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<50) AND (v1<19 AND v2>=10) OR (v1<36 AND v2>10 AND v3<>65));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{1, 2, 65, 9}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<20 AND v2>=1 AND v3=26) OR (v1=12));`, - Expected: []sql.Row{sql.Row{16, 12, 44, 84}, sql.Row{17, 12, 66, 40}}, + Expected: []sql.UntypedSqlRow{{16, 12, 44, 84}, {17, 12, 66, 40}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<>51) AND (v1<>4 AND v2<47 AND v3>=77) OR (v1>41 AND v3>62));`, - Expected: []sql.Row{sql.Row{97, 95, 89, 66}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{78, 72, 65, 64}, sql.Row{62, 56, 0, 97}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{93, 90, 30, 67}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{35, 28, 39, 84}, sql.Row{59, 54, 57, 83}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<35) OR (v1>=58 AND v2>=0));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>28 AND v2<95) OR (v1<91));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (v1=99 AND v2<=41 AND v3>=61) AND (v1=34 AND v2>68 AND v3<=42);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>=74 AND v2<=18) OR (v1>=72)) AND (v1=95 AND v2=31 AND v3 BETWEEN 5 AND 19);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1=64) OR (v1>=49 AND v2<9 AND v3<=49));`, - Expected: []sql.Row{sql.Row{95, 93, 7, 26}}, + Expected: []sql.UntypedSqlRow{{95, 93, 7, 26}}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1>=46) AND (v1<22 AND v2<>42 AND v3<>54) OR (v1>=55 AND v2 BETWEEN 11 AND 84));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{71, 65, 17, 9}, sql.Row{78, 72, 65, 64}, sql.Row{81, 76, 40, 52}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{86, 84, 40, 8}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=7) OR (v1<54));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<=95 AND v2=55 AND v3>34) OR (v1=19));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{84, 82, 11, 6}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{6, 6, 81, 33}, sql.Row{62, 56, 0, 97}, sql.Row{13, 10, 16, 21}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{5, 6, 6, 76}, sql.Row{69, 61, 11, 25}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{70, 63, 85, 23}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 50 AND 59) OR (v1>=23 AND v3>=87 AND v2<>46));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{63, 56, 8, 78}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{29, 23, 28, 90}, sql.Row{41, 31, 47, 91}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{59, 54, 57, 83}, sql.Row{57, 50, 86, 6}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<53) OR (v1<=3));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{97, 95, 89, 66}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{96, 94, 92, 38}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{49, 38, 88, 68}, sql.Row{79, 74, 78, 26}, sql.Row{43, 33, 70, 50}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{70, 63, 85, 23}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{61, 55, 81, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<29 AND v3>=33 AND v2=43) OR (v1<59));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>19 AND v2>84 AND v3>94) OR (v1>=42 AND v3=41));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1>=8 AND v2<=97 AND v3>=77) OR (v1<>4)) OR (v1<=41));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>33) OR (v1<=28)) OR (v1<>68));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<>15 AND v2>=22 AND v3<=51) OR (v1<>40 AND v2>26 AND v3<95));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>6) OR (v1<=67 AND v2<>67 AND v3>=88));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<=0) OR (v1<=53)) OR (v1<=38));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{22, 15, 2, 69}, sql.Row{100, 98, 42, 22}, sql.Row{99, 98, 31, 21}, sql.Row{24, 20, 29, 93}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<80 AND v2 BETWEEN 41 AND 74) OR (v1>=36 AND v2=32));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{54, 46, 58, 8}, sql.Row{65, 56, 66, 33}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{16, 12, 44, 84}, sql.Row{60, 55, 45, 46}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{72, 66, 46, 46}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE (((v1<66 AND v2>=11 AND v3<90) OR (v1<>90)) OR (v1<=7 AND v2=52));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1>=38) OR (v1=13)) OR (v1=25 AND v2<=32 AND v3 BETWEEN 12 AND 92));`, - Expected: []sql.Row{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{18, 13, 47, 30}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<=84) OR (v1=41)) OR (v1<83 AND v2=13 AND v3=58));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1<36 AND v2<=79 AND v3>47) OR (v1 BETWEEN 24 AND 89 AND v2<29));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{12, 9, 71, 82}, sql.Row{84, 82, 11, 6}, sql.Row{27, 23, 13, 53}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{22, 15, 2, 69}, sql.Row{62, 56, 0, 97}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{42, 32, 40, 76}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 WHERE ((v1<78 AND v2 BETWEEN 55 AND 64 AND v3>=0) OR (v1<74));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1<>1 AND v2=88 AND v3<33) OR (v1<=38)) OR (v1>74 AND v3<>55 AND v2>=9));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1 BETWEEN 15 AND 96 AND v2<>73) OR (v1>=16));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=72 AND v2<>19 AND v3 BETWEEN 9 AND 12) OR (v1<=77 AND v2=30 AND v3<=10));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{15, 10, 47, 36}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{20, 14, 38, 24}, sql.Row{28, 23, 28, 68}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>24) AND (v1>68 AND v2 BETWEEN 1 AND 79 AND v3 BETWEEN 23 AND 44) OR (v1>78));`, - Expected: []sql.Row{sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{96, 94, 92, 38}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{86, 84, 40, 8}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1=47 AND v2=7) OR (v1>=7 AND v2<>87)) OR (v1<>6 AND v2<=84));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{64, 56, 58, 4}, sql.Row{97, 95, 89, 66}, sql.Row{47, 36, 84, 75}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{49, 38, 88, 68}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{43, 33, 70, 50}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{1, 2, 65, 9}, sql.Row{6, 6, 81, 33}, sql.Row{18, 13, 47, 30}, sql.Row{17, 12, 66, 40}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{15, 10, 47, 36}, sql.Row{8, 7, 37, 42}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{20, 14, 38, 24}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{30, 23, 30, 44}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE (((v1 BETWEEN 41 AND 98 AND v2>54) OR (v1<29)) OR (v1<32));`, - Expected: []sql.Row{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{64, 56, 58, 4}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{76, 70, 58, 33}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{15, 10, 47, 36}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{92, 88, 88, 42}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{20, 14, 38, 24}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{28, 23, 28, 68}, sql.Row{61, 55, 81, 80}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{96, 94, 92, 38}, sql.Row{89, 86, 63, 79}, sql.Row{100, 98, 42, 22}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{14, 10, 32, 46}, sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{2, 3, 38, 37}, sql.Row{11, 9, 39, 20}, sql.Row{12, 9, 71, 82}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{3, 3, 99, 99}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{7, 7, 33, 51}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{1, 2, 65, 9}, sql.Row{22, 15, 2, 69}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{6, 6, 81, 33}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{13, 10, 16, 21}, sql.Row{16, 12, 44, 84}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{4, 5, 17, 42}, sql.Row{18, 13, 47, 30}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{17, 12, 66, 40}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{19, 13, 56, 41}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{15, 10, 47, 36}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{9, 8, 9, 21}, sql.Row{8, 7, 37, 42}, sql.Row{10, 8, 37, 90}, sql.Row{5, 6, 6, 76}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{0, 0, 3, 16}, sql.Row{21, 14, 91, 1}, sql.Row{23, 16, 40, 36}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{20, 14, 38, 24}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{94, 91, 15, 15}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{58, 54, 13, 78}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{73, 66, 73, 4}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{57, 50, 86, 6}, sql.Row{86, 84, 40, 8}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=19) AND (v1<=73) OR (v1=9 AND v2=5 AND v3<=5));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{40, 31, 47, 21}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{54, 46, 58, 8}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{25, 21, 9, 89}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{26, 21, 42, 76}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{24, 20, 29, 93}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 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{sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{38, 29, 27, 48}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{62, 56, 0, 97}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{60, 55, 45, 46}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{93, 90, 30, 67}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{59, 54, 57, 83}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>21) OR (v1>=86 AND v2>2 AND v3>=67));`, - Expected: []sql.Row{sql.Row{32, 25, 49, 88}, sql.Row{44, 34, 27, 58}, sql.Row{64, 56, 58, 4}, sql.Row{88, 85, 53, 50}, sql.Row{97, 95, 89, 66}, sql.Row{40, 31, 47, 21}, sql.Row{84, 82, 11, 6}, sql.Row{94, 91, 15, 15}, sql.Row{95, 93, 7, 26}, sql.Row{27, 23, 13, 53}, sql.Row{47, 36, 84, 75}, sql.Row{63, 56, 8, 78}, sql.Row{68, 60, 8, 70}, sql.Row{71, 65, 17, 9}, sql.Row{80, 75, 91, 35}, sql.Row{38, 29, 27, 48}, sql.Row{51, 41, 77, 26}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{54, 46, 58, 8}, sql.Row{81, 76, 40, 52}, sql.Row{34, 27, 35, 12}, sql.Row{62, 56, 0, 97}, sql.Row{65, 56, 66, 33}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{46, 36, 4, 36}, sql.Row{49, 38, 88, 68}, sql.Row{60, 55, 45, 46}, sql.Row{89, 86, 63, 79}, sql.Row{29, 23, 28, 90}, sql.Row{36, 29, 7, 38}, sql.Row{53, 45, 1, 57}, sql.Row{79, 74, 78, 26}, sql.Row{50, 41, 17, 68}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{31, 24, 20, 8}, sql.Row{37, 29, 21, 74}, sql.Row{41, 31, 47, 91}, sql.Row{43, 33, 70, 50}, sql.Row{55, 49, 26, 11}, sql.Row{72, 66, 46, 46}, sql.Row{77, 71, 39, 15}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{33, 26, 15, 28}, sql.Row{52, 42, 80, 85}, sql.Row{58, 54, 13, 78}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{30, 23, 30, 44}, sql.Row{35, 28, 39, 84}, sql.Row{69, 61, 11, 25}, sql.Row{73, 66, 73, 4}, sql.Row{39, 29, 77, 46}, sql.Row{42, 32, 40, 76}, sql.Row{59, 54, 57, 83}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{57, 50, 86, 6}, sql.Row{75, 70, 8, 54}, sql.Row{86, 84, 40, 8}, sql.Row{28, 23, 28, 68}, sql.Row{48, 37, 27, 32}, sql.Row{56, 50, 49, 20}, sql.Row{61, 55, 81, 80}, sql.Row{83, 81, 32, 4}, sql.Row{91, 87, 57, 62}, sql.Row{45, 35, 32, 36}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t1 WHERE ((v1>=94) OR (v1>=57 AND v2<>53 AND v3>22));`, - Expected: []sql.Row{sql.Row{97, 95, 89, 66}, sql.Row{95, 93, 7, 26}, sql.Row{68, 60, 8, 70}, sql.Row{80, 75, 91, 35}, sql.Row{78, 72, 65, 64}, sql.Row{96, 94, 92, 38}, sql.Row{81, 76, 40, 52}, sql.Row{67, 59, 77, 53}, sql.Row{74, 67, 55, 27}, sql.Row{82, 76, 44, 87}, sql.Row{89, 86, 63, 79}, sql.Row{79, 74, 78, 26}, sql.Row{76, 70, 58, 33}, sql.Row{100, 98, 42, 22}, sql.Row{72, 66, 46, 46}, sql.Row{99, 98, 31, 21}, sql.Row{98, 97, 63, 19}, sql.Row{66, 57, 7, 52}, sql.Row{92, 88, 88, 42}, sql.Row{93, 90, 30, 67}, sql.Row{69, 61, 11, 25}, sql.Row{70, 63, 85, 23}, sql.Row{85, 82, 46, 32}, sql.Row{90, 87, 22, 34}, sql.Row{87, 84, 93, 37}, sql.Row{75, 70, 8, 54}, sql.Row{91, 87, 57, 62}}, + Expected: []sql.UntypedSqlRow{{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}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<40 AND v2=9) OR (v1<11 AND v2=15 AND v3<>55 AND v4<>95));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{87, 84, 56, 78, 18}, sql.Row{82, 82, 29, 66, 71}, sql.Row{86, 83, 41, 53, 57}, sql.Row{89, 86, 7, 57, 96}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>33 AND v2>=16) OR (v1>=24));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{20, 12, 0, 33, 62}, sql.Row{59, 51, 97, 39, 36}}, + Expected: []sql.UntypedSqlRow{{20, 12, 0, 33, 62}, {59, 51, 97, 39, 36}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{20, 12, 0, 33, 62}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{21, 12, 42, 15, 31}, sql.Row{10, 5, 32, 30, 48}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{19, 10, 36, 27, 5}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{60, 52, 72, 44, 2}, sql.Row{33, 29, 72, 97, 93}}, + Expected: []sql.UntypedSqlRow{{94, 89, 91, 7, 45}, {3, 1, 72, 29, 21}, {60, 52, 72, 44, 2}, {33, 29, 72, 97, 93}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1=70) OR (v1>=38 AND v3 BETWEEN 25 AND 30));`, - Expected: []sql.Row{sql.Row{56, 50, 39, 26, 37}, sql.Row{93, 89, 1, 27, 50}, sql.Row{74, 70, 56, 21, 22}, sql.Row{73, 70, 40, 19, 5}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=33) OR (v1<=31 AND v4<>35 AND v2=38));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{56, 50, 39, 26, 37}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{58, 50, 97, 0, 79}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=6 AND v2<=25 AND v3>39) OR (v1 BETWEEN 17 AND 94 AND v2>96));`, - Expected: []sql.Row{sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{29, 22, 98, 22, 21}, sql.Row{58, 50, 97, 0, 79}}, + Expected: []sql.UntypedSqlRow{{59, 51, 97, 39, 36}, {70, 66, 97, 6, 39}, {29, 22, 98, 22, 21}, {58, 50, 97, 0, 79}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=31) OR (v1<84 AND v2<=73 AND v3<>2 AND v4<=51));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{56, 50, 39, 26, 37}, sql.Row{35, 33, 29, 69, 6}, sql.Row{65, 63, 50, 20, 43}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{85, 83, 37, 36, 16}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{2, 1, 43, 13, 36}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=20 AND v2<=29 AND v3<52 AND v4<>34) OR (v1<>46 AND v2<>98));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1=40) OR (v1=27)) OR (v1>90 AND v2>50 AND v3=66 AND v4<83));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1<=92 AND v4 BETWEEN 8 AND 90) AND (v1 BETWEEN 39 AND 42);`, - Expected: []sql.Row{sql.Row{48, 41, 21, 82, 54}, sql.Row{46, 39, 45, 75, 55}, sql.Row{47, 41, 1, 85, 9}}, + Expected: []sql.UntypedSqlRow{{48, 41, 21, 82, 54}, {46, 39, 45, 75, 55}, {47, 41, 1, 85, 9}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 23 AND 85 AND v2<=51 AND v3<>68) OR (v1 BETWEEN 30 AND 58 AND v2<>75));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{43, 37, 35, 6, 44}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{93, 89, 1, 27, 50}, sql.Row{84, 82, 70, 5, 47}, sql.Row{77, 73, 10, 2, 0}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>77 AND v4>82 AND v2>=96) OR (v1 BETWEEN 41 AND 80 AND v2<>21 AND v3>60));`, - Expected: []sql.Row{sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{67, 64, 26, 77, 97}, sql.Row{55, 50, 36, 73, 58}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1=28 AND v4 BETWEEN 44 AND 50) AND (v1>=49);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{84, 82, 70, 5, 47}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{82, 82, 29, 66, 71}, {83, 82, 31, 22, 99}, {84, 82, 70, 5, 47}, {75, 71, 3, 49, 55}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=27 AND v3>23) OR (v1<70 AND v2<>43));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{56, 50, 39, 26, 37}, sql.Row{52, 47, 94, 56, 21}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{45, 38, 71, 22, 37}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{99, 94, 79, 53, 73}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{78, 73, 91, 56, 0}, sql.Row{91, 87, 66, 8, 22}, sql.Row{92, 88, 57, 12, 88}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{97, 93, 56, 71, 53}, sql.Row{58, 50, 97, 0, 79}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>0 AND v2=94 AND v3<>0) OR (v1>=83 AND v2<69 AND v3<84));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{52, 47, 94, 56, 21}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<83 AND v4>51) OR (v1<>30));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<92) OR (v1 BETWEEN 6 AND 39 AND v2=47 AND v3>=63));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=98) OR (v1<=2 AND v2<5));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{65, 63, 50, 20, 43}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{17, 9, 7, 74, 92}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{24, 17, 49, 14, 7}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{7, 4, 10, 53, 69}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=12) OR (v1=28));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{20, 12, 0, 33, 62}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{76, 71, 48, 89, 99}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>64) OR (v1<>55 AND v2=85 AND v3<=88));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1 BETWEEN 2 AND 23) OR (v1 BETWEEN 7 AND 14 AND v2<=27 AND v3<=82)) OR (v1>61));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1>=85 AND v2<12) AND (v1>=25);`, - Expected: []sql.Row{sql.Row{88, 85, 2, 3, 88}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}}, + Expected: []sql.UntypedSqlRow{{88, 85, 2, 3, 88}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1=0) OR (v1=31)) OR (v1<>73 AND v4>9 AND v2 BETWEEN 27 AND 69 AND v3=14));`, - Expected: []sql.Row{sql.Row{0, 0, 33, 2, 67}, sql.Row{1, 0, 55, 14, 32}}, + Expected: []sql.UntypedSqlRow{{0, 0, 33, 2, 67}, {1, 0, 55, 14, 32}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{99, 94, 79, 53, 73}, sql.Row{81, 76, 74, 97, 18}, sql.Row{86, 83, 41, 53, 57}, sql.Row{100, 96, 73, 38, 38}}, + Expected: []sql.UntypedSqlRow{{99, 94, 79, 53, 73}, {81, 76, 74, 97, 18}, {86, 83, 41, 53, 57}, {100, 96, 73, 38, 38}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{5, 3, 31, 22, 81}, sql.Row{34, 32, 16, 97, 29}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{5, 3, 31, 22, 81}, {34, 32, 16, 97, 29}, {4, 2, 27, 1, 75}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 42 AND 54 AND v2>20) OR (v1<>68 AND v3>32));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{9, 5, 17, 52, 13}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1 BETWEEN 20 AND 93) AND (v1=66 AND v2<>21 AND v3 BETWEEN 43 AND 94);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1>83 AND v2<>16 AND v3=22) AND (v1=34) AND (v1=79 AND v2<=45 AND v3=49);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1=44 AND v2<=98) AND (v1>15) OR (v1<=45 AND v2=1 AND v3<>54));`, - Expected: []sql.Row{sql.Row{47, 41, 1, 85, 9}}, + Expected: []sql.UntypedSqlRow{{47, 41, 1, 85, 9}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{33, 29, 72, 97, 93}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=52) OR (v1>=59 AND v2<=30 AND v3=98 AND v4 BETWEEN 43 AND 74));`, - Expected: []sql.Row{sql.Row{60, 52, 72, 44, 2}}, + Expected: []sql.UntypedSqlRow{{60, 52, 72, 44, 2}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{88, 85, 2, 3, 88}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}}, + Expected: []sql.UntypedSqlRow{{88, 85, 2, 3, 88}, {93, 89, 1, 27, 50}, {89, 86, 7, 57, 96}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{24, 17, 49, 14, 7}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<31 AND v2<>14 AND v3 BETWEEN 0 AND 10 AND v4>=95) OR (v1<>91)) OR (v1<>35));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>13) OR (v1<>3 AND v4<=42 AND v2 BETWEEN 89 AND 94));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{83, 82, 31, 22, 99}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{39, 34, 87, 13, 51}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{37, 33, 86, 12, 22}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{58, 50, 97, 0, 79}, sql.Row{73, 70, 40, 19, 5}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{40, 34, 89, 27, 90}, sql.Row{9, 5, 17, 52, 13}, sql.Row{79, 74, 22, 42, 16}, sql.Row{42, 36, 7, 40, 16}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<4 AND v2>=71) OR (v1<18 AND v2=57));`, - Expected: []sql.Row{sql.Row{3, 1, 72, 29, 21}}, + Expected: []sql.UntypedSqlRow{{3, 1, 72, 29, 21}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{38, 34, 55, 37, 34}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{67, 64, 26, 77, 97}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{89, 86, 7, 57, 96}, sql.Row{46, 39, 45, 75, 55}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{40, 34, 89, 27, 90}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{92, 88, 57, 12, 88}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{39, 34, 87, 13, 51}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{58, 50, 97, 0, 79}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{50, 43, 66, 85, 66}}, + Expected: []sql.UntypedSqlRow{{50, 43, 66, 85, 66}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}}, + Expected: []sql.UntypedSqlRow{{9, 5, 17, 52, 13}, {11, 5, 76, 70, 46}, {10, 5, 32, 30, 48}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{48, 41, 21, 82, 54}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{82, 82, 29, 66, 71}, sql.Row{55, 50, 36, 73, 58}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1>30 AND v2 BETWEEN 20 AND 64) AND (v1<=29) AND (v1>=25 AND v2<>0);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{38, 34, 55, 37, 34}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=44 AND v2>=45 AND v3>=34 AND v4>1) OR (v1=33));`, - Expected: []sql.Row{sql.Row{35, 33, 29, 69, 6}, sql.Row{36, 33, 53, 56, 88}, sql.Row{37, 33, 86, 12, 22}}, + Expected: []sql.UntypedSqlRow{{35, 33, 29, 69, 6}, {36, 33, 53, 56, 88}, {37, 33, 86, 12, 22}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{47, 41, 1, 85, 9}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{67, 64, 26, 77, 97}, sql.Row{17, 9, 7, 74, 92}, sql.Row{31, 24, 26, 69, 25}, sql.Row{55, 50, 36, 73, 58}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{51, 45, 9, 76, 9}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<11) OR (v1<=38 AND v2>=93 AND v3<=34 AND v4>7));`, - Expected: []sql.Row{sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=97 AND v3<>2) OR (v1=49 AND v2 BETWEEN 29 AND 30 AND v3<>97));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{5, 3, 31, 22, 81}, sql.Row{34, 32, 16, 97, 29}, sql.Row{64, 57, 25, 97, 65}, sql.Row{33, 29, 72, 97, 93}, sql.Row{71, 67, 39, 87, 15}, sql.Row{32, 24, 45, 96, 0}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{76, 71, 48, 89, 99}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=43 AND v2<48 AND v3<16 AND v4<=75) OR (v1<71));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<>91 AND v2=91 AND v3>=15) OR (v1 BETWEEN 16 AND 30)) OR (v1<>27 AND v4=62));`, - Expected: []sql.Row{sql.Row{20, 12, 0, 33, 62}, sql.Row{28, 22, 21, 28, 78}, sql.Row{78, 73, 91, 56, 0}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{33, 29, 72, 97, 93}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{55, 50, 36, 73, 58}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<20 AND v2<>84 AND v3<25 AND v4>=93) OR (v1<13));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{20, 12, 0, 33, 62}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=81 AND v2 BETWEEN 55 AND 77 AND v3=64) OR (v1=20 AND v2=21));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{91, 87, 66, 8, 22}, sql.Row{79, 74, 22, 42, 16}, sql.Row{84, 82, 70, 5, 47}, sql.Row{45, 38, 71, 22, 37}}, + Expected: []sql.UntypedSqlRow{{91, 87, 66, 8, 22}, {79, 74, 22, 42, 16}, {84, 82, 70, 5, 47}, {45, 38, 71, 22, 37}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=49) OR (v1<43 AND v2>=34));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<2 AND v2<>94) OR (v1<>76 AND v2=27 AND v3<=31 AND v4<38));`, - Expected: []sql.Row{sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}}, + Expected: []sql.UntypedSqlRow{{0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{83, 82, 31, 22, 99}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{43, 37, 35, 6, 44}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{45, 38, 71, 22, 37}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=24 AND v2=61 AND v3<49 AND v4<82) OR (v1<4 AND v2>51 AND v3=9));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1<17 AND v2<54) AND (v1>=70 AND v2 BETWEEN 53 AND 53 AND v3>10 AND v4=17);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{73, 70, 40, 19, 5}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 0 AND 39) OR (v1<18 AND v4>=90));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=5) OR (v1=53));`, - Expected: []sql.Row{sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{8, 4, 27, 77, 5}, sql.Row{5, 3, 31, 22, 81}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{7, 4, 10, 53, 69}, sql.Row{61, 53, 6, 53, 89}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{91, 87, 66, 8, 22}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=82) OR (v1<=95 AND v2<>23 AND v3<18 AND v4<>50));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{24, 17, 49, 14, 7}, sql.Row{39, 34, 87, 13, 51}, sql.Row{70, 66, 97, 6, 39}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{58, 50, 97, 0, 79}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=51) AND (v1=55 AND v2>=59 AND v3>=49) OR (v1>5 AND v2<34));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{28, 22, 21, 28, 78}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{17, 9, 7, 74, 92}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{58, 50, 97, 0, 79}, sql.Row{18, 9, 19, 38, 35}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=93 AND v2<>5) OR (v1>=81 AND v4=9 AND v2>33 AND v3<99));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1=82) OR (v1<=4 AND v2>=51)) OR (v1=58 AND v4<86));`, - Expected: []sql.Row{sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{84, 82, 70, 5, 47}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{90, 87, 23, 16, 63}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{93, 89, 1, 27, 50}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{7, 4, 10, 53, 69}, sql.Row{73, 70, 40, 19, 5}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>69) OR (v1>=43));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{76, 71, 48, 89, 99}, sql.Row{52, 47, 94, 56, 21}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{67, 64, 26, 77, 97}, sql.Row{59, 51, 97, 39, 36}, sql.Row{46, 39, 45, 75, 55}, sql.Row{50, 43, 66, 85, 66}, sql.Row{63, 55, 31, 29, 92}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=62) OR (v1 BETWEEN 24 AND 36 AND v2>=94 AND v3 BETWEEN 10 AND 55 AND v4>=89));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1=31) OR (v1<=95 AND v2<=26 AND v3 BETWEEN 40 AND 72)) OR (v1<51 AND v2=23));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{31, 24, 26, 69, 25}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{7, 4, 10, 53, 69}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=3) OR (v1>40)) AND (v1>66 AND v2>33);`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{78, 73, 91, 56, 0}, sql.Row{91, 87, 66, 8, 22}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=42 AND v2<=65) AND (v1<=21) OR (v1<=14 AND v2<>1 AND v3<62));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{20, 12, 0, 33, 62}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<>5) OR (v1<96 AND v2>=14)) OR (v1<>96)) AND (v1<>51 AND v3>41);`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{9, 5, 17, 52, 13}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{86, 83, 41, 53, 57}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{13, 7, 21, 75, 70}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{40, 34, 89, 27, 90}, sql.Row{76, 71, 48, 89, 99}, sql.Row{68, 64, 41, 74, 85}, sql.Row{67, 64, 26, 77, 97}, sql.Row{38, 34, 55, 37, 34}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=17 AND v2<>19) OR (v1>45));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1=57) OR (v1>=1 AND v2<=5 AND v3>=10 AND v4<5)) OR (v1>55));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{65, 63, 50, 20, 43}, sql.Row{62, 53, 48, 19, 36}, sql.Row{92, 88, 57, 12, 88}, sql.Row{74, 70, 56, 21, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{73, 70, 40, 19, 5}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{15, 8, 54, 46, 87}, sql.Row{36, 33, 53, 56, 88}, sql.Row{5, 3, 31, 22, 81}, sql.Row{13, 7, 21, 75, 70}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>3 AND v3>=34) OR (v1<>31 AND v2<16 AND v3<8));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{86, 83, 41, 53, 57}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{93, 89, 1, 27, 50}, sql.Row{94, 89, 91, 7, 45}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<>45 AND v2>76) OR (v1=30 AND v2=53));`, - Expected: []sql.Row{sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{52, 47, 94, 56, 21}, sql.Row{72, 69, 81, 70, 37}, sql.Row{78, 73, 91, 56, 0}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{57, 50, 79, 10, 12}, sql.Row{37, 33, 86, 12, 22}, sql.Row{58, 50, 97, 0, 79}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{30, 23, 43, 13, 11}, sql.Row{33, 29, 72, 97, 93}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>70) OR (v1<>2 AND v2>79 AND v3<>6 AND v4<>42));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>46 AND v2>93 AND v3>19) AND (v1<51 AND v2=39) OR (v1<61)) AND (v1<>22);`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{35, 33, 29, 69, 6}, sql.Row{8, 4, 27, 77, 5}, sql.Row{27, 21, 21, 32, 8}}, + Expected: []sql.UntypedSqlRow{{35, 33, 29, 69, 6}, {8, 4, 27, 77, 5}, {27, 21, 21, 32, 8}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{90, 87, 23, 16, 63}, sql.Row{91, 87, 66, 8, 22}}, + Expected: []sql.UntypedSqlRow{{90, 87, 23, 16, 63}, {91, 87, 66, 8, 22}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>8) OR (v1 BETWEEN 16 AND 25 AND v2<>79 AND v3>=55 AND v4<=5));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=45 AND v2>55 AND v3<90) OR (v1>26 AND v2>=2 AND v3<>85 AND v4<=74));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=59) OR (v1<>85 AND v4<6 AND v2 BETWEEN 14 AND 82));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{66, 64, 23, 33, 5}, sql.Row{8, 4, 27, 77, 5}, sql.Row{60, 52, 72, 44, 2}, sql.Row{19, 10, 36, 27, 5}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>=94 AND v2>32 AND v3>61) OR (v1>51 AND v4>84 AND v2>=46)) OR (v1=39));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{76, 71, 48, 89, 99}, sql.Row{92, 88, 57, 12, 88}, sql.Row{46, 39, 45, 75, 55}}, + Expected: []sql.UntypedSqlRow{{98, 94, 43, 71, 43}, {76, 71, 48, 89, 99}, {92, 88, 57, 12, 88}, {46, 39, 45, 75, 55}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>=89) OR (v1<=28 AND v2=13));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{93, 89, 1, 27, 50}, sql.Row{94, 89, 91, 7, 45}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=5 AND v2<65 AND v3<64 AND v4=81) OR (v1<=75)) AND (v1=87);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{91, 87, 66, 8, 22}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{84, 82, 70, 5, 47}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{56, 50, 39, 26, 37}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{45, 38, 71, 22, 37}, sql.Row{73, 70, 40, 19, 5}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 23 AND 34 AND v2 BETWEEN 4 AND 75 AND v3<91) OR (v1>=31));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<59) OR (v1 BETWEEN 6 AND 86 AND v4<97)) OR (v1<>90 AND v2=43 AND v3=29));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=1 AND v2<34) OR (v1<78));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=10 AND v2<>64 AND v3>25 AND v4<29) OR (v1>39));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>12 AND v2<0) OR (v1=36 AND v3<37));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1=83 AND v3>=72 AND v4<=74) AND (v1>61 AND v2 BETWEEN 32 AND 44);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1=78 AND v2>28 AND v3<=47) AND (v1<35 AND v2=69 AND v3>16);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1 BETWEEN 31 AND 49 AND v2=20 AND v3 BETWEEN 8 AND 46) AND (v1<>57 AND v2<5);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=39 AND v2<>3) OR (v1=97 AND v2<>37));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<8 AND v2<=33 AND v3 BETWEEN 54 AND 85) OR (v1=46));`, - Expected: []sql.Row{sql.Row{8, 4, 27, 77, 5}, sql.Row{12, 7, 7, 66, 62}, sql.Row{13, 7, 21, 75, 70}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{8, 4, 27, 77, 5}, {12, 7, 7, 66, 62}, {13, 7, 21, 75, 70}, {6, 4, 6, 67, 80}}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{74, 70, 56, 21, 22}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=25) OR (v1<=87));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1 BETWEEN 30 AND 32 AND v2<68 AND v3<24) AND (v1>=32);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>62 AND v2>0) OR (v1<>80 AND v2>55 AND v3=10 AND v4=91));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<>18) OR (v1>=42 AND v2<=65 AND v3=87 AND v4=80));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=27) OR (v1<23 AND v2>=41));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{20, 12, 0, 33, 62}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=33) OR (v1 BETWEEN 7 AND 41 AND v2<82 AND v3<53 AND v4<>3));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=9 AND v4=22 AND v2>=95) OR (v1>96));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1<=56) OR (v1>=31 AND v4<38 AND v2>20)) OR (v1=91 AND v2<48));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=75 AND v4<=30) OR (v1>=41 AND v2 BETWEEN 16 AND 25 AND v3>=99));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{78, 73, 91, 56, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{66, 64, 23, 33, 5}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{16, 8, 99, 43, 1}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 2 AND 64) OR (v1>=23));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=26 AND v2<1 AND v3=82 AND v4<=42) OR (v1 BETWEEN 42 AND 73));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{53, 48, 3, 11, 18}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{48, 41, 21, 82, 54}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}}, + Expected: []sql.UntypedSqlRow{{48, 41, 21, 82, 54}, {47, 41, 1, 85, 9}, {64, 57, 25, 97, 65}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1<>79 AND v2<=85) OR (v1<>13)) OR (v1 BETWEEN 4 AND 67));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>34) OR (v1<35 AND v2>=93)) OR (v1>8));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>8) OR (v1>20 AND v4>=99));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>57) OR (v1<87 AND v2<>91 AND v3 BETWEEN 47 AND 98));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{46, 39, 45, 75, 55}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=57) OR (v1=88 AND v2 BETWEEN 72 AND 93));`, - Expected: []sql.Row{sql.Row{64, 57, 25, 97, 65}}, + Expected: []sql.UntypedSqlRow{{64, 57, 25, 97, 65}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{1, 0, 55, 14, 32}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>5 AND v3<>53 AND v4>=49) OR (v1<18 AND v2<94));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{46, 39, 45, 75, 55}, sql.Row{25, 17, 75, 86, 18}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{11, 5, 76, 70, 46}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{25, 17, 75, 86, 18}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=13 AND v2<=52 AND v3=28 AND v4>88) OR (v1<>5 AND v2<=42));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>35 AND v4<>20 AND v2<81 AND v3=27) OR (v1>13 AND v3=27));`, - Expected: []sql.Row{sql.Row{40, 34, 89, 27, 90}, sql.Row{93, 89, 1, 27, 50}}, + Expected: []sql.UntypedSqlRow{{40, 34, 89, 27, 90}, {93, 89, 1, 27, 50}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>=26) OR (v1<59 AND v2 BETWEEN 2 AND 30 AND v3>=69));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<11) OR (v1<>9 AND v2 BETWEEN 51 AND 62 AND v3=98));`, - Expected: []sql.Row{sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>67) OR (v1>69 AND v2>11 AND v3=13 AND v4=20));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{73, 70, 40, 19, 5}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>31) OR (v1 BETWEEN 27 AND 87 AND v2=71 AND v3=38 AND v4=1));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1 BETWEEN 10 AND 90) AND (v1=86 AND v4>=4) AND (v1 BETWEEN 6 AND 58 AND v2=85);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{78, 73, 91, 56, 0}, sql.Row{57, 50, 79, 10, 12}, sql.Row{44, 37, 41, 36, 10}, sql.Row{30, 23, 43, 13, 11}, sql.Row{60, 52, 72, 44, 2}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{10, 5, 32, 30, 48}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{18, 9, 19, 38, 35}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=55 AND v2>50) OR (v1<>51 AND v2>=37));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{30, 23, 43, 13, 11}, sql.Row{60, 52, 72, 44, 2}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{44, 37, 41, 36, 10}}, + Expected: []sql.UntypedSqlRow{{44, 37, 41, 36, 10}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=21 AND v2=44 AND v3>=68) OR (v1>=38 AND v2>=15));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{46, 39, 45, 75, 55}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1<>37 AND v2>67 AND v3>52) AND (v1<48 AND v2<>73 AND v3=25 AND v4=22);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 57 AND 62 AND v2>=99) OR (v1>31));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>22 AND v3<>49) OR (v1>=41 AND v2<=74 AND v3<=46));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>=82 AND v4<=67 AND v2=40) OR (v1>63)) OR (v1<=16));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{82, 82, 29, 66, 71}, sql.Row{17, 9, 7, 74, 92}, sql.Row{15, 8, 54, 46, 87}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{46, 39, 45, 75, 55}, sql.Row{25, 17, 75, 86, 18}, sql.Row{97, 93, 56, 71, 53}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{32, 24, 45, 96, 0}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{28, 22, 21, 28, 78}, sql.Row{9, 5, 17, 52, 13}, sql.Row{17, 9, 7, 74, 92}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{51, 45, 9, 76, 9}, sql.Row{18, 9, 19, 38, 35}, sql.Row{61, 53, 6, 53, 89}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=21 AND v2<=27 AND v3>=86 AND v4>99) OR (v1<76 AND v2<>97));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 4 AND 8 AND v3>=12) OR (v1>=12 AND v2>=0 AND v3=18));`, - Expected: []sql.Row{sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{12, 7, 7, 66, 62}, sql.Row{13, 7, 21, 75, 70}, sql.Row{7, 4, 10, 53, 69}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=54) OR (v1<17 AND v2=34 AND v3>=59));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>9 AND v4<>61 AND v2=98 AND v3<1) OR (v1<2 AND v2 BETWEEN 3 AND 70));`, - Expected: []sql.Row{sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{1, 0, 55, 14, 32}}, + Expected: []sql.UntypedSqlRow{{0, 0, 33, 2, 67}, {2, 1, 43, 13, 36}, {1, 0, 55, 14, 32}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=6 AND v2>93) OR (v1 BETWEEN 38 AND 46));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{46, 39, 45, 75, 55}, sql.Row{47, 41, 1, 85, 9}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{52, 47, 94, 56, 21}, sql.Row{72, 69, 81, 70, 37}, sql.Row{78, 73, 91, 56, 0}, sql.Row{59, 51, 97, 39, 36}, sql.Row{7, 4, 10, 53, 69}, sql.Row{69, 64, 77, 41, 17}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>53 AND v4<99 AND v2<>31) OR (v1<>5 AND v2>70 AND v3>=71));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>1 AND v4=93) OR (v1<10 AND v2 BETWEEN 40 AND 74 AND v3>=27));`, - Expected: []sql.Row{sql.Row{15, 8, 54, 46, 87}, sql.Row{3, 1, 72, 29, 21}, sql.Row{33, 29, 72, 97, 93}}, + Expected: []sql.UntypedSqlRow{{15, 8, 54, 46, 87}, {3, 1, 72, 29, 21}, {33, 29, 72, 97, 93}}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{28, 22, 21, 28, 78}, sql.Row{31, 24, 26, 69, 25}, sql.Row{29, 22, 98, 22, 21}, sql.Row{25, 17, 75, 86, 18}, sql.Row{33, 29, 72, 97, 93}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{24, 17, 49, 14, 7}}, + Expected: []sql.UntypedSqlRow{{24, 17, 49, 14, 7}}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<98 AND v3 BETWEEN 80 AND 82) OR (v1 BETWEEN 31 AND 38 AND v2=39));`, - Expected: []sql.Row{sql.Row{48, 41, 21, 82, 54}}, + Expected: []sql.UntypedSqlRow{{48, 41, 21, 82, 54}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>=75 AND v2 BETWEEN 45 AND 51 AND v3<15) OR (v1>=74 AND v2>=37 AND v3<76));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{91, 87, 66, 8, 22}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{94, 89, 91, 7, 45}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=40) OR (v1<>32 AND v4<=37));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>63 AND v3 BETWEEN 43 AND 50 AND v4<29 AND v2>=89) OR (v1>80));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=81) OR (v1>=27 AND v2>=21 AND v3 BETWEEN 1 AND 63 AND v4>=92));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>13) OR (v1>72 AND v2=2 AND v3<=40)) OR (v1>77 AND v2<21));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{10, 5, 32, 30, 48}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 55 AND 66 AND v2<>81 AND v3=6 AND v4<=19) OR (v1<>91));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=21 AND v2<50 AND v3>=39) OR (v1<=79 AND v4>62 AND v2=31));`, - Expected: []sql.Row{sql.Row{5, 3, 31, 22, 81}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{5, 3, 31, 22, 81}, {63, 55, 31, 29, 92}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>78) OR (v1>=9 AND v2<>84));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>16 AND v3>=29) OR (v1>=47 AND v2<>63));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{81, 76, 74, 97, 18}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=35 AND v2>67) OR (v1<>55));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<89 AND v2<5 AND v3 BETWEEN 53 AND 61) OR (v1<>72 AND v3<20));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{24, 17, 49, 14, 7}, sql.Row{39, 34, 87, 13, 51}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{37, 33, 86, 12, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{77, 73, 10, 2, 0}, sql.Row{58, 50, 97, 0, 79}, sql.Row{73, 70, 40, 19, 5}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{90, 87, 23, 16, 63}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{77, 73, 10, 2, 0}, sql.Row{58, 50, 97, 0, 79}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>94) OR (v1=33 AND v2 BETWEEN 53 AND 60 AND v3 BETWEEN 37 AND 73));`, - Expected: []sql.Row{sql.Row{36, 33, 53, 56, 88}, sql.Row{100, 96, 73, 38, 38}}, + Expected: []sql.UntypedSqlRow{{36, 33, 53, 56, 88}, {100, 96, 73, 38, 38}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=38 AND v2<70) OR (v1>79));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<47 AND v2 BETWEEN 22 AND 85) AND (v1=73) OR (v1<42));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{11, 5, 76, 70, 46}, sql.Row{15, 8, 54, 46, 87}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{25, 17, 75, 86, 18}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{56, 50, 39, 26, 37}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{21, 12, 42, 15, 31}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{38, 34, 55, 37, 34}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>96 AND v2<27) OR (v1<82)) AND (v1>=80 AND v2 BETWEEN 14 AND 53);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>86) OR (v1>=48 AND v4>9));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=41 AND v2=79 AND v3<16 AND v4>=2) OR (v1<16 AND v4>59));`, - Expected: []sql.Row{sql.Row{20, 12, 0, 33, 62}, sql.Row{23, 15, 42, 17, 60}, sql.Row{17, 9, 7, 74, 92}, sql.Row{0, 0, 33, 2, 67}, sql.Row{15, 8, 54, 46, 87}, sql.Row{5, 3, 31, 22, 81}, sql.Row{12, 7, 7, 66, 62}, sql.Row{13, 7, 21, 75, 70}, sql.Row{7, 4, 10, 53, 69}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1>=69 AND v2 BETWEEN 38 AND 45) AND (v1<>35 AND v2<28 AND v3>14);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{67, 64, 26, 77, 97}, sql.Row{17, 9, 7, 74, 92}, sql.Row{0, 0, 33, 2, 67}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{12, 7, 7, 66, 62}, sql.Row{13, 7, 21, 75, 70}, sql.Row{46, 39, 45, 75, 55}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<46) OR (v1<>60));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 26 AND 60 AND v2>53 AND v3<=9 AND v4<8) OR (v1>0 AND v2<=69));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{43, 37, 35, 6, 44}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}}, + Expected: []sql.UntypedSqlRow{{49, 43, 23, 15, 0}, {43, 37, 35, 6, 44}, {42, 36, 7, 40, 16}, {44, 37, 41, 36, 10}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{39, 34, 87, 13, 51}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=68 AND v2=49) OR (v1<=35 AND v2>=59 AND v3>=88 AND v4 BETWEEN 1 AND 62));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>33) OR (v1<23 AND v4<=23 AND v2>=41));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{24, 17, 49, 14, 7}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{25, 17, 75, 86, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{70, 66, 97, 6, 39}, sql.Row{57, 50, 79, 10, 12}}, + Expected: []sql.UntypedSqlRow{{70, 66, 97, 6, 39}, {57, 50, 79, 10, 12}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>=51 AND v2=3 AND v3>48 AND v4>=49) OR (v1>25 AND v3=37));`, - Expected: []sql.Row{sql.Row{38, 34, 55, 37, 34}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{38, 34, 55, 37, 34}, {75, 71, 3, 49, 55}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{9, 5, 17, 52, 13}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1=82 AND v3<>55 AND v4>26) OR (v1=35)) OR (v1 BETWEEN 18 AND 70 AND v2>=17));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{84, 82, 70, 5, 47}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>45 AND v2<=55 AND v3>=2 AND v4<46) OR (v1>=0 AND v2<>6));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=85 AND v2>=46 AND v3=87 AND v4>3) OR (v1=52));`, - Expected: []sql.Row{sql.Row{60, 52, 72, 44, 2}}, + Expected: []sql.UntypedSqlRow{{60, 52, 72, 44, 2}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1<90 AND v4=77) OR (v1<>32 AND v2<=17 AND v3=68)) OR (v1<41));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=2) AND (v1>=13 AND v2<=23 AND v3<=23) OR (v1 BETWEEN 18 AND 57));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 32 AND 72 AND v2<>89 AND v3>=39) OR (v1>50 AND v4>80));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{67, 64, 26, 77, 97}, sql.Row{92, 88, 57, 12, 88}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{89, 86, 7, 57, 96}, sql.Row{42, 36, 7, 40, 16}, sql.Row{46, 39, 45, 75, 55}, sql.Row{34, 32, 16, 97, 29}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<44) OR (v1<>37 AND v2<=12 AND v3>65 AND v4<47)) OR (v1<>76));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{40, 34, 89, 27, 90}, sql.Row{35, 33, 29, 69, 6}, sql.Row{43, 37, 35, 6, 44}, sql.Row{95, 90, 25, 0, 17}, sql.Row{36, 33, 53, 56, 88}, sql.Row{39, 34, 87, 13, 51}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{33, 29, 72, 97, 93}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>10 AND v2<43 AND v3<>15) OR (v1<=71 AND v4<>22));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{35, 33, 29, 69, 6}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{78, 73, 91, 56, 0}, sql.Row{66, 64, 23, 33, 5}, sql.Row{31, 24, 26, 69, 25}, sql.Row{79, 74, 22, 42, 16}, sql.Row{38, 34, 55, 37, 34}, sql.Row{74, 70, 56, 21, 22}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{25, 17, 75, 86, 18}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>17 AND v4>50 AND v2 BETWEEN 11 AND 23 AND v3=23) OR (v1<73));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 5 AND 41 AND v3<78 AND v4<41) OR (v1>84 AND v2<>43));`, - Expected: []sql.Row{sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{35, 33, 29, 69, 6}, sql.Row{90, 87, 23, 16, 63}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{16, 8, 99, 43, 1}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{44, 37, 41, 36, 10}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{18, 9, 19, 38, 35}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{15, 8, 54, 46, 87}, sql.Row{5, 3, 31, 22, 81}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1>=9 AND v2>69) AND (v1 BETWEEN 39 AND 73);`, - Expected: []sql.Row{sql.Row{52, 47, 94, 56, 21}, sql.Row{72, 69, 81, 70, 37}, sql.Row{78, 73, 91, 56, 0}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{57, 50, 79, 10, 12}, sql.Row{60, 52, 72, 44, 2}, sql.Row{58, 50, 97, 0, 79}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{98, 94, 43, 71, 43}, sql.Row{48, 41, 21, 82, 54}, sql.Row{35, 33, 29, 69, 6}, sql.Row{68, 64, 41, 74, 85}, sql.Row{82, 82, 29, 66, 71}, sql.Row{9, 5, 17, 52, 13}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{17, 9, 7, 74, 92}, sql.Row{86, 83, 41, 53, 57}, sql.Row{31, 24, 26, 69, 25}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{34, 32, 16, 97, 29}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=9 AND v4>=68 AND v2>21) OR (v1=5 AND v2<69 AND v3<=15 AND v4>=61));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1=22) OR (v1>55));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 47 AND 57 AND v2>=83) OR (v1=91 AND v2>34));`, - Expected: []sql.Row{sql.Row{52, 47, 94, 56, 21}, sql.Row{59, 51, 97, 39, 36}, sql.Row{58, 50, 97, 0, 79}}, + Expected: []sql.UntypedSqlRow{{52, 47, 94, 56, 21}, {59, 51, 97, 39, 36}, {58, 50, 97, 0, 79}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1 BETWEEN 23 AND 25) AND (v1<98 AND v2>=20 AND v3>37);`, - Expected: []sql.Row{sql.Row{31, 24, 26, 69, 25}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{31, 24, 26, 69, 25}, {32, 24, 45, 96, 0}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1=6) OR (v1>61 AND v2<=34)) OR (v1>10 AND v2<>50 AND v3<>62 AND v4<=84));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>74) OR (v1<>86 AND v2<=91)) AND (v1>=8);`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>25 AND v2 BETWEEN 23 AND 54) OR (v1<>40 AND v3>90)) OR (v1<>7 AND v4<=78));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=25) OR (v1>40 AND v2 BETWEEN 26 AND 40 AND v3<76));`, - Expected: []sql.Row{sql.Row{56, 50, 39, 26, 37}, sql.Row{54, 50, 26, 23, 71}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{85, 83, 37, 36, 16}, sql.Row{55, 50, 36, 73, 58}, sql.Row{73, 70, 40, 19, 5}, sql.Row{63, 55, 31, 29, 92}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=13 AND v2<85) OR (v1=23 AND v2<>68 AND v3=33));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{16, 8, 99, 43, 1}, sql.Row{29, 22, 98, 22, 21}}, + Expected: []sql.UntypedSqlRow{{16, 8, 99, 43, 1}, {29, 22, 98, 22, 21}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1 BETWEEN 5 AND 32) OR (v1>7)) OR (v1=34));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1>=34 AND v2<>61 AND v3<>3) AND (v1 BETWEEN 69 AND 93) AND (v1=36 AND v2>14);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<>75) OR (v1<>74 AND v3 BETWEEN 29 AND 73));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1<>91 AND v3=27 AND v4=22 AND v2<>68) AND (v1<=88);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{20, 12, 0, 33, 62}, sql.Row{28, 22, 21, 28, 78}, sql.Row{9, 5, 17, 52, 13}, sql.Row{17, 9, 7, 74, 92}, sql.Row{12, 7, 7, 66, 62}, sql.Row{13, 7, 21, 75, 70}, sql.Row{27, 21, 21, 32, 8}, sql.Row{7, 4, 10, 53, 69}, sql.Row{77, 73, 10, 2, 0}, sql.Row{18, 9, 19, 38, 35}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>8 AND v2 BETWEEN 34 AND 48) OR (v1<>54));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{5, 3, 31, 22, 81}, sql.Row{38, 34, 55, 37, 34}, sql.Row{45, 38, 71, 22, 37}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{24, 17, 49, 14, 7}, sql.Row{30, 23, 43, 13, 11}, sql.Row{32, 24, 45, 96, 0}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{90, 87, 23, 16, 63}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1>=99 AND v3<=41) AND (v1<>38 AND v2<94 AND v3 BETWEEN 83 AND 95 AND v4>=86);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1>78) AND (v1>32 AND v2>11 AND v3>=78);`, - Expected: []sql.Row{sql.Row{87, 84, 56, 78, 18}}, + Expected: []sql.UntypedSqlRow{{87, 84, 56, 78, 18}}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>10) OR (v1=12));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>10 AND v2<=75 AND v3>=70) OR (v1<89 AND v2<=32));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{68, 64, 41, 74, 85}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{90, 87, 23, 16, 63}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{67, 64, 26, 77, 97}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{31, 24, 26, 69, 25}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{13, 7, 21, 75, 70}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>=15) OR (v1=15)) OR (v1 BETWEEN 14 AND 25 AND v4>55 AND v2<53 AND v3=95));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{67, 64, 26, 77, 97}, sql.Row{66, 64, 23, 33, 5}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{48, 41, 21, 82, 54}, sql.Row{79, 74, 22, 42, 16}, sql.Row{42, 36, 7, 40, 16}, sql.Row{34, 32, 16, 97, 29}, sql.Row{47, 41, 1, 85, 9}, sql.Row{51, 45, 9, 76, 9}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{81, 76, 74, 97, 18}, sql.Row{88, 85, 2, 3, 88}, sql.Row{60, 52, 72, 44, 2}}, + Expected: []sql.UntypedSqlRow{{81, 76, 74, 97, 18}, {88, 85, 2, 3, 88}, {60, 52, 72, 44, 2}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{99, 94, 79, 53, 73}, sql.Row{78, 73, 91, 56, 0}, sql.Row{85, 83, 37, 36, 16}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{100, 96, 73, 38, 38}, sql.Row{25, 17, 75, 86, 18}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1=26 AND v2<=94 AND v3<=76) OR (v1<34 AND v2 BETWEEN 5 AND 20));`, - Expected: []sql.Row{sql.Row{9, 5, 17, 52, 13}, sql.Row{17, 9, 7, 74, 92}, sql.Row{12, 7, 7, 66, 62}, sql.Row{34, 32, 16, 97, 29}, sql.Row{7, 4, 10, 53, 69}, sql.Row{18, 9, 19, 38, 35}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>74 AND v2<=3 AND v3>51 AND v4<1) OR (v1>=92 AND v2<=2));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{5, 3, 31, 22, 81}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<35) OR (v1>=5 AND v2>=10 AND v3=65));`, - Expected: []sql.Row{sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1>52) OR (v1<21 AND v2<61 AND v3=13)) OR (v1=89 AND v3>33));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=48) OR (v1 BETWEEN 2 AND 81));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{21, 12, 42, 15, 31}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{24, 17, 49, 14, 7}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{53, 48, 3, 11, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<23 AND v2<=45 AND v3<0) OR (v1>=31)) OR (v1>=50));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<16) OR (v1>=19 AND v2<25 AND v3>77));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{20, 12, 0, 33, 62}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{34, 32, 16, 97, 29}, sql.Row{47, 41, 1, 85, 9}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<29 AND v2 BETWEEN 81 AND 92) OR (v1>20 AND v2>=53 AND v3 BETWEEN 20 AND 68));`, - Expected: []sql.Row{sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{52, 47, 94, 56, 21}, sql.Row{78, 73, 91, 56, 0}, sql.Row{36, 33, 53, 56, 88}, sql.Row{59, 51, 97, 39, 36}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{74, 70, 56, 21, 22}, sql.Row{100, 96, 73, 38, 38}, sql.Row{60, 52, 72, 44, 2}, sql.Row{45, 38, 71, 22, 37}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1=46) AND (v1>=93 AND v3<>51 AND v4=93 AND v2=8);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{57, 50, 79, 10, 12}}, + Expected: []sql.UntypedSqlRow{{57, 50, 79, 10, 12}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1=27) OR (v1>=11 AND v2<97 AND v3<97 AND v4<44));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{22, 12, 46, 43, 23}, sql.Row{56, 50, 39, 26, 37}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{66, 64, 23, 33, 5}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{79, 74, 22, 42, 16}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<=89 AND v2<=93) OR (v1<=54));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1=74 AND v2<=31) OR (v1<11)) OR (v1 BETWEEN 26 AND 38));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{40, 34, 89, 27, 90}, sql.Row{35, 33, 29, 69, 6}, sql.Row{43, 37, 35, 6, 44}, sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{79, 74, 22, 42, 16}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{18, 9, 19, 38, 35}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=10 AND v2<12 AND v3=54 AND v4>89) OR (v1=99 AND v4=37));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (((v1<=50 AND v2<50) OR (v1<19)) OR (v1=51));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{51, 45, 9, 76, 9}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=62 AND v2<89) AND (v1<90 AND v2>=19) OR (v1<=1 AND v2>49));`, - Expected: []sql.Row{sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}}, + Expected: []sql.UntypedSqlRow{{3, 1, 72, 29, 21}, {1, 0, 55, 14, 32}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE (v1<=61 AND v2<=64) AND (v1>=0);`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{51, 45, 9, 76, 9}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1 BETWEEN 5 AND 69) OR (v1<52 AND v4<14 AND v2>=25 AND v3=63));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>14) OR (v1>=82));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=19 AND v3<72 AND v4=23) OR (v1<=36 AND v2>99));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<>43) OR (v1>=41 AND v4=32 AND v2<=66)) AND (v1>43 AND v2 BETWEEN 83 AND 97);`, - Expected: []sql.Row{sql.Row{52, 47, 94, 56, 21}, sql.Row{78, 73, 91, 56, 0}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{58, 50, 97, 0, 79}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{96, 91, 23, 2, 9}, sql.Row{24, 17, 49, 14, 7}, sql.Row{57, 50, 79, 10, 12}, sql.Row{30, 23, 43, 13, 11}, sql.Row{77, 73, 10, 2, 0}, sql.Row{73, 70, 40, 19, 5}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{65, 63, 50, 20, 43}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{91, 87, 66, 8, 22}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{60, 52, 72, 44, 2}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{58, 50, 97, 0, 79}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{56, 50, 39, 26, 37}, sql.Row{81, 76, 74, 97, 18}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{94, 89, 91, 7, 45}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1=23 AND v4>=52 AND v2>=61) AND (v1<>85 AND v3>2 AND v4<15);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{67, 64, 26, 77, 97}, sql.Row{89, 86, 7, 57, 96}, sql.Row{64, 57, 25, 97, 65}, sql.Row{61, 53, 6, 53, 89}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>=16 AND v2<59 AND v3<=43) OR (v1=17 AND v2<=4 AND v3>71));`, - Expected: []sql.Row{sql.Row{49, 43, 23, 15, 0}, sql.Row{56, 50, 39, 26, 37}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{93, 89, 1, 27, 50}, sql.Row{24, 17, 49, 14, 7}, sql.Row{79, 74, 22, 42, 16}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{77, 73, 10, 2, 0}, sql.Row{73, 70, 40, 19, 5}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{52, 47, 94, 56, 21}, sql.Row{87, 84, 56, 78, 18}, sql.Row{11, 5, 76, 70, 46}, sql.Row{24, 17, 49, 14, 7}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{60, 52, 72, 44, 2}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{50, 43, 66, 85, 66}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=79 AND v2>24) OR (v1<76 AND v3<=59 AND v4<=36 AND v2=39));`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1<=15 AND v2 BETWEEN 21 AND 76 AND v3=23) OR (v1 BETWEEN 2 AND 55));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{74, 70, 56, 21, 22}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{52, 47, 94, 56, 21}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{78, 73, 91, 56, 0}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{57, 50, 79, 10, 12}, sql.Row{1, 0, 55, 14, 32}, sql.Row{84, 82, 70, 5, 47}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{7, 4, 10, 53, 69}, sql.Row{58, 50, 97, 0, 79}, sql.Row{69, 64, 77, 41, 17}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1<=50 AND v3>=51 AND v4<>69) AND (v1>1 AND v3<24);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{72, 69, 81, 70, 37}, sql.Row{78, 73, 91, 56, 0}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{74, 70, 56, 21, 22}, sql.Row{77, 73, 10, 2, 0}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{56, 50, 39, 26, 37}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{92, 88, 57, 12, 88}, sql.Row{74, 70, 56, 21, 22}, sql.Row{53, 48, 3, 11, 18}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>10 AND v2=42) OR (v1>=85 AND v2<>6 AND v3=34 AND v4<=45));`, - Expected: []sql.Row{sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}}, + Expected: []sql.UntypedSqlRow{{23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{40, 34, 89, 27, 90}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{83, 82, 31, 22, 99}, sql.Row{21, 12, 42, 15, 31}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{24, 17, 49, 14, 7}, sql.Row{14, 7, 76, 26, 47}, sql.Row{5, 3, 31, 22, 81}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{44, 37, 41, 36, 10}, sql.Row{84, 82, 70, 5, 47}, sql.Row{37, 33, 86, 12, 22}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{19, 10, 36, 27, 5}, sql.Row{45, 38, 71, 22, 37}, sql.Row{58, 50, 97, 0, 79}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{26, 20, 30, 34, 71}, sql.Row{63, 55, 31, 29, 92}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<72 AND v2>=67) OR (v1<>88 AND v2<>23 AND v3=23));`, - Expected: []sql.Row{sql.Row{40, 34, 89, 27, 90}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{72, 69, 81, 70, 37}, sql.Row{11, 5, 76, 70, 46}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{3, 1, 72, 29, 21}, sql.Row{29, 22, 98, 22, 21}, sql.Row{57, 50, 79, 10, 12}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{60, 52, 72, 44, 2}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{58, 50, 97, 0, 79}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1=11 AND v2>=99) OR (v1<18 AND v2>=34 AND v3<53)) OR (v1>68));`, - Expected: []sql.Row{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{86, 83, 41, 53, 57}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{73, 70, 40, 19, 5}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<=40 AND v2<0) OR (v1>=35 AND v2<=95 AND v3<>61)) OR (v1>49));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{43, 37, 35, 6, 44}, sql.Row{62, 53, 48, 19, 36}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{57, 50, 79, 10, 12}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{76, 71, 48, 89, 99}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{67, 64, 26, 77, 97}, sql.Row{92, 88, 57, 12, 88}, sql.Row{89, 86, 7, 57, 96}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{72, 69, 81, 70, 37}, sql.Row{91, 87, 66, 8, 22}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{29, 22, 98, 22, 21}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{45, 38, 71, 22, 37}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1<>87) OR (v1>91 AND v2>23 AND v3<74));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}}, + Expected: []sql.UntypedSqlRow{{23, 15, 42, 17, 60}, {21, 12, 42, 15, 31}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{48, 41, 21, 82, 54}, sql.Row{28, 22, 21, 28, 78}, sql.Row{23, 15, 42, 17, 60}, sql.Row{66, 64, 23, 33, 5}, sql.Row{24, 17, 49, 14, 7}, sql.Row{55, 50, 36, 73, 58}, sql.Row{79, 74, 22, 42, 16}, sql.Row{29, 22, 98, 22, 21}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{64, 57, 25, 97, 65}, sql.Row{51, 45, 9, 76, 9}, sql.Row{26, 20, 30, 34, 71}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>42 AND v2=44 AND v3<>73) OR (v1>24 AND v2>49 AND v3>=7));`, - Expected: []sql.Row{sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{81, 76, 74, 97, 18}, sql.Row{52, 47, 94, 56, 21}, sql.Row{65, 63, 50, 20, 43}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{78, 73, 91, 56, 0}, sql.Row{91, 87, 66, 8, 22}, sql.Row{92, 88, 57, 12, 88}, sql.Row{36, 33, 53, 56, 88}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{100, 96, 73, 38, 38}, sql.Row{37, 33, 86, 12, 22}, sql.Row{60, 52, 72, 44, 2}, sql.Row{97, 93, 56, 71, 53}, sql.Row{45, 38, 71, 22, 37}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{69, 64, 77, 41, 17}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=79 AND v3<89 AND v4>=3) OR (v1<63 AND v2<66));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{22, 12, 46, 43, 23}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{54, 50, 26, 23, 71}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{12, 7, 7, 66, 62}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{34, 32, 16, 97, 29}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{51, 45, 9, 76, 9}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (((v1<>66) OR (v1=33)) OR (v1<>39 AND v2>53 AND v3<73 AND v4<75));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{93, 89, 1, 27, 50}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1=15) OR (v1>36 AND v3=13 AND v4<=98 AND v2 BETWEEN 70 AND 85));`, - Expected: []sql.Row{sql.Row{23, 15, 42, 17, 60}}, + Expected: []sql.UntypedSqlRow{{23, 15, 42, 17, 60}}, }, { Query: `SELECT * FROM comp_index_t2 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{sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{31, 24, 26, 69, 25}, sql.Row{55, 50, 36, 73, 58}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{32, 24, 45, 96, 0}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>6 AND v4<>9 AND v2<>77 AND v3>=81) OR (v1<>21 AND v2>=17 AND v3<=3));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{48, 41, 21, 82, 54}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{0, 0, 33, 2, 67}, sql.Row{34, 32, 16, 97, 29}, sql.Row{25, 17, 75, 86, 18}, sql.Row{64, 57, 25, 97, 65}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{32, 24, 45, 96, 0}, sql.Row{4, 2, 27, 1, 75}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{93, 89, 1, 27, 50}, sql.Row{89, 86, 7, 57, 96}, sql.Row{100, 96, 73, 38, 38}, sql.Row{61, 53, 6, 53, 89}, sql.Row{75, 71, 3, 49, 55}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{22, 12, 46, 43, 23}, sql.Row{23, 15, 42, 17, 60}, sql.Row{21, 12, 42, 15, 31}, sql.Row{11, 5, 76, 70, 46}, sql.Row{15, 8, 54, 46, 87}, sql.Row{24, 17, 49, 14, 7}, sql.Row{14, 7, 76, 26, 47}, sql.Row{16, 8, 99, 43, 1}, sql.Row{25, 17, 75, 86, 18}, sql.Row{19, 10, 36, 27, 5}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE (v1>=5) AND (v1=50 AND v2<=50);`, - Expected: []sql.Row{sql.Row{56, 50, 39, 26, 37}, sql.Row{54, 50, 26, 23, 71}, sql.Row{55, 50, 36, 73, 58}}, + Expected: []sql.UntypedSqlRow{{56, 50, 39, 26, 37}, {54, 50, 26, 23, 71}, {55, 50, 36, 73, 58}}, }, { Query: `SELECT * FROM comp_index_t2 WHERE ((v1>=82 AND v2 BETWEEN 34 AND 50 AND v3<26 AND v4 BETWEEN 48 AND 76) OR (v1<=6));`, - Expected: []sql.Row{sql.Row{9, 5, 17, 52, 13}, sql.Row{11, 5, 76, 70, 46}, sql.Row{10, 5, 32, 30, 48}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{8, 4, 27, 77, 5}, sql.Row{5, 3, 31, 22, 81}, sql.Row{3, 1, 72, 29, 21}, sql.Row{1, 0, 55, 14, 32}, sql.Row{7, 4, 10, 53, 69}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 WHERE ((v1>29) OR (v1<>94 AND v2>=56 AND v3=14));`, - Expected: []sql.Row{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{93, 89, 1, 27, 50}, sql.Row{36, 33, 53, 56, 88}, sql.Row{55, 50, 36, 73, 58}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{96, 91, 23, 2, 9}, sql.Row{95, 90, 25, 0, 17}, sql.Row{92, 88, 57, 12, 88}, sql.Row{17, 9, 7, 74, 92}, sql.Row{93, 89, 1, 27, 50}, sql.Row{8, 4, 27, 77, 5}, sql.Row{94, 89, 91, 7, 45}, sql.Row{13, 7, 21, 75, 70}, sql.Row{100, 96, 73, 38, 38}, sql.Row{97, 93, 56, 71, 53}}, + Expected: []sql.UntypedSqlRow{{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: `SELECT * FROM comp_index_t2 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{sql.Row{41, 35, 6, 86, 74}, sql.Row{49, 43, 23, 15, 0}, sql.Row{98, 94, 43, 71, 43}, sql.Row{99, 94, 79, 53, 73}, sql.Row{22, 12, 46, 43, 23}, sql.Row{40, 34, 89, 27, 90}, sql.Row{48, 41, 21, 82, 54}, sql.Row{56, 50, 39, 26, 37}, sql.Row{76, 71, 48, 89, 99}, sql.Row{81, 76, 74, 97, 18}, sql.Row{20, 12, 0, 33, 62}, sql.Row{35, 33, 29, 69, 6}, sql.Row{52, 47, 94, 56, 21}, sql.Row{54, 50, 26, 23, 71}, sql.Row{65, 63, 50, 20, 43}, sql.Row{68, 64, 41, 74, 85}, sql.Row{72, 69, 81, 70, 37}, sql.Row{87, 84, 56, 78, 18}, sql.Row{28, 22, 21, 28, 78}, sql.Row{43, 37, 35, 6, 44}, sql.Row{90, 87, 23, 16, 63}, sql.Row{23, 15, 42, 17, 60}, sql.Row{62, 53, 48, 19, 36}, sql.Row{78, 73, 91, 56, 0}, sql.Row{82, 82, 29, 66, 71}, sql.Row{83, 82, 31, 22, 99}, sql.Row{88, 85, 2, 3, 88}, sql.Row{9, 5, 17, 52, 13}, sql.Row{21, 12, 42, 15, 31}, sql.Row{96, 91, 23, 2, 9}, sql.Row{91, 87, 66, 8, 22}, sql.Row{95, 90, 25, 0, 17}, sql.Row{67, 64, 26, 77, 97}, sql.Row{85, 83, 37, 36, 16}, sql.Row{92, 88, 57, 12, 88}, sql.Row{11, 5, 76, 70, 46}, sql.Row{17, 9, 7, 74, 92}, sql.Row{10, 5, 32, 30, 48}, sql.Row{66, 64, 23, 33, 5}, sql.Row{86, 83, 41, 53, 57}, sql.Row{0, 0, 33, 2, 67}, sql.Row{2, 1, 43, 13, 36}, sql.Row{15, 8, 54, 46, 87}, sql.Row{31, 24, 26, 69, 25}, sql.Row{24, 17, 49, 14, 7}, sql.Row{36, 33, 53, 56, 88}, sql.Row{8, 4, 27, 77, 5}, sql.Row{14, 7, 76, 26, 47}, sql.Row{55, 50, 36, 73, 58}, sql.Row{5, 3, 31, 22, 81}, sql.Row{16, 8, 99, 43, 1}, sql.Row{39, 34, 87, 13, 51}, sql.Row{59, 51, 97, 39, 36}, sql.Row{70, 66, 97, 6, 39}, sql.Row{79, 74, 22, 42, 16}, sql.Row{89, 86, 7, 57, 96}, sql.Row{94, 89, 91, 7, 45}, sql.Row{3, 1, 72, 29, 21}, sql.Row{12, 7, 7, 66, 62}, sql.Row{29, 22, 98, 22, 21}, sql.Row{38, 34, 55, 37, 34}, sql.Row{42, 36, 7, 40, 16}, sql.Row{57, 50, 79, 10, 12}, sql.Row{74, 70, 56, 21, 22}, sql.Row{1, 0, 55, 14, 32}, sql.Row{13, 7, 21, 75, 70}, sql.Row{44, 37, 41, 36, 10}, sql.Row{46, 39, 45, 75, 55}, sql.Row{53, 48, 3, 11, 18}, sql.Row{84, 82, 70, 5, 47}, sql.Row{100, 96, 73, 38, 38}, sql.Row{34, 32, 16, 97, 29}, sql.Row{37, 33, 86, 12, 22}, sql.Row{25, 17, 75, 86, 18}, sql.Row{27, 21, 21, 32, 8}, sql.Row{30, 23, 43, 13, 11}, sql.Row{47, 41, 1, 85, 9}, sql.Row{60, 52, 72, 44, 2}, sql.Row{64, 57, 25, 97, 65}, sql.Row{7, 4, 10, 53, 69}, sql.Row{19, 10, 36, 27, 5}, sql.Row{97, 93, 56, 71, 53}, sql.Row{77, 73, 10, 2, 0}, sql.Row{45, 38, 71, 22, 37}, sql.Row{51, 45, 9, 76, 9}, sql.Row{33, 29, 72, 97, 93}, sql.Row{50, 43, 66, 85, 66}, sql.Row{58, 50, 97, 0, 79}, sql.Row{71, 67, 39, 87, 15}, sql.Row{73, 70, 40, 19, 5}, sql.Row{18, 9, 19, 38, 35}, sql.Row{32, 24, 45, 96, 0}, sql.Row{26, 20, 30, 34, 71}, sql.Row{61, 53, 6, 53, 89}, sql.Row{63, 55, 31, 29, 92}, sql.Row{69, 64, 77, 41, 17}, sql.Row{75, 71, 3, 49, 55}, sql.Row{80, 74, 35, 72, 97}, sql.Row{4, 2, 27, 1, 75}, sql.Row{6, 4, 6, 67, 80}}, + Expected: []sql.UntypedSqlRow{{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}}, }, { Query: `select * from comp_index_t3 where v2 = 'a'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), []uint8("a"), []uint8("a")}, }, }, { Query: `select * from comp_index_t3 where v2 like 'a%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), []uint8("a"), []uint8("a")}, {int64(1), []uint8("ab"), []uint8("ab")}, {int64(2), []uint8("abc"), []uint8("abc")}, @@ -2971,11 +2971,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (v(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v` varchar(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v` varchar(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'aa'), (1, 'ab')", @@ -2983,25 +2983,25 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "insert into t values (0, 'aa'), (1, 'bb'), (2, 'cc')", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select * from t where v = 'a'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t where v = 'aa'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "aa"}, }, }, { Query: "create table v_tbl (i int primary key, v varchar(100), index (v(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table v_tbl", - Expected: []sql.Row{{"v_tbl", "CREATE TABLE `v_tbl` (\n `i` int NOT NULL,\n `v` varchar(100),\n PRIMARY KEY (`i`),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"v_tbl", "CREATE TABLE `v_tbl` (\n `i` int NOT NULL,\n `v` varchar(100),\n PRIMARY KEY (`i`),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3013,11 +3013,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (v(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `v` varchar(10),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `v` varchar(10),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('aa'), ('ab')", @@ -3025,11 +3025,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table v_tbl (v varchar(100), index (v(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table v_tbl", - Expected: []sql.Row{{"v_tbl", "CREATE TABLE `v_tbl` (\n `v` varchar(100),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"v_tbl", "CREATE TABLE `v_tbl` (\n `v` varchar(100),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3057,11 +3057,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (c(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `c` char(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `c` (`c`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `c` char(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `c` (`c`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'aa'), (1, 'ab')", @@ -3069,11 +3069,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table c_tbl (i int primary key, c varchar(100), index (c(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table c_tbl", - Expected: []sql.Row{{"c_tbl", "CREATE TABLE `c_tbl` (\n `i` int NOT NULL,\n `c` varchar(100),\n PRIMARY KEY (`i`),\n KEY `c` (`c`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"c_tbl", "CREATE TABLE `c_tbl` (\n `i` int NOT NULL,\n `c` varchar(100),\n PRIMARY KEY (`i`),\n KEY `c` (`c`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3085,11 +3085,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (c(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `c` char(10),\n UNIQUE KEY `c` (`c`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `c` char(10),\n UNIQUE KEY `c` (`c`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('aa'), ('ab')", @@ -3097,11 +3097,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table c_tbl (c char(100), index (c(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table c_tbl", - Expected: []sql.Row{{"c_tbl", "CREATE TABLE `c_tbl` (\n `c` char(100),\n KEY `c` (`c`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"c_tbl", "CREATE TABLE `c_tbl` (\n `c` char(100),\n KEY `c` (`c`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3129,11 +3129,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (v(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v` varbinary(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v` varbinary(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'aa'), (1, 'ab')", @@ -3141,11 +3141,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table v_tbl (i int primary key, v varbinary(100), index (v(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table v_tbl", - Expected: []sql.Row{{"v_tbl", "CREATE TABLE `v_tbl` (\n `i` int NOT NULL,\n `v` varbinary(100),\n PRIMARY KEY (`i`),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"v_tbl", "CREATE TABLE `v_tbl` (\n `i` int NOT NULL,\n `v` varbinary(100),\n PRIMARY KEY (`i`),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3157,11 +3157,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (v(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `v` varbinary(10),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `v` varbinary(10),\n UNIQUE KEY `v` (`v`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('aa'), ('ab')", @@ -3169,11 +3169,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table v_tbl (v varbinary(100), index (v(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table v_tbl", - Expected: []sql.Row{{"v_tbl", "CREATE TABLE `v_tbl` (\n `v` varbinary(100),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"v_tbl", "CREATE TABLE `v_tbl` (\n `v` varbinary(100),\n KEY `v` (`v`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3201,11 +3201,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (b(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `b` binary(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `b` binary(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'aa'), (1, 'ab')", @@ -3213,11 +3213,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table b_tbl (i int primary key, b binary(100), index (b(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table b_tbl", - Expected: []sql.Row{{"b_tbl", "CREATE TABLE `b_tbl` (\n `i` int NOT NULL,\n `b` binary(100),\n PRIMARY KEY (`i`),\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"b_tbl", "CREATE TABLE `b_tbl` (\n `i` int NOT NULL,\n `b` binary(100),\n PRIMARY KEY (`i`),\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3229,11 +3229,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (b(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `b` binary(10),\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `b` binary(10),\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('aa'), ('ab')", @@ -3241,11 +3241,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table b_tbl (b binary(100), index (b(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table b_tbl", - Expected: []sql.Row{{"b_tbl", "CREATE TABLE `b_tbl` (\n `b` binary(100),\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"b_tbl", "CREATE TABLE `b_tbl` (\n `b` binary(100),\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3276,31 +3276,31 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select i from t where b like 'abcd%';", - Expected: []sql.Row{{999}}, + Expected: []sql.UntypedSqlRow{{999}}, }, { Query: "alter table t add index (b(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `b` blob,\n PRIMARY KEY (`i`),\n KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `b` blob,\n PRIMARY KEY (`i`),\n KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (998, X'4242');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "alter table t drop index `b`;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "alter table t add unique index (b(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `b` blob,\n PRIMARY KEY (`i`),\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `b` blob,\n PRIMARY KEY (`i`),\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'aa'), (1, 'ab')", @@ -3308,11 +3308,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table b_tbl (i int primary key, b blob, index (b(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table b_tbl", - Expected: []sql.Row{{"b_tbl", "CREATE TABLE `b_tbl` (\n `i` int NOT NULL,\n `b` blob,\n PRIMARY KEY (`i`),\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"b_tbl", "CREATE TABLE `b_tbl` (\n `i` int NOT NULL,\n `b` blob,\n PRIMARY KEY (`i`),\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3324,11 +3324,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (b(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `b` blob,\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `b` blob,\n UNIQUE KEY `b` (`b`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('aa'), ('ab')", @@ -3336,11 +3336,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table b_tbl (b blob, index (b(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table b_tbl", - Expected: []sql.Row{{"b_tbl", "CREATE TABLE `b_tbl` (\n `b` blob,\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"b_tbl", "CREATE TABLE `b_tbl` (\n `b` blob,\n KEY `b` (`b`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3371,35 +3371,35 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select i from t where t like 'x%';", - Expected: []sql.Row{{999}}, + Expected: []sql.UntypedSqlRow{{999}}, }, { Query: "alter table t add index (t(1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `t` text,\n PRIMARY KEY (`i`),\n KEY `t` (`t`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `t` text,\n PRIMARY KEY (`i`),\n KEY `t` (`t`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "select i from t where t like 'x%';", - Expected: []sql.Row{{999}}, + Expected: []sql.UntypedSqlRow{{999}}, }, { Query: "insert into t values (998, 'yy');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "alter table t drop index `t`;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "alter table t add unique index (t(1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `t` text,\n PRIMARY KEY (`i`),\n UNIQUE KEY `t` (`t`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `t` text,\n PRIMARY KEY (`i`),\n UNIQUE KEY `t` (`t`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'aa'), (1, 'ab')", @@ -3407,11 +3407,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table t_tbl (i int primary key, t text, index (t(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t_tbl", - Expected: []sql.Row{{"t_tbl", "CREATE TABLE `t_tbl` (\n `i` int NOT NULL,\n `t` text,\n PRIMARY KEY (`i`),\n KEY `t` (`t`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t_tbl", "CREATE TABLE `t_tbl` (\n `i` int NOT NULL,\n `t` text,\n PRIMARY KEY (`i`),\n KEY `t` (`t`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3423,11 +3423,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table t add unique index (t(1))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `t` text,\n UNIQUE KEY `t` (`t`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `t` text,\n UNIQUE KEY `t` (`t`(1))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('aa'), ('ab')", @@ -3435,11 +3435,11 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "create table t_tbl (t text, index (t(10)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table t_tbl", - Expected: []sql.Row{{"t_tbl", "CREATE TABLE `t_tbl` (\n `t` text,\n KEY `t` (`t`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t_tbl", "CREATE TABLE `t_tbl` (\n `t` text,\n KEY `t` (`t`(10))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3451,11 +3451,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v1` varchar(10),\n `v2` varchar(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v1` varchar(10),\n `v2` varchar(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'a', 'a'), (1, 'ab','ab'), (2, 'abc', 'abc'), (3, 'abcde', 'abcde')", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "insert into t values (99, 'abc', 'abcde')", @@ -3467,43 +3467,43 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "select * from t where v1 = 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "a", "a"}, }, }, { Query: "select * from t where v1 = 'abc'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "abc", "abc"}, }, }, { Query: "select * from t where v1 = 'abcd'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t where v1 > 'a' and v1 < 'abcde'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab", "ab"}, {2, "abc", "abc"}, }, }, { Query: "select * from t where v1 > 'a' and v2 < 'abcde'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab", "ab"}, {2, "abc", "abc"}, }, }, { Query: "update t set v1 = concat(v1, 'z') where v1 >= 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4, InsertID: 0, Info: plan.UpdateInfo{Matched: 4, Updated: 4}}}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "az", "a"}, {1, "abz", "ab"}, {2, "abcz", "abc"}, @@ -3512,13 +3512,13 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "delete from t where v1 >= 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from t", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -3530,11 +3530,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `v1` varchar(10),\n `v2` varchar(10),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `v1` varchar(10),\n `v2` varchar(10),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values ('a', 'a'), ('ab','ab'), ('abc', 'abc'), ('abcde', 'abcde')", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "insert into t values ('abc', 'abcde')", @@ -3546,43 +3546,43 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "select * from t where v1 = 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a", "a"}, }, }, { Query: "select * from t where v1 = 'abc'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "abc"}, }, }, { Query: "select * from t where v1 = 'abcd'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t where v1 > 'a' and v1 < 'abcde'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ab", "ab"}, {"abc", "abc"}, }, }, { Query: "select * from t where v1 > 'a' and v2 < 'abcde'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ab", "ab"}, {"abc", "abc"}, }, }, { Query: "update t set v1 = concat(v1, 'z') where v1 >= 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4, InsertID: 0, Info: plan.UpdateInfo{Matched: 4, Updated: 4}}}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"az", "a"}, {"abz", "ab"}, {"abcz", "abc"}, @@ -3591,13 +3591,13 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "delete from t where v1 >= 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from t", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -3610,11 +3610,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v1` varchar(10),\n `v2` varchar(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v1` varchar(10),\n `v2` varchar(10),\n PRIMARY KEY (`i`),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci"}}, }, { Query: "insert into t values (0, 'a', 'a'), (1, 'ab','ab'), (2, 'abc', 'abc'), (3, 'abcde', 'abcde')", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Skip: true, @@ -3629,31 +3629,31 @@ var IndexPrefixQueries = []ScriptTest{ { Skip: true, Query: "select * from t where v1 = 'A'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "a", "a"}, }, }, { Skip: true, Query: "select * from t where v1 = 'ABC'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "abc", "abc"}, }, }, { Query: "select * from t where v1 = 'ABCD'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Skip: true, Query: "select * from t where v1 > 'A' and v1 < 'ABCDE'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab", "ab"}, }, }, { Query: "select * from t where v1 > 'A' and v2 < 'ABCDE'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab", "ab"}, {2, "abc", "abc"}, }, @@ -3661,14 +3661,14 @@ var IndexPrefixQueries = []ScriptTest{ { Skip: true, Query: "update t set v1 = concat(v1, 'Z') where v1 >= 'A'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4, InsertID: 0, Info: plan.UpdateInfo{Matched: 4, Updated: 4}}}, }, }, { Skip: true, Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "aZ", "a"}, {1, "abZ", "ab"}, {2, "abcZ", "abc"}, @@ -3678,14 +3678,14 @@ var IndexPrefixQueries = []ScriptTest{ { Skip: true, Query: "delete from t where v1 >= 'A'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Skip: true, Query: "select * from t", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -3697,11 +3697,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v1` text,\n `v2` text,\n PRIMARY KEY (`i`),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t", "CREATE TABLE `t` (\n `i` int NOT NULL,\n `v1` text,\n `v2` text,\n PRIMARY KEY (`i`),\n UNIQUE KEY `v1` (`v1`(3),`v2`(5))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "insert into t values (0, 'a', 'a'), (1, 'ab','ab'), (2, 'abc', 'abc'), (3, 'abcde', 'abcde')", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "insert into t values (99, 'abc', 'abcde')", @@ -3713,43 +3713,43 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "select * from t where v1 = 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "a", "a"}, }, }, { Query: "select * from t where v1 = 'abc'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "abc", "abc"}, }, }, { Query: "select * from t where v1 = 'abcd'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t where v1 > 'a' and v1 < 'abcde'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab", "ab"}, {2, "abc", "abc"}, }, }, { Query: "select * from t where v1 > 'a' and v2 < 'abcde'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab", "ab"}, {2, "abc", "abc"}, }, }, { Query: "update t set v1 = concat(v1, 'z') where v1 >= 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4, InsertID: 0, Info: plan.UpdateInfo{Matched: 4, Updated: 4}}}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "az", "a"}, {1, "abz", "ab"}, {2, "abcz", "abc"}, @@ -3758,13 +3758,13 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "delete from t where v1 >= 'a'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from t", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -3779,19 +3779,19 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @@strict_mysql_compatibility;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "alter table t add unique key k1(col1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "insert into t values (4, ''), (5, ' '), (8, NULL), (-1, ' ');", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "insert into t values (1, 'oneasdfasdf');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "insert into t values (2, 'oneasdfasdf');", @@ -3802,7 +3802,7 @@ var IndexPrefixQueries = []ScriptTest{ // because it is used to filter on the equality condition in the top level filter, the filter in the // subquery is not done using the index. Query: "select pk from t where col1='oneasdfasdf' and exists (select pk from j2 where j2.col1 <= t.col1);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, CheckIndexedAccess: true, ExpectedIndexes: []string{"k1"}, }, @@ -3815,7 +3815,7 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "select col1 from t where col1='oneasdfasdf';", - Expected: []sql.Row{{"oneasdfasdf"}}, + Expected: []sql.UntypedSqlRow{{"oneasdfasdf"}}, CheckIndexedAccess: true, ExpectedIndexes: []string{"k1"}, }, @@ -3823,31 +3823,31 @@ var IndexPrefixQueries = []ScriptTest{ // Indexes with content-hashed fields are not eligible for use with range scans Query: "select * from t where col1 >= 'one';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{1, "oneasdfasdf"}}, + Expected: []sql.UntypedSqlRow{{1, "oneasdfasdf"}}, }, { // Indexes with a content-hashed BLOB/TEXT field cannot be used in range scans Query: "select * from t where col1 >= ' ' order by pk;", ExpectedIndexes: []string{"primary"}, - Expected: []sql.Row{{-1, " "}, {1, "oneasdfasdf"}, {5, " "}}, + Expected: []sql.UntypedSqlRow{{-1, " "}, {1, "oneasdfasdf"}, {5, " "}}, }, { // Assert we can create the index without a prefix, inline in a table definition, too Query: "create table t2 (pk int primary key, col1 BLOB, unique key k1(col1));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // Assert that we do NOT use the index for a join on a range condition Query: "select distinct j2.pk from j2 join t on t.col1 >= 'one';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, JoinTypes: []plan.JoinType{plan.JoinTypeInner}, }, { // Assert that we DO use the index for a join on an exact match condition Query: "select /*+ LOOKUP_JOIN(t,j2) */ distinct j2.pk from j2 join t on t.col1 = ' ';", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, JoinTypes: []plan.JoinType{plan.JoinTypeLookup}, }, @@ -3855,71 +3855,71 @@ var IndexPrefixQueries = []ScriptTest{ // Assert that we DO use the index for a lookup join on an exact match condition Query: "select /*+ LOOKUP_JOIN(t,j2) */ distinct j2.pk from j2 join t on t.col1 = j2.col1;", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, JoinTypes: []plan.JoinType{plan.JoinTypeLookup}, }, { // Assert that we do NOT use the index for a lookup join on a range condition Query: "select /*+ LOOKUP_JOIN(t,j2) */ distinct j2.pk from j2 join t on t.col1 >= j2.col1;", ExpectedIndexes: []string{}, - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, JoinTypes: []plan.JoinType{plan.JoinTypeInner}, }, { // Assert that merge join is not available, since the index is not ordered (equality condition) Query: "select /*+ MERGE_JOIN(t,j2) */ distinct j2.pk from j2 join t on t.col1 = j2.col1;", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, JoinTypes: []plan.JoinType{plan.JoinTypeLookup}, }, { // Assert that merge join is not available, since the index is not ordered (range condition) Query: "select /*+ MERGE_JOIN(t,j2) */ distinct j2.pk from j2 join t on t.col1 >= j2.col1;", ExpectedIndexes: []string{}, - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, JoinTypes: []plan.JoinType{plan.JoinTypeInner}, }, { // Assert that indexes with hash-encoded fields are not used for ordering Query: "select t.col1 from t order by t.col1;", ExpectedIndexes: []string{}, - Expected: []sql.Row{{nil}, {""}, {" "}, {" "}, {"oneasdfasdf"}}, + Expected: []sql.UntypedSqlRow{{nil}, {""}, {" "}, {" "}, {"oneasdfasdf"}}, }, { // Assert that filters that transform the column value are not eligible to use the secondary index Query: "select col1 from t where concat(t.col1, ' ') = ' ';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{" "}}, + Expected: []sql.UntypedSqlRow{{" "}}, }, { // Assert that different types that have to be coerced don't cause issues Query: "select col1 from t where t.col1 = POINT(42, 42);", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // Assert that index use is valid for not equals comparisons Query: "select col1 from t where t.col1 != 'oneasdfasdf';", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{""}, {" "}, {" "}}, + Expected: []sql.UntypedSqlRow{{""}, {" "}, {" "}}, }, { // Assert that index use is valid for is not null filter expressions Query: "select col1 from t where t.col1 is not null;", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{""}, {" "}, {" "}, {"oneasdfasdf"}}, + Expected: []sql.UntypedSqlRow{{""}, {" "}, {" "}, {"oneasdfasdf"}}, }, { // Assert that index use is valid for null-safe comparisons Query: "select col1 from t where t.col1 <=> 'oneasdfasdf';", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{"oneasdfasdf"}}, + Expected: []sql.UntypedSqlRow{{"oneasdfasdf"}}, }, { // Assert that index use is allowed for is null filter expressions Query: "select col1 from t where t.col1 is NULL", ExpectedIndexes: []string{"k1"}, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, }, }, @@ -3932,7 +3932,7 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @@strict_mysql_compatibility;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "insert into t values (200, 'two', 'two___');", @@ -3940,7 +3940,7 @@ var IndexPrefixQueries = []ScriptTest{ }, { Query: "select col1, col2 from t where col1='one';", - Expected: []sql.Row{{"one", "one___"}}, + Expected: []sql.UntypedSqlRow{{"one", "one___"}}, CheckIndexedAccess: true, ExpectedIndexes: []string{"uk1"}, }, @@ -3948,37 +3948,37 @@ var IndexPrefixQueries = []ScriptTest{ // Indexes with content-hashed fields are not eligible for use with range scans Query: "select * from t where col1 >= 'one';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{1, "one", "one___"}, {2, "two", "two___"}}, + Expected: []sql.UntypedSqlRow{{1, "one", "one___"}, {2, "two", "two___"}}, }, { // Indexes with content-hashed fields are not eligible for use with range scans Query: "select * from t where col2 >= 'one';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{1, "one", "one___"}, {2, "two", "two___"}}, + Expected: []sql.UntypedSqlRow{{1, "one", "one___"}, {2, "two", "two___"}}, }, { // Indexes with a content-hashed BLOB/TEXT field cannot be used in range scans Query: "select count(*) from t where col1 >= ' ';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { // Indexes with a content-hashed BLOB/TEXT field cannot be used in range scans Query: "select count(*) from t where col2 >= ' ';", ExpectedIndexes: []string{}, - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { // Indexes with a content-hashed BLOB/TEXT field cannot be used in ordered range scans Query: "select * from t where col1 >= ' ' order by pk;", ExpectedIndexes: []string{"primary"}, - Expected: []sql.Row{{1, "one", "one___"}, {2, "two", "two___"}}, + Expected: []sql.UntypedSqlRow{{1, "one", "one___"}, {2, "two", "two___"}}, }, { // Indexes with a content-hashed BLOB/TEXT field cannot be used in ordered range scans Query: "select * from t where col2 >= ' ' order by pk;", ExpectedIndexes: []string{"primary"}, - Expected: []sql.Row{{1, "one", "one___"}, {2, "two", "two___"}}, + Expected: []sql.UntypedSqlRow{{1, "one", "one___"}, {2, "two", "two___"}}, }, }, }, @@ -3993,7 +3993,7 @@ var IndexPrefixQueries = []ScriptTest{ { // Assert we can create the index without a prefix, inline in a table definition, too Query: "create table t2 (pk int primary key, col1 TEXT collate utf8mb3_general_ci);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // Assert we can create the index without a prefix, inline in a table definition, too @@ -4011,11 +4011,11 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "set @@strict_mysql_compatibility = true;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@strict_mysql_compatibility;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "alter table t add unique key k1(col1);", @@ -4033,19 +4033,19 @@ var IndexPrefixQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table varchar_limit(c varchar(10000), index (c(768)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "create table text_limit(c text, index (c(768)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "create table varbinary_limit(c varbinary(10000), index (c(3072)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "create table blob_limit(c blob, index (c(3072)))", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "create table bad(c varchar(10000), index (c(769)))", @@ -4076,19 +4076,19 @@ var IndexQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create unique index namespace__name on users (namespace, name)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, }, { Query: "show create table users", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"users", "CREATE TABLE `users` (\n `id` varchar(26) NOT NULL,\n `namespace` varchar(50),\n `name` varchar(50),\n PRIMARY KEY (`id`),\n UNIQUE KEY `namespace__name` (`namespace`,`name`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, { Query: "insert into users values ('user1', 'namespace1', 'name1')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -4108,7 +4108,7 @@ var IndexQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT pk, uk, i from auniquetable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 99}, }, }, @@ -4127,18 +4127,18 @@ var IndexQueries = []ScriptTest{ // Add two indexes over the same column set to t0 { Query: "ALTER TABLE t0 ADD CONSTRAINT unique_1 UNIQUE(col1, col2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t0 ADD CONSTRAINT unique_2 UNIQUE(col1, col2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, ExpectedWarningsCount: 1, ExpectedWarning: 1831, ExpectedWarningMessageSubstring: "Duplicate index 'unique_2' defined on the table 'mydb.t0'", }, { Query: "SELECT kc.`constraint_name`, kc.`column_name`, kc.`referenced_table_name`, kc.`referenced_column_name` FROM information_schema.key_column_usage AS kc WHERE kc.table_schema = DATABASE() AND kc.table_name = 't0' ORDER BY kc.`ordinal_position`;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"PRIMARY", "id", nil, nil}, {"unique_1", "col1", nil, nil}, {"unique_2", "col1", nil, nil}, @@ -4148,19 +4148,19 @@ var IndexQueries = []ScriptTest{ }, { Query: "SHOW CREATE TABLE t0;", - Expected: []sql.Row{{"t0", "CREATE TABLE `t0` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `unique_1` (`col1`,`col2`),\n UNIQUE KEY `unique_2` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t0", "CREATE TABLE `t0` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `unique_1` (`col1`,`col2`),\n UNIQUE KEY `unique_2` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, // Create a new table with two indexes over the same column set { Query: "CREATE TABLE `t2` (`id` char(32) NOT NULL PRIMARY KEY, `col1` varchar(255) NOT NULL, `col2` varchar(255) NOT NULL, UNIQUE KEY unique_1(col1, col2), UNIQUE KEY unique_2(col1, col2));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, ExpectedWarningsCount: 1, ExpectedWarning: 1831, ExpectedWarningMessageSubstring: "Duplicate index 'unique_2' defined on the table 'mydb.t2'", }, { Query: "SELECT kc.`constraint_name`, kc.`column_name`, kc.`referenced_table_name`, kc.`referenced_column_name` FROM information_schema.key_column_usage AS kc WHERE kc.table_schema = DATABASE() AND kc.table_name = 't2' ORDER BY kc.`ordinal_position`;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"PRIMARY", "id", nil, nil}, {"unique_1", "col1", nil, nil}, {"unique_2", "col1", nil, nil}, @@ -4170,34 +4170,34 @@ var IndexQueries = []ScriptTest{ }, { Query: "SHOW CREATE TABLE t2;", - Expected: []sql.Row{{"t2", "CREATE TABLE `t2` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `unique_1` (`col1`,`col2`),\n UNIQUE KEY `unique_2` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t2", "CREATE TABLE `t2` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `unique_1` (`col1`,`col2`),\n UNIQUE KEY `unique_2` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE t2 ADD CONSTRAINT unique_3 UNIQUE(col1, col2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, ExpectedWarningsCount: 1, ExpectedWarning: 1831, ExpectedWarningMessageSubstring: "Duplicate index 'unique_3' defined on the table 'mydb.t2'", }, { Query: "SHOW CREATE TABLE t2;", - Expected: []sql.Row{{"t2", "CREATE TABLE `t2` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `unique_1` (`col1`,`col2`),\n UNIQUE KEY `unique_2` (`col1`,`col2`),\n UNIQUE KEY `unique_3` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t2", "CREATE TABLE `t2` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `unique_1` (`col1`,`col2`),\n UNIQUE KEY `unique_2` (`col1`,`col2`),\n UNIQUE KEY `unique_3` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, // Add unnamed duplicate indexes { Query: "ALTER TABLE t3 ADD CONSTRAINT UNIQUE(col1, col2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t3 ADD CONSTRAINT UNIQUE(col1, col2);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, ExpectedWarningsCount: 1, ExpectedWarning: 1831, ExpectedWarningMessageSubstring: "Duplicate index 'col1_2' defined on the table 'mydb.t3'", }, { Query: "SELECT kc.`constraint_name`, kc.`column_name`, kc.`referenced_table_name`, kc.`referenced_column_name` FROM information_schema.key_column_usage AS kc WHERE kc.table_schema = DATABASE() AND kc.table_name = 't3' ORDER BY kc.`ordinal_position`;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"PRIMARY", "id", nil, nil}, {"col1", "col1", nil, nil}, {"col1_2", "col1", nil, nil}, @@ -4207,7 +4207,7 @@ var IndexQueries = []ScriptTest{ }, { Query: "SHOW CREATE TABLE t3;", - Expected: []sql.Row{{"t3", "CREATE TABLE `t3` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `col1` (`col1`,`col2`),\n UNIQUE KEY `col1_2` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"t3", "CREATE TABLE `t3` (\n `id` char(32) NOT NULL,\n `col1` varchar(255) NOT NULL,\n `col2` varchar(255) NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `col1` (`col1`,`col2`),\n UNIQUE KEY `col1_2` (`col1`,`col2`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -4220,21 +4220,21 @@ var IndexQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select i, j from t where i = 0 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 100}, {0, 200}, }, }, { Query: "select i, j from t where i = 1 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 100}, {1, 200}, }, }, { Query: "select i, j from t where i > 0 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 100}, {1, 200}, {2, 100}, @@ -4243,7 +4243,7 @@ var IndexQueries = []ScriptTest{ }, { Query: "select i, j from t where i > 0 and i < 2 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 100}, {1, 200}, }, @@ -4259,34 +4259,34 @@ var IndexQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select i, j, k from t where i = 0 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 123}, {0, 1, 456}, }, }, { Query: "select i, j, k from t where i = 0 and j = 0 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 123}, }, }, { Query: "select i, j, k from t where i = 1 and (j = 0 or j = 1) order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 123}, {1, 1, 456}, }, }, { Query: "select i, j, k from t where i > 0 and j > 0 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 456}, {2, 1, 456}, }, }, { Query: "select i, j, k from t where i > 0 and i < 2 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 123}, {1, 1, 456}, }, @@ -4331,7 +4331,7 @@ var IndexQueries = []ScriptTest{ { // Ensure the above statements did not create tables without indexes Query: "show tables;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"json_tbl"}, {"idx_tbl"}, }, diff --git a/enginetest/queries/information_schema_queries.go b/enginetest/queries/information_schema_queries.go index e1a751aa33..aafa1f8345 100644 --- a/enginetest/queries/information_schema_queries.go +++ b/enginetest/queries/information_schema_queries.go @@ -24,11 +24,11 @@ import ( var InfoSchemaQueries = []QueryTest{ { Query: "SHOW PLUGINS", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SHOW KEYS FROM `columns` FROM `information_schema`;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT @@ -58,7 +58,7 @@ var InfoSchemaQueries = []QueryTest{ Type: types.Text, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mytable", "idx_si", "", 1, "s,i"}, {"mytable", "mytable_i_s", "", 1, "i,s"}, {"mytable", "mytable_s", "", 0, "s"}, @@ -72,7 +72,7 @@ var InfoSchemaQueries = []QueryTest{ Type: types.MustCreateString(sqltypes.VarChar, 64, sql.Collation_Information_Schema_Default), }, }, - Expected: []sql.Row{{"mytable"}}, + Expected: []sql.UntypedSqlRow{{"mytable"}}, }, { Query: `select table_catalog, table_schema, table_name from information_schema.tables where table_name = 'mytable' limit 1;`, @@ -81,11 +81,11 @@ var InfoSchemaQueries = []QueryTest{ {Name: "TABLE_SCHEMA", Type: types.MustCreateString(sqltypes.VarChar, 64, sql.Collation_Information_Schema_Default)}, {Name: "TABLE_NAME", Type: types.MustCreateString(sqltypes.VarChar, 64, sql.Collation_Information_Schema_Default)}, }, - Expected: []sql.Row{{"def", "mydb", "mytable"}}, + Expected: []sql.UntypedSqlRow{{"def", "mydb", "mytable"}}, }, { Query: `select table_name from information_schema.tables where table_schema = 'information_schema' order by table_name;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"administrable_role_authorizations"}, {"applicable_roles"}, {"character_sets"}, @@ -169,7 +169,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: "SHOW TABLES", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"myview"}, {"fk_tbl"}, {"mytable"}, @@ -177,7 +177,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: "SHOW FULL TABLES", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"fk_tbl", "BASE TABLE"}, {"myview", "VIEW"}, {"mytable", "BASE TABLE"}, @@ -185,73 +185,73 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: "SHOW TABLES FROM foo", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"othertable"}, }, }, { Query: "SHOW TABLES LIKE '%table'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mytable"}, }, }, { Query: `SHOW COLUMNS FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, {"s", "varchar(20)", "NO", "UNI", nil, ""}, }, }, { Query: `DESCRIBE mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, {"s", "varchar(20)", "NO", "UNI", nil, ""}, }, }, { Query: `DESC mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, {"s", "varchar(20)", "NO", "UNI", nil, ""}, }, }, { Query: `SHOW COLUMNS FROM mytable WHERE Field = 'i'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, }, }, { Query: `SHOW COLUMNS FROM mytable LIKE 'i'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, }, }, { Query: `SHOW FULL COLUMNS FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "UNI", nil, "", "", "column s"}, }, }, { Query: `SHOW FULL COLUMNS FROM mytable FROM mydb`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", nil, "NO", "PRI", nil, "", "", ""}, {"s", "varchar(20)", "utf8mb4_0900_bin", "NO", "UNI", nil, "", "", "column s"}, }, }, { Query: `SHOW FULL COLUMNS FROM othertable in foo`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"text", "varchar(20)", "utf8mb4_0900_bin", "NO", "PRI", nil, "", "", ""}, {"number", "mediumint", nil, "YES", "", nil, "", "", ""}, }, }, { Query: "SHOW TABLES WHERE `Tables_in_mydb` = 'mytable'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mytable"}, }, }, @@ -284,7 +284,7 @@ var InfoSchemaQueries = []QueryTest{ WHERE TABLE_SCHEMA='mydb' AND (TABLE_TYPE='BASE TABLE' OR TABLE_TYPE='VIEW') ORDER BY 1 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"fk_tbl"}, {"mytable"}, {"myview"}, @@ -295,7 +295,7 @@ var InfoSchemaQueries = []QueryTest{ SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='mytable' `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s", "varchar"}, {"i", "bigint"}, }, @@ -306,7 +306,7 @@ var InfoSchemaQueries = []QueryTest{ WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table' GROUP BY COLUMN_NAME `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s"}, {"i"}, }, @@ -317,7 +317,7 @@ var InfoSchemaQueries = []QueryTest{ WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table' GROUP BY 1 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s"}, {"i"}, }, @@ -328,7 +328,7 @@ var InfoSchemaQueries = []QueryTest{ WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table' GROUP BY 1 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"s"}, {"i"}, }, @@ -352,7 +352,7 @@ var InfoSchemaQueries = []QueryTest{ &sql.Column{Name: "Visible", Type: types.LongText}, &sql.Column{Name: "Expression", Type: types.LongText, Nullable: true}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"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}, @@ -363,19 +363,19 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: `SHOW INDEXES FROM othertable FROM foo`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"othertable", 0, "PRIMARY", 1, "text", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { Query: `SHOW INDEXES FROM foo.othertable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"othertable", 0, "PRIMARY", 1, "text", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { Query: `SHOW KEYS FROM mytaBLE`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"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}, @@ -386,7 +386,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: `SHOW CREATE TABLE mytaBLE`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mytable", "CREATE TABLE `mytable` (\n" + " `i` bigint NOT NULL,\n" + " `s` varchar(20) NOT NULL COMMENT 'column s',\n" + @@ -399,7 +399,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: `SHOW CREATE TABLE fk_TBL`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"fk_tbl", "CREATE TABLE `fk_tbl` (\n" + " `pk` bigint NOT NULL,\n" + " `a` bigint,\n" + @@ -414,14 +414,14 @@ var InfoSchemaQueries = []QueryTest{ 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{ + Expected: []sql.UntypedSqlRow{ {"fk_tbl", nil}, {"mytable", nil}, }, }, { Query: "SHOW ENGINES", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"InnoDB", "DEFAULT", "Supports transactions, row-level locking, and foreign keys", "YES", "YES", "YES"}, }, ExpectedColumns: sql.Schema{ @@ -453,7 +453,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: "SELECT * FROM information_schema.table_constraints ORDER BY table_name, constraint_type;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "fk1", "mydb", "fk_tbl", "FOREIGN KEY", "YES"}, {"def", "mydb", "PRIMARY", "mydb", "fk_tbl", "PRIMARY KEY", "YES"}, {"def", "mydb", "PRIMARY", "mydb", "mytable", "PRIMARY KEY", "YES"}, @@ -463,11 +463,11 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: "SELECT * FROM information_schema.check_constraints ORDER BY constraint_schema, constraint_name, check_clause ", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM information_schema.key_column_usage ORDER BY constraint_schema, table_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "foo", "PRIMARY", "def", "foo", "othertable", "text", 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"}, @@ -493,17 +493,17 @@ var InfoSchemaQueries = []QueryTest{ col.column_name like 'pk%' group by the_table, col.column_name `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb.fk_tbl", "pk", "pk,pk,pk"}, }, }, { Query: `SELECT count(*) FROM information_schema.COLLATIONS`, - Expected: []sql.Row{{286}}, + Expected: []sql.UntypedSqlRow{{286}}, }, { Query: `SELECT * FROM information_schema.COLLATIONS ORDER BY collation_name LIMIT 4`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"armscii8_bin", "armscii8", uint64(64), "", "Yes", uint32(1), "PAD SPACE"}, {"armscii8_general_ci", "armscii8", uint64(32), "Yes", "Yes", uint32(1), "PAD SPACE"}, {"ascii_bin", "ascii", uint64(65), "", "Yes", uint32(1), "PAD SPACE"}, @@ -512,7 +512,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: `SELECT * FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY ORDER BY collation_name LIMIT 4 `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"armscii8_bin", "armscii8"}, {"armscii8_general_ci", "armscii8"}, {"ascii_bin", "ascii"}, @@ -521,7 +521,7 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: `SELECT * FROM information_schema.ENGINES ORDER BY engine`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"InnoDB", "DEFAULT", "Supports transactions, row-level locking, and foreign keys", "YES", "YES", "YES"}, }, ExpectedColumns: sql.Schema{ @@ -553,199 +553,199 @@ var InfoSchemaQueries = []QueryTest{ }, { Query: `SELECT * from information_schema.administrable_role_authorizations`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.applicable_roles`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.column_privileges`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.optimizer_trace`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM information_schema.partitions", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.plugins`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.profiling`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.resource_groups`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.role_column_grants`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.role_routine_grants`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.tablespaces`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.tablespaces_extensions`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.view_routine_usage`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM information_schema.view_table_usage`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_buffer_page`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_buffer_page_lru`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_buffer_pool_stats`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cached_indexes`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cmp`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cmp_reset`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cmpmem`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cmpmem_reset`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cmp_per_index`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_cmp_per_index_reset`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_columns`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_datafiles`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_fields`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_foreign`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_foreign_cols`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_ft_being_deleted`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_ft_config`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_ft_default_stopword`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_ft_deleted`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_ft_index_cache`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_ft_index_table`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_indexes`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_metrics`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_session_temp_tablespaces`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_tables`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_tablespaces`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_tablespaces_brief`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_tablestats`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_temp_table_info`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_trx`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from information_schema.innodb_virtual`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, SEQ_IN_INDEX, 'PRIMARY' AS PK_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'mydb' AND INDEX_NAME='PRIMARY' ORDER BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "fk_tbl", "pk", 1, "PRIMARY"}, {"mydb", "mytable", "i", 1, "PRIMARY"}, }, }, { Query: "select * from information_schema.character_sets;", - Expected: []sql.Row{{"utf8mb4", "utf8mb4_0900_ai_ci", "UTF-8 Unicode", uint32(4)}}, + Expected: []sql.UntypedSqlRow{{"utf8mb4", "utf8mb4_0900_ai_ci", "UTF-8 Unicode", uint32(4)}}, }, { Query: `show columns from fk_tbl from mydb`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, ""}, {"a", "bigint", "YES", "MUL", nil, ""}, {"b", "varchar(20)", "YES", "", nil, ""}, @@ -753,17 +753,17 @@ FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'mydb' AND INDEX_NAME='P }, { Query: "SELECT * FROM information_schema.referential_constraints where CONSTRAINT_SCHEMA = 'mydb'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "fk1", "def", "mydb", nil, "NONE", "NO ACTION", "CASCADE", "fk_tbl", "mytable"}, }, }, { Query: "SELECT count(*) FROM information_schema.keywords", - Expected: []sql.Row{{747}}, + Expected: []sql.UntypedSqlRow{{747}}, }, { Query: "SELECT * FROM information_schema.st_spatial_reference_systems order by srs_id desc limit 10", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {`WGS 84 / TM 36 SE`, uint32(32766), `EPSG`, uint32(32766), `PROJCS["WGS 84 / TM 36 SE",GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse Mercator",AUTHORITY["EPSG","9807"]],PARAMETER["Latitude of natural origin",0,AUTHORITY["EPSG","8801"]],PARAMETER["Longitude of natural origin",36,AUTHORITY["EPSG","8802"]],PARAMETER["Scale factor at natural origin",0.9996,AUTHORITY["EPSG","8805"]],PARAMETER["False easting",500000,AUTHORITY["EPSG","8806"]],PARAMETER["False northing",10000000,AUTHORITY["EPSG","8807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["E",EAST],AXIS["N",NORTH],AUTHORITY["EPSG","32766"]]`, nil}, {`WGS 84 / UPS South (N,E)`, uint32(32761), `EPSG`, uint32(32761), `PROJCS["WGS 84 / UPS South (N,E)",GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]],PROJECTION["Polar Stereographic (variant A)",AUTHORITY["EPSG","9810"]],PARAMETER["Latitude of natural origin",-90,AUTHORITY["EPSG","8801"]],PARAMETER["Longitude of natural origin",0,AUTHORITY["EPSG","8802"]],PARAMETER["Scale factor at natural origin",0.994,AUTHORITY["EPSG","8805"]],PARAMETER["False easting",2000000,AUTHORITY["EPSG","8806"]],PARAMETER["False northing",2000000,AUTHORITY["EPSG","8807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["N",NORTH],AXIS["E",NORTH],AUTHORITY["EPSG","32761"]]`, nil}, {`WGS 84 / UTM zone 60S`, uint32(32760), `EPSG`, uint32(32760), `PROJCS["WGS 84 / UTM zone 60S",GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse Mercator",AUTHORITY["EPSG","9807"]],PARAMETER["Latitude of natural origin",0,AUTHORITY["EPSG","8801"]],PARAMETER["Longitude of natural origin",177,AUTHORITY["EPSG","8802"]],PARAMETER["Scale factor at natural origin",0.9996,AUTHORITY["EPSG","8805"]],PARAMETER["False easting",500000,AUTHORITY["EPSG","8806"]],PARAMETER["False northing",10000000,AUTHORITY["EPSG","8807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["E",EAST],AXIS["N",NORTH],AUTHORITY["EPSG","32760"]]`, nil}, @@ -778,31 +778,31 @@ FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'mydb' AND INDEX_NAME='P }, { Query: "SELECT count(*) FROM information_schema.st_units_of_measure", - Expected: []sql.Row{{47}}, + Expected: []sql.UntypedSqlRow{{47}}, }, { Query: "SELECT * FROM information_schema.schemata_extensions", - Expected: []sql.Row{{"def", "information_schema", ""}, {"def", "foo", ""}, {"def", "mydb", ""}}, + Expected: []sql.UntypedSqlRow{{"def", "information_schema", ""}, {"def", "foo", ""}, {"def", "mydb", ""}}, }, { Query: `SELECT * FROM information_schema.columns_extensions where table_name = 'mytable'`, - Expected: []sql.Row{{"def", "mydb", "mytable", "i", nil, nil}, {"def", "mydb", "mytable", "s", nil, nil}}, + Expected: []sql.UntypedSqlRow{{"def", "mydb", "mytable", "i", nil, nil}, {"def", "mydb", "mytable", "s", nil, nil}}, }, { Query: `SELECT * FROM information_schema.table_constraints_extensions where table_name = 'fk_tbl'`, - Expected: []sql.Row{{"def", "mydb", "PRIMARY", "fk_tbl", nil, nil}, {"def", "mydb", "fk1", "fk_tbl", nil, nil}}, + Expected: []sql.UntypedSqlRow{{"def", "mydb", "PRIMARY", "fk_tbl", nil, nil}, {"def", "mydb", "fk1", "fk_tbl", nil, nil}}, }, { Query: `SELECT * FROM information_schema.tables_extensions where table_name = 'mytable'`, - Expected: []sql.Row{{"def", "mydb", "mytable", nil, nil}}, + Expected: []sql.UntypedSqlRow{{"def", "mydb", "mytable", nil, nil}}, }, { Query: "SELECT table_rows FROM INFORMATION_SCHEMA.TABLES where table_name='mytable'", - Expected: []sql.Row{{uint64(3)}}, + Expected: []sql.UntypedSqlRow{{uint64(3)}}, }, { Query: "select table_name from information_schema.tables where table_schema collate utf8_general_ci = 'information_schema' and table_name collate utf8_general_ci = 'parameters'", - Expected: []sql.Row{{"parameters"}}, + Expected: []sql.UntypedSqlRow{{"parameters"}}, }, } @@ -814,7 +814,7 @@ var SkippedInfoSchemaQueries = []QueryTest{ WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE '%table' GROUP BY 1 HAVING SUBSTRING(COLUMN_NAME, 1, 1) = "s" `, - Expected: []sql.Row{{"s"}}, + Expected: []sql.UntypedSqlRow{{"s"}}, }, } @@ -829,11 +829,11 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select UNIQUE_CONSTRAINT_NAME from information_schema.referential_constraints where TABLE_NAME = 'child' and REFERENCED_TABLE_NAME = 'parent';", - Expected: []sql.Row{{"PRIMARY"}}, + Expected: []sql.UntypedSqlRow{{"PRIMARY"}}, }, { Query: "select REFERENCED_COLUMN_NAME from information_schema.key_column_usage where TABLE_NAME = 'child' and REFERENCED_TABLE_NAME = 'parent';", - Expected: []sql.Row{{"a"}}, + Expected: []sql.UntypedSqlRow{{"a"}}, }, { Query: "set foreign_key_checks=0;", @@ -843,19 +843,19 @@ var InfoSchemaScripts = []ScriptTest{ }, { Query: "insert into child values (1), (2);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "select * from child;", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "delete from child;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "select * from child;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "set foreign_key_checks=1;", @@ -866,11 +866,11 @@ var InfoSchemaScripts = []ScriptTest{ }, { Query: "select UNIQUE_CONSTRAINT_NAME from information_schema.referential_constraints where TABLE_NAME = 'child' and REFERENCED_TABLE_NAME = 'parent';", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select REFERENCED_COLUMN_NAME from information_schema.key_column_usage where TABLE_NAME = 'child' and REFERENCED_TABLE_NAME = 'parent';", - Expected: []sql.Row{{"a"}}, + Expected: []sql.UntypedSqlRow{{"a"}}, }, }, }, @@ -882,11 +882,11 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select column_name from information_schema.columns where column_name like 'condition%';", - Expected: []sql.Row{{"condition_choose"}}, + Expected: []sql.UntypedSqlRow{{"condition_choose"}}, }, { Query: "select column_name from information_schema.columns where column_name like '%condition%';", - Expected: []sql.Row{{"ACTION_CONDITION"}, {"condition_choose"}}, + Expected: []sql.UntypedSqlRow{{"ACTION_CONDITION"}, {"condition_choose"}}, }, }, }, @@ -901,7 +901,7 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT table_schema, table_name, column_name, character_set_name, collation_name, column_type FROM information_schema.columns where table_schema = 'test_db' order by column_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_db", "small_table", "a", nil, nil, "binary(1)"}, {"test_db", "small_table", "b", "utf8mb3", "utf8mb3_bin", "varchar(50)"}, {"test_db", "test_table", "col1", "utf8mb4", "utf8mb4_0900_bin", "text"}, @@ -920,7 +920,7 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.table_constraints where table_name='t' ORDER BY constraint_type,constraint_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "PRIMARY", "mydb", "t", "PRIMARY KEY", "YES"}, }, }, @@ -935,7 +935,7 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.key_column_usage where table_name='t'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "PRIMARY", "def", "mydb", "t", "pk", 1, nil, nil, nil, nil}, }, }, @@ -953,7 +953,7 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.key_column_usage where table_name='ptable2' ORDER BY constraint_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"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"}, {"def", "mydb", "PRIMARY", "def", "mydb", "ptable2", "pk", 1, nil, nil, nil, nil}, @@ -961,7 +961,7 @@ var InfoSchemaScripts = []ScriptTest{ }, { Query: "SELECT * FROM information_schema.key_column_usage where table_name='atable' ORDER BY constraint_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "PRIMARY", "def", "mydb", "atable", "pk", 1, nil, nil, nil, nil}, {"def", "mydb", "PRIMARY", "def", "mydb", "atable", "test_score", 2, nil, nil, nil, nil}, }, @@ -982,7 +982,7 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.referential_constraints where constraint_schema = 'mydb' and table_name = 'ref_table'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "fk_across_dbs_ref_pk", "def", "mydb", "PRIMARY", "NONE", "NO ACTION", "NO ACTION", "ref_table", "my_table"}, {"def", "mydb", "fk_across_dbs_key", "def", "mydb", nil, "NONE", "NO ACTION", "NO ACTION", "ref_table", "my_table"}, {"def", "mydb", "fk_across_dbs_unique", "def", "mydb", "w", "NONE", "NO ACTION", "NO ACTION", "ref_table", "my_table"}, @@ -1000,7 +1000,7 @@ var InfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT trigger_name, event_object_table, definer FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trigger1'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"trigger1", "aa", "dolt@localhost"}, }, }, @@ -1010,7 +1010,7 @@ event_object_schema, event_object_table, action_order, action_condition, action_ action_reference_old_table, action_reference_new_table, action_reference_old_row, action_reference_new_row, sql_mode, definer, character_set_client, collation_connection, database_collation FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "trigger1", "INSERT", "def", "mydb", "aa", 1, nil, "SET NEW.x = NEW.x + 1", "ROW", "BEFORE", nil, nil, "OLD", "NEW", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "dolt@localhost", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, {"def", "mydb", "trigger2", "INSERT", "def", "mydb", "aa", 2, nil, "SET NEW.y = NEW.y + 2", "ROW", "BEFORE", nil, nil, "OLD", "NEW", @@ -1029,7 +1029,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.statistics where table_name='t'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "t", 1, "mydb", "myindex", 1, "test_score", "A", 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}, {"def", "mydb", "t", 0, "mydb", "PRIMARY", 1, "pk", "A", 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, @@ -1047,7 +1047,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT table_name, column_name, column_default, is_nullable FROM information_schema.columns where table_name='t' order by 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "fname", "", "NO"}, {"t", "h", nil, "YES"}, {"t", "lname", "ln", "NO"}, @@ -1064,7 +1064,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT table_name, column_name, column_default, is_nullable FROM information_schema.CoLuMnS where table_name='test_table'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_table", "pk", nil, "NO"}, {"test_table", "col2", "4.5", "NO"}, {"test_table", "col3", "3.14159", "NO"}, @@ -1082,7 +1082,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT table_name, column_name, column_default, is_nullable FROM information_schema.columns where table_name='test_table'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test_table", "pk", nil, "NO"}, {"test_table", "col2", "length('he`Llo')", "YES"}, {"test_table", "col3", "greatest(`pk`,2)", "YES"}, @@ -1101,7 +1101,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "select column_name, numeric_precision, numeric_scale from information_schema.columns where table_name='digits' order by ordinal_position;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c0", 3, 0}, {"c1", 3, 0}, {"c2", 5, 0}, @@ -1136,7 +1136,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, "routine_body, external_name, external_language, parameter_style, is_deterministic, " + "sql_data_access, sql_path, security_type, sql_mode, routine_comment, definer, " + "character_set_client, collation_connection, database_collation FROM information_schema.routines order by routine_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"p1", "def", "mydb", "p1", "PROCEDURE", "", nil, nil, nil, nil, nil, nil, nil, nil, "SQL", nil, "SQL", "SQL", "YES", "CONTAINS SQL", nil, "DEFINER", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "hi", "", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, @@ -1166,7 +1166,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = 'foo'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "foo", "t", "i", uint32(1), nil, "NO", "int", nil, nil, 10, 0, nil, nil, nil, "int", "PRI", "", "insert,references,select,update", "", "", nil}, {"def", "foo", "t", "j", uint32(2), "UUID_TO_BIN(uuid())", "YES", "int", nil, nil, 10, 0, nil, nil, nil, "int", "", "DEFAULT_GENERATED", "insert,references,select,update", "", "", nil}, {"def", "foo", "tt", "ii", uint32(1), nil, "NO", "int", nil, nil, 10, 0, nil, nil, nil, "int", "PRI", "", "insert,references,select,update", "", "", nil}, @@ -1193,7 +1193,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLUMN_TYPE, COLUMN_KEY, CHARACTER_MAXIMUM_LENGTH, EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'about'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"about", "id", nil, "NO", "int unsigned", "UNI", nil, "auto_increment"}, {"about", "uuid", nil, "NO", "char(36)", "PRI", 36, ""}, {"about", "status", "draft", "NO", "varchar(255)", "", 255, ""}, @@ -1213,7 +1213,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE, COLUMN_TYPE, COLUMN_KEY, CHARACTER_MAXIMUM_LENGTH, EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'new_table'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"new_table", "id", "NO", "int", "int", "MUL", nil, ""}, {"new_table", "name", "YES", "varchar", "varchar(30)", "", 30, ""}, {"new_table", "cname", "YES", "varbinary", "varbinary(100)", "", 100, ""}, @@ -1229,7 +1229,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT TABLE_NAME, COLUMN_NAME, IS_NULLABLE, COLUMN_TYPE, COLUMN_KEY FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'comp_uni'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"comp_uni", "pk", "NO", "int", "PRI"}, {"comp_uni", "c0", "YES", "int", "MUL"}, {"comp_uni", "c1", "YES", "int", ""}, @@ -1245,7 +1245,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE, COLUMN_TYPE, COLUMN_KEY FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ptable'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ptable", "id", "NO", "int", "int", "PRI"}, {"ptable", "id2", "NO", "int", "int", "UNI"}, {"ptable", "col1", "YES", "tinyint", "tinyint(1)", ""}, @@ -1261,7 +1261,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: "SELECT TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, COLUMN_TYPE, COLUMN_KEY, SRS_ID FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'stable'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"stable", "geo", "point(2,5)", "NO", "geometry", "geometry", "", nil}, {"stable", "line", nil, "NO", "linestring", "linestring", "", nil}, {"stable", "pnt", nil, "YES", "point", "point", "", uint32(4326)}, @@ -1282,7 +1282,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, Assertions: []ScriptTestAssertion{ { Query: `select index_name, seq_in_index, column_name, sub_part from information_schema.statistics where table_schema = 'mydb' and table_name = 'ptable' ORDER BY INDEX_NAME`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b", 1, "b", 4}, {"b_and_c", 1, "b", 5}, {"b_and_c", 2, "c", 6}, @@ -1294,12 +1294,12 @@ FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema = 'mydb'`, // TODO: cardinality not supported Skip: true, Query: `select cardinality from information_schema.statistics where table_schema = 'mydb' and table_name = 'ptable' ORDER BY INDEX_NAME`, - Expected: []sql.Row{{2}, {2}, {2}, {2}, {2}}, + Expected: []sql.UntypedSqlRow{{2}, {2}, {2}, {2}, {2}}, }, { Query: `SELECT seq_in_index, sub_part, index_name, index_type, CASE non_unique WHEN 0 THEN 'TRUE' ELSE 'FALSE' END AS is_unique, column_name FROM information_schema.statistics WHERE table_schema='mydb' AND table_name='ptable' ORDER BY index_name, seq_in_index;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 4, "b", "BTREE", "TRUE", "b"}, {1, 5, "b_and_c", "BTREE", "FALSE", "b"}, {2, 6, "b_and_c", "BTREE", "FALSE", "c"}, @@ -1354,7 +1354,7 @@ PRIMARY KEY (pk) { Query: `SELECT table_catalog, table_schema, table_name, column_name, ordinal_position FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_types' ORDER BY ORDINAL_POSITION`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "all_types", "pk", uint32(1)}, {"def", "mydb", "all_types", "binary_1", uint32(2)}, {"def", "mydb", "all_types", "big_int", uint32(3)}, @@ -1394,7 +1394,7 @@ FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_ty { Query: `SELECT column_name, column_default, is_nullable, data_type, column_type, character_maximum_length, character_octet_length FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_types' ORDER BY ORDINAL_POSITION`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", nil, "NO", "int", "int", nil, nil}, {"binary_1", "0x31", "YES", "binary", "binary(1)", 1, 1}, {"big_int", "1", "YES", "bigint", "bigint", nil, nil}, @@ -1434,7 +1434,7 @@ FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_ty { Query: `SELECT column_name, column_type, numeric_precision, numeric_scale, datetime_precision, character_set_name, collation_name, column_key, extra, column_comment, generation_expression, srs_id FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_types' ORDER BY ORDINAL_POSITION`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", 10, 0, nil, nil, nil, "PRI", "", "", "", nil}, {"binary_1", "binary(1)", nil, nil, nil, nil, nil, "", "", "", "", nil}, {"big_int", "bigint", 19, 0, nil, nil, nil, "", "", "", "", nil}, @@ -1485,7 +1485,7 @@ FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_ty Assertions: []ScriptTestAssertion{ { Query: `SELECT table_catalog, table_schema, table_name, table_type, table_comment FROM information_schema.tables WHERE table_schema = 'mydb' and table_type IN ('VIEW') ORDER BY TABLE_NAME;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "myview", "VIEW", "VIEW"}, {"def", "mydb", "myview1", "VIEW", "VIEW"}, {"def", "mydb", "myview2", "VIEW", "VIEW"}, @@ -1493,7 +1493,7 @@ FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_ty }, { Query: "SELECT table_rows as count FROM information_schema.TABLES WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='bigtable';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(5)}, }, }, @@ -1519,7 +1519,7 @@ FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='mydb' AND TABLE_NAME='all_ty Query: `SELECT TC.CONSTRAINT_NAME, CC.CHECK_CLAUSE, TC.ENFORCED FROM information_schema.TABLE_CONSTRAINTS TC, information_schema.CHECK_CONSTRAINTS CC WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'CHECK';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"chk1", "(B > 0)", "YES"}, {"chk2", "(b > 0)", "NO"}, {"chk3", "(B > 1)", "YES"}, @@ -1528,7 +1528,7 @@ WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.C }, { Query: `select * from information_schema.table_constraints where table_schema = 'mydb' and table_name = 'checks';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "PRIMARY", "mydb", "checks", "PRIMARY KEY", "YES"}, {"def", "mydb", "chk1", "mydb", "checks", "CHECK", "YES"}, {"def", "mydb", "chk2", "mydb", "checks", "CHECK", "NO"}, @@ -1538,7 +1538,7 @@ WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.C }, { Query: `select * from information_schema.check_constraints where constraint_schema = 'mydb';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "chk1", "(B > 0)"}, {"def", "mydb", "chk2", "(b > 0)"}, {"def", "mydb", "chk3", "(B > 1)"}, @@ -1547,7 +1547,7 @@ WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'checks' AND TC.TABLE_SCHEMA = CC.C }, { Query: `select * from information_schema.table_constraints where table_schema = 'mydb' and table_name = 'ptable';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "PRIMARY", "mydb", "ptable", "PRIMARY KEY", "YES"}, {"def", "mydb", "b", "mydb", "ptable", "UNIQUE", "YES"}, {"def", "mydb", "ptable_checks", "mydb", "ptable", "FOREIGN KEY", "YES"}, @@ -1572,7 +1572,7 @@ END ;`, routine_body, external_language, parameter_style, is_deterministic, sql_data_access, security_type, sql_mode, routine_comment, definer, character_set_client, collation_connection, database_collation from information_schema.routines where routine_schema = 'mydb' and routine_type like 'PROCEDURE' order by routine_name;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"count_i_from_mytable", "def", "mydb", "count_i_from_mytable", "PROCEDURE", "", "SQL", "SQL", "SQL", "NO", "READS SQL DATA", "DEFINER", "NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES", "", "root@localhost", "utf8mb4", "utf8mb4_0900_bin", "utf8mb4_0900_bin"}, @@ -1580,7 +1580,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type }, { Query: `select routine_definition from information_schema.routines where routine_schema = 'mydb' and routine_type like 'PROCEDURE' order by routine_name;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"BEGIN\n SELECT SUM(i)\n FROM mytable\n INTO total_i;\nEND"}, }, }, @@ -1601,7 +1601,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Query: `SELECT table_catalog, table_schema, table_name, table_type, engine, version, row_format, table_rows, auto_increment, table_collation, checksum, create_options, table_comment FROM information_schema.tables where table_schema = 'mydb' order by table_name`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "bigtable", "BASE TABLE", "InnoDB", 10, "Dynamic", uint64(5), nil, "utf8mb4_0900_bin", nil, "", ""}, {"def", "mydb", "fk_tbl", "BASE TABLE", "InnoDB", 10, "Dynamic", uint64(0), nil, "utf8mb4_0900_bin", nil, "", ""}, {"def", "mydb", "mytable", "BASE TABLE", "InnoDB", 10, "Dynamic", uint64(3), nil, "utf8mb4_0900_bin", nil, "", ""}, @@ -1612,7 +1612,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type }, { Query: "SELECT table_comment,table_rows,auto_increment FROM information_schema.tables WHERE TABLE_NAME = 'names' AND TABLE_SCHEMA = 'mydb';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"", uint64(3), uint64(4)}, }, }, @@ -1627,7 +1627,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "select * from information_schema.views where table_schema = 'mydb' order by table_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "myview", "SELECT * FROM mytable", "NONE", "YES", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, {"def", "mydb", "myview1", "select count(*) from mytable", "NONE", "NO", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, {"def", "mydb", "myview2", "SELECT * FROM myview WHERE i > 1", "NONE", "NO", "UserName@localhost", "INVOKER", "utf8mb4", "utf8mb4_0900_bin"}, @@ -1644,7 +1644,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.schemata where schema_name like 'mydb%' order by schema_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "utf8mb4", "utf8mb4_0900_bin", nil, "NO"}, {"def", "mydb1", "latin1", "latin1_general_ci", nil, "NO"}, {"def", "mydb2", "utf8mb3", "utf8mb3_general_ci", nil, "NO"}, @@ -1660,7 +1660,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.st_geometry_columns where table_schema = 'mydb' order by column_name", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "spatial_table", "g", "", uint32(0), "geometry"}, {"def", "mydb", "spatial_table", "m", nil, nil, "multipoint"}, {"def", "mydb", "spatial_table", "p", "WGS 84", uint32(4326), "polygon"}, @@ -1676,7 +1676,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.parameters where specific_name = 'testabc'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "mydb", "testabc", uint64(1), "IN", "x", "double", nil, nil, 22, 0, nil, nil, nil, "double", "PROCEDURE"}, {"def", "mydb", "testabc", uint64(2), "IN", "y", "float", nil, nil, 12, 0, nil, nil, nil, "float", "PROCEDURE"}, {"def", "mydb", "testabc", uint64(3), "OUT", "abc", "decimal", nil, nil, 5, 1, nil, nil, nil, "decimal(5,1)", "PROCEDURE"}, @@ -1734,7 +1734,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type "organization 'test_org' identified by 1234 " + "definition 'test_definition' " + "description 'test_description'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, @@ -1744,13 +1744,13 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type "organization 'test_org' identified by 1234 " + "definition 'test_definition' " + "description 'test_description'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "select srs_id, srs_name, organization, organization_coordsys_id, definition, description from information_schema.st_spatial_reference_systems where srs_id = 1234", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint32(1234), "test_name", "test_org", uint32(1234), "test_definition", "test_description"}, }, }, @@ -1760,13 +1760,13 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type "organization 'new_test_org' identified by 1234 " + "definition 'new_test_definition' " + "description 'new_test_description'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "select srs_id, srs_name, organization, organization_coordsys_id, definition, description from information_schema.st_spatial_reference_systems where srs_id = 1234", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint32(1234), "test_name", "test_org", uint32(1234), "test_definition", "test_description"}, }, }, @@ -1781,7 +1781,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "select table_comment from information_schema.tables where table_name = 't';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"this is a table comment"}, }, }, @@ -1795,13 +1795,13 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "select table_schema, table_name, column_name table_comment from information_schema.columns where (table_name, column_name) in (('TEST', 'COL'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "TEST", "COL"}, }, }, { Query: "select table_schema, table_name, column_name table_comment from information_schema.columns where (table_name, column_name) in (('test', 'col'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "TEST", "COL"}, }, }, @@ -1822,7 +1822,7 @@ var SkippedInfoSchemaScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.key_column_usage where constraint_name = 'fk_across_dbs'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "keydb", "fk_across_dbs", "def", "keydb", "key_table", "a", 1, 1, "mydb", "my_table", "i"}, }, }, diff --git a/enginetest/queries/insert_queries.go b/enginetest/queries/insert_queries.go index be37ad86c7..2b95bd38d1 100644 --- a/enginetest/queries/insert_queries.go +++ b/enginetest/queries/insert_queries.go @@ -27,69 +27,69 @@ import ( var InsertQueries = []WriteQueryTest{ { WriteQuery: "INSERT INTO keyless VALUES ();", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM keyless WHERE c0 IS NULL;", - ExpectedSelect: []sql.Row{{nil, nil}}, + ExpectedSelect: []sql.UntypedSqlRow{{nil, nil}}, }, { WriteQuery: "INSERT INTO keyless () VALUES ();", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM keyless WHERE c0 IS NULL;", - ExpectedSelect: []sql.Row{{nil, nil}}, + ExpectedSelect: []sql.UntypedSqlRow{{nil, nil}}, }, { WriteQuery: "INSERT INTO mytable (s, i) VALUES ('x', '10.0');", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT i FROM mytable WHERE s = 'x';", - ExpectedSelect: []sql.Row{{int64(10)}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(10)}}, }, { WriteQuery: "INSERT INTO mytable (s, i) VALUES ('x', '64.6');", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT i FROM mytable WHERE s = 'x';", - ExpectedSelect: []sql.Row{{int64(65)}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(65)}}, }, { WriteQuery: "INSERT INTO mytable (s, i) VALUES ('x', 999);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT i FROM mytable WHERE s = 'x';", - ExpectedSelect: []sql.Row{{int64(999)}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999)}}, }, { WriteQuery: "INSERT INTO niltable (i, f) VALUES (10, 10.0), (12, 12.0);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.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}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(10), 10.0}, {int64(12), 12.0}}, }, { WriteQuery: "INSERT INTO mytable SET s = 'x', i = 999;", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT i FROM mytable WHERE s = 'x';", - ExpectedSelect: []sql.Row{{int64(999)}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999)}}, }, { WriteQuery: "INSERT INTO mytable VALUES (999, 'x');", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT i FROM mytable WHERE s = 'x';", - ExpectedSelect: []sql.Row{{int64(999)}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999)}}, }, { WriteQuery: "INSERT INTO mytable SET i = 999, s = 'x';", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT i FROM mytable WHERE s = 'x';", - ExpectedSelect: []sql.Row{{int64(999)}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999)}}, }, { WriteQuery: "INSERT INTO mytable VALUES (999, _binary 'x');", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT s FROM mytable WHERE i = 999;", - ExpectedSelect: []sql.Row{{"x"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"x"}}, }, { WriteQuery: "INSERT INTO mytable SET i = 999, s = _binary 'x';", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT s FROM mytable WHERE i = 999;", - ExpectedSelect: []sql.Row{{"x"}}, + ExpectedSelect: []sql.UntypedSqlRow{{"x"}}, }, { WriteQuery: `INSERT INTO typestable VALUES ( @@ -99,9 +99,9 @@ var InsertQueries = []WriteQueryTest{ '2037-04-05 12:51:36', '2231-11-07', 'random text', true, '{"key":"value"}', 'blobdata', 'v1', 'v2' );`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM typestable WHERE id = 999;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ 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), @@ -117,9 +117,9 @@ var InsertQueries = []WriteQueryTest{ ti = '2037-04-05 12:51:36', da = '2231-11-07', te = 'random text', bo = true, js = '{"key":"value"}', bl = 'blobdata', e1 = 'v1', s1 = 'v2' ;`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM typestable WHERE id = 999;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ 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), @@ -136,9 +136,9 @@ var InsertQueries = []WriteQueryTest{ '0000-00-00 00:00:00', '0000-00-00', '', false, '""', '', '', '' );`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM typestable WHERE id = 999;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ 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), @@ -155,9 +155,9 @@ var InsertQueries = []WriteQueryTest{ ti = '0000-00-00 00:00:00', da = '0000-00-00', te = '', bo = false, js = '""', bl = '', e1 = 'v1', s1 = 'v2' ;`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM typestable WHERE id = 999;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ 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), @@ -174,9 +174,9 @@ var InsertQueries = []WriteQueryTest{ ti = '2037-04-05 12:51:36 -0000 UTC', da = '0000-00-00', te = '', bo = false, js = '""', bl = '', e1 = 'v1', s1 = 'v2' ;`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM typestable WHERE id = 999;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ 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), @@ -186,35 +186,35 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: `INSERT INTO mytable (i,s) VALUES (10, 'NULL')`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 10;", - ExpectedSelect: []sql.Row{{int64(10), "NULL"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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, null, null);`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.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, nil, nil}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999), nil, nil, 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{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT id, ti, da FROM typestable WHERE id = 999;", - ExpectedSelect: []sql.Row{{int64(999), sql.MustConvert(types.Timestamp.Convert("2021-09-01")), sql.MustConvert(types.Date.Convert("2021-09-01"))}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999), sql.MustConvert(types.Timestamp.Convert("2021-09-01")), sql.MustConvert(types.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, e1=null, s1=null;`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.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, nil, nil}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(999), nil, nil, 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{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -225,9 +225,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO emptytable SELECT * FROM mytable", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -235,25 +235,25 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO emptytable SELECT * FROM mytable where mytable.i > 2", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(3), "third row"}, }, }, { WriteQuery: "INSERT INTO niltable (i,f) SELECT i+10, NULL FROM mytable where mytable.i > 2", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM niltable where i > 10 ORDER BY i", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {13, nil, nil, nil}, }, }, { WriteQuery: "INSERT INTO mytable (i,s) SELECT i+10, 'new' FROM mytable", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -264,9 +264,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable SELECT i2+100, s2 FROM othertable", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -277,9 +277,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO emptytable (s,i) SELECT * FROM othertable", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "third"}, {int64(2), "second"}, {int64(3), "first"}, @@ -287,9 +287,9 @@ var InsertQueries = []WriteQueryTest{ }, { 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{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first rowthird"}, {int64(2), "second rowsecond"}, {int64(3), "third rowfirst"}, @@ -298,9 +298,9 @@ var InsertQueries = []WriteQueryTest{ { 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{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(3), "third row"}, }, @@ -309,9 +309,9 @@ var InsertQueries = []WriteQueryTest{ 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{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(3), "third row"}, }, @@ -321,9 +321,9 @@ var InsertQueries = []WriteQueryTest{ 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{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "first row"}, {int64(3), "first row"}, @@ -331,9 +331,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO emptytable (s,i) SELECT distinct s,i from mytable", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM emptytable ORDER BY i,s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -341,9 +341,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) SELECT (i + 10.0) / 10.0 + 10 + i, concat(s, ' new') FROM mytable", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -354,9 +354,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) SELECT CHAR_LENGTH(s), concat('numrows: ', count(*)) from mytable group by 1", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -366,9 +366,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) SELECT CHAR_LENGTH(s) as len, concat('numrows: ', count(*)) from mytable group by 1 HAVING len > 9", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -377,9 +377,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) SELECT i * 2, concat(s,s) from mytable order by 1 desc limit 1", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -388,9 +388,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) SELECT i + 3, concat(s,s) from mytable order by 1 desc", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -404,9 +404,9 @@ var InsertQueries = []WriteQueryTest{ 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{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable where i > 10 ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {11, "third"}, {12, "second"}, {13, "first"}, @@ -416,9 +416,9 @@ var InsertQueries = []WriteQueryTest{ 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{{types.NewOkResult(3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, SelectQuery: "SELECT * FROM mytable where i > 10 ORDER BY i, s", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {11, "third"}, {12, "second"}, {13, "first"}, @@ -426,33 +426,33 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) values (1, 'hello') ON DUPLICATE KEY UPDATE s='hello'", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "hello"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "hello"}}, }, { WriteQuery: "INSERT INTO mytable (i,s) values (1, 'hello2') ON DUPLICATE KEY UPDATE s='hello3'", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "hello3"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "hello3"}}, }, { WriteQuery: "INSERT INTO mytable (i,s) values (1, 'hello') ON DUPLICATE KEY UPDATE i=10", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 10", - ExpectedSelect: []sql.Row{{int64(10), "first row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(10), "first row"}}, }, { WriteQuery: "INSERT INTO mytable (i,s) values (1, 'hello2') ON DUPLICATE KEY UPDATE s='hello3'", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "hello3"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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{{types.NewOkResult(5)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(5)}}, SelectQuery: "SELECT * FROM mytable ORDER BY 1", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "hello4"}, {2, "hello4"}, {3, "third row"}, @@ -461,9 +461,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) values (10, 'hello') ON DUPLICATE KEY UPDATE s='hello'", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM mytable ORDER BY 1", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -472,47 +472,47 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO mytable (i,s) values (1,'hi') ON DUPLICATE KEY UPDATE s=VALUES(s)", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "hi"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "hi"}}, }, { WriteQuery: "INSERT INTO mytable (i,s) values (1, 'hi') AS dt(new_i,new_s) ON DUPLICATE KEY UPDATE s=new_s", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "hi"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "hi"}}, Skip: true, // https://github.com/dolthub/dolt/issues/7638 }, { WriteQuery: "INSERT INTO mytable (i,s) values (1, 'hi') AS dt ON DUPLICATE KEY UPDATE mytable.s=dt.s", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "hir"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "hir"}}, Skip: true, // https://github.com/dolthub/dolt/issues/7638 }, { WriteQuery: "INSERT INTO mytable (s,i) values ('dup',1) ON DUPLICATE KEY UPDATE s=CONCAT(VALUES(s), 'licate')", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 1", - ExpectedSelect: []sql.Row{{int64(1), "duplicate"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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{{types.NewOkResult(4)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, SelectQuery: "SELECT * FROM mytable WHERE i IN (1,2) ORDER BY i", - ExpectedSelect: []sql.Row{{int64(1), "martial"}, {int64(2), "partial"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM mytable WHERE i = 8001", - ExpectedSelect: []sql.Row{{int64(8001), "maybe"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(8001), "maybe"}}, }, { WriteQuery: "INSERT INTO auto_increment_tbl (c0) values (44)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 4}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 4}}}, SelectQuery: "SELECT * FROM auto_increment_tbl ORDER BY pk", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -521,9 +521,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO auto_increment_tbl (c0) values (44),(55)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 4}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 4}}}, SelectQuery: "SELECT * FROM auto_increment_tbl ORDER BY pk", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -533,9 +533,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO auto_increment_tbl values (NULL, 44)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 4}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 4}}}, SelectQuery: "SELECT * FROM auto_increment_tbl ORDER BY pk", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -544,9 +544,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO auto_increment_tbl values (0, 44)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 0}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 0}}}, SelectQuery: "SELECT * FROM auto_increment_tbl ORDER BY pk", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -555,9 +555,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO auto_increment_tbl values (5, 44)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 0}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 0}}}, SelectQuery: "SELECT * FROM auto_increment_tbl ORDER BY pk", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -567,9 +567,9 @@ var InsertQueries = []WriteQueryTest{ { WriteQuery: "INSERT INTO auto_increment_tbl values " + "(NULL, 44), (NULL, 55), (9, 99), (NULL, 110), (NULL, 121)", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 5, InsertID: 4}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 5, InsertID: 4}}}, SelectQuery: "SELECT * FROM auto_increment_tbl ORDER BY pk", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -582,9 +582,9 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: `INSERT INTO auto_increment_tbl (c0) SELECT 44 FROM dual`, - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 4}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 4}}}, SelectQuery: "SELECT * FROM auto_increment_tbl", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 11}, {2, 22}, {3, 33}, @@ -593,44 +593,44 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: `INSERT INTO othertable VALUES ("fourth", 1) ON DUPLICATE KEY UPDATE s2="fourth"`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: "SELECT * FROM othertable", - ExpectedSelect: []sql.Row{ - sql.NewRow("first", int64(3)), - sql.NewRow("second", int64(2)), - sql.NewRow("fourth", int64(1)), + ExpectedSelect: []sql.UntypedSqlRow{ + {"first", int64(3)}, + {"second", int64(2)}, + {"fourth", int64(1)}, }, }, { WriteQuery: `INSERT INTO othertable(S2,I2) values ('fourth',0)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: `SELECT * FROM othertable where s2='fourth'`, - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"fourth", 0}, }, }, { WriteQuery: `INSERT INTO auto_increment_tbl VALUES ('4', 44)`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: `SELECT * from auto_increment_tbl where pk=4`, - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {4, 44}, }, }, { WriteQuery: `INSERT INTO keyless (c0, c1) SELECT * from keyless where c0=0 and c1=0`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: `SELECT * from keyless where c0=0`, - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {0, 0}, {0, 0}, }, }, { WriteQuery: `insert into keyless (c0, c1) select a.c0, a.c1 from (select 1, 1) as a(c0, c1) join keyless on a.c0 = keyless.c0`, - ExpectedWriteResult: []sql.Row{{types.NewOkResult(2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, SelectQuery: `SELECT * from keyless where c0=1`, - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, 1}, {1, 1}, {1, 1}, @@ -639,25 +639,25 @@ var InsertQueries = []WriteQueryTest{ }, { WriteQuery: "with t (i,f) as (select 4,'fourth row' from dual) insert into mytable select i,f from t", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, SelectQuery: "select * from mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, "first row"), - sql.NewRow(2, "second row"), - sql.NewRow(3, "third row"), - sql.NewRow(4, "fourth row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "first row"}, + {2, "second row"}, + {3, "third row"}, + {4, "fourth row"}, }, }, { WriteQuery: "with recursive t (i,f) as (select 4,4 from dual union all select i + 1, i + 1 from t where i < 5) insert into mytable select i,f from t", - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, SelectQuery: "select * from mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, "first row"), - sql.NewRow(2, "second row"), - sql.NewRow(3, "third row"), - sql.NewRow(4, "4"), - sql.NewRow(5, "5"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "first row"}, + {2, "second row"}, + {3, "third row"}, + {4, "4"}, + {5, "5"}, }, }, } @@ -665,33 +665,33 @@ var InsertQueries = []WriteQueryTest{ var SpatialInsertQueries = []WriteQueryTest{ { WriteQuery: "INSERT INTO point_table VALUES (1, POINT(1,1));", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM point_table;", - ExpectedSelect: []sql.Row{{5, types.Point{X: 1, Y: 2}}, {1, types.Point{X: 1, Y: 1}}}, + ExpectedSelect: []sql.UntypedSqlRow{{5, types.Point{X: 1, Y: 2}}, {1, types.Point{X: 1, Y: 1}}}, }, { WriteQuery: "INSERT INTO point_table VALUES (1, 0x000000000101000000000000000000F03F0000000000000040);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM point_table;", - ExpectedSelect: []sql.Row{{5, types.Point{X: 1, Y: 2}}, {1, types.Point{X: 1, Y: 2}}}, + ExpectedSelect: []sql.UntypedSqlRow{{5, types.Point{X: 1, Y: 2}}, {1, types.Point{X: 1, Y: 2}}}, }, { WriteQuery: "INSERT INTO line_table VALUES (2, LINESTRING(POINT(1,2),POINT(3,4)));", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM line_table;", - ExpectedSelect: []sql.Row{{0, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, {1, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}, {X: 5, Y: 6}}}}, {2, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, {1, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}, {X: 5, Y: 6}}}}, {2, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}}, }, { WriteQuery: "INSERT INTO line_table VALUES (2, 0x00000000010200000002000000000000000000F03F000000000000004000000000000008400000000000001040);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM line_table;", - ExpectedSelect: []sql.Row{{0, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, {1, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}, {X: 5, Y: 6}}}}, {2, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}}, + ExpectedSelect: []sql.UntypedSqlRow{{0, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, {1, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}, {X: 5, Y: 6}}}}, {2, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}}, }, { WriteQuery: "INSERT INTO polygon_table VALUES (2, POLYGON(LINESTRING(POINT(1,1),POINT(1,-1),POINT(-1,-1),POINT(-1,1),POINT(1,1))));", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM polygon_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {0, types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}, {1, types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 1}, {X: 0, Y: 0}}}, {Points: []types.Point{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}, {2, types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 1, Y: 1}, {X: 1, Y: -1}, {X: -1, Y: -1}, {X: -1, Y: 1}, {X: 1, Y: 1}}}}}}, @@ -699,18 +699,18 @@ var SpatialInsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO polygon_table VALUES (2, 0x0000000001030000000100000005000000000000000000F03F000000000000F03F000000000000F03F000000000000F0BF000000000000F0BF000000000000F0BF000000000000F0BF000000000000F03F000000000000F03F000000000000F03F);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM polygon_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {0, types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}, {1, types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 1}, {X: 0, Y: 0}}}, {Points: []types.Point{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}, {2, types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 1, Y: 1}, {X: 1, Y: -1}, {X: -1, Y: -1}, {X: -1, Y: 1}, {X: 1, Y: 1}}}}}}}, }, { WriteQuery: "INSERT INTO geometry_table VALUES (100, POINT(123.456,7.89));", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM geometry_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, types.Point{X: 1, Y: 2}}, {2, types.Point{SRID: 4326, X: 1, Y: 2}}, {3, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -730,9 +730,9 @@ var SpatialInsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO geometry_table VALUES (100, 0x00000000010100000077BE9F1A2FDD5E408FC2F5285C8F1F40);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM geometry_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, types.Point{X: 1, Y: 2}}, {2, types.Point{SRID: 4326, X: 1, Y: 2}}, {3, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -752,9 +752,9 @@ var SpatialInsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO geometry_table VALUES (100, LINESTRING(POINT(1,2),POINT(3,4)));", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM geometry_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, types.Point{X: 1, Y: 2}}, {2, types.Point{SRID: 4326, X: 1, Y: 2}}, {3, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -774,9 +774,9 @@ var SpatialInsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO geometry_table VALUES (100, 0x00000000010200000002000000000000000000F03F000000000000004000000000000008400000000000001040);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM geometry_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, types.Point{X: 1, Y: 2}}, {2, types.Point{SRID: 4326, X: 1, Y: 2}}, {3, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -796,9 +796,9 @@ var SpatialInsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO geometry_table VALUES (100, POLYGON(LINESTRING(POINT(1,1),POINT(1,-1),POINT(-1,-1),POINT(-1,1),POINT(1,1))));", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM geometry_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, types.Point{X: 1, Y: 2}}, {2, types.Point{SRID: 4326, X: 1, Y: 2}}, {3, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -818,9 +818,9 @@ var SpatialInsertQueries = []WriteQueryTest{ }, { WriteQuery: "INSERT INTO geometry_table VALUES (100, 0x0000000001030000000100000005000000000000000000F03F000000000000F03F000000000000F03F000000000000F0BF000000000000F0BF000000000000F0BF000000000000F0BF000000000000F03F000000000000F03F000000000000F03F);", - ExpectedWriteResult: []sql.Row{{types.NewOkResult(1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, SelectQuery: "SELECT * FROM geometry_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {1, types.Point{X: 1, Y: 2}}, {2, types.Point{SRID: 4326, X: 1, Y: 2}}, {3, types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -852,7 +852,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO uv(v, x_id) VALUES ('test', (SELECT x FROM xy WHERE y = 'admin'));", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "INSERT INTO uv(v, x_id) VALUES ('test', (SELECT x FROM xy WHERE x > 0));", @@ -860,7 +860,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "select * from uv", - Expected: []sql.Row{{1, "test", 1}}, + Expected: []sql.UntypedSqlRow{{1, "test", 1}}, }, }, }, @@ -874,11 +874,11 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO xy (y,x) select * from (select cast('2019-12-31T12:00:00Z' as date), 0) dt(a,b) ON DUPLICATE KEY UPDATE x=dt.b+1, y=dt.a", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from xy", - Expected: []sql.Row{{1, time.Date(2019, time.December, 31, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{1, time.Date(2019, time.December, 31, 0, 0, 0, 0, time.UTC)}}, }, }, }, @@ -897,7 +897,7 @@ var InsertScripts = []ScriptTest{ ) Select * from b d ) insert into xy (x,y) select x+9,y+9 from a;`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 0}}}, }, }, }, @@ -909,7 +909,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO t1 (dt) VALUES ('0001-01-01 00:00:00');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -925,7 +925,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, {20}, {30}, {31}, {40}, {41}, }, }, @@ -943,7 +943,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-3}, {-2}, {-1}, {10}, {20}, {30}, {31}, {32}, {33}, {34}, }, }, @@ -958,7 +958,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, 1}, {20, 2}, {30, 3}, }, }, @@ -973,7 +973,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, 1, nil}, {20, 2, nil}, {30, 3, nil}, }, }, @@ -988,7 +988,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto_no_primary order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, @@ -1003,7 +1003,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto_no_primary order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, nil}, {3, nil}, }, }, @@ -1020,7 +1020,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {11}, }, }, @@ -1039,7 +1039,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, {2, 20}, {3, 30}, }, }, @@ -1059,18 +1059,18 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'auto' AND table_schema = DATABASE()", - Expected: []sql.Row{{uint64(9)}}, + Expected: []sql.UntypedSqlRow{{uint64(9)}}, }, { Query: "insert into auto values (NULL,90)", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 9, }}}, }, { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, {2, 20}, {3, 30}, {9, 90}, }, }, @@ -1091,7 +1091,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, {2, 20}, {3, 30}, {19, 190}, }, }, @@ -1106,7 +1106,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, {11}, }, }, @@ -1121,7 +1121,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, {11}, }, }, @@ -1136,7 +1136,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, {11}, }, }, @@ -1151,7 +1151,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, {11}, }, }, @@ -1166,7 +1166,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, {11}, }, }, @@ -1181,7 +1181,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1)}, {uint64(10)}, {uint64(11)}, }, }, @@ -1196,7 +1196,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1)}, {uint64(10)}, {uint64(11)}, }, }, @@ -1211,7 +1211,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1)}, {uint64(10)}, {uint64(11)}, }, }, @@ -1226,7 +1226,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1)}, {uint64(10)}, {uint64(11)}, }, }, @@ -1241,7 +1241,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1)}, {uint64(10)}, {uint64(11)}, }, }, @@ -1256,7 +1256,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(1)}, {float64(10)}, {float64(11)}, }, }, @@ -1271,7 +1271,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from auto order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(1)}, {float64(10)}, {float64(11)}, }, }, @@ -1288,19 +1288,19 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select auto_increment from information_schema.tables where table_name='auto' and table_schema=database()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "insert into auto values (0), (0), (1-1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, InsertID: 0}}, }, }, { Query: "select * from auto order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {0}, {0}, @@ -1308,38 +1308,38 @@ var InsertScripts = []ScriptTest{ }, { Query: "select auto_increment from information_schema.tables where table_name='auto' and table_schema=database()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "insert into auto values (1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, InsertID: 0}}, }, }, { Query: "select auto_increment from information_schema.tables where table_name='auto' and table_schema=database()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(2)}, }, }, { Query: "select auto_increment from information_schema.tables where table_name='auto_pk' and table_schema=database()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "insert into auto_pk values (0), (1), (NULL), ()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4, InsertID: 2}}, }, }, { Query: "select * from auto_pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -1348,7 +1348,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "select auto_increment from information_schema.tables where table_name='auto_pk' and table_schema=database()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(4)}, }, }, @@ -1376,84 +1376,84 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO T1 values (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "INSERT INTO t1 (id, dt) values (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "INSERT INTO t1 (dt, ID) values (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "INSERT INTO t1 (ID) values (DEFAULT), (3)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t1 (dt) values (DEFAULT), ('1981-02-16 00:00:00')", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t1 values (100, '2000-01-01 12:34:56'), (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t1 (id, dt) values (100, '2022-01-01 01:01:01'), (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t1 (id) values (10), (DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t1 (DT) values ('2022-02-02 02:02:02'), (DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t2 values ('10'), (DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "INSERT INTO t2 (id) values (DEFAULT), ('11'), (DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 3}}}, }, { Query: "select count(distinct id) from t2", - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, { Query: "INSERT INTO t3 (a) values (DEFAULT), ('2'), (DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 3}}}, }, { Query: "SELECT b from t3 order by b asc", - Expected: []sql.Row{{2}, {2}, {4}}, + Expected: []sql.UntypedSqlRow{{2}, {2}, {4}}, }, { Query: "INSERT INTO T4 (c1, c0) values (DEFAULT, NULL)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select * from t4", - Expected: []sql.Row{{nil, "c1"}}, + Expected: []sql.UntypedSqlRow{{nil, "c1"}}, }, { Query: "INSERT INTO T5 values (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "INSERT INTO T5 (c0, c1) values (DEFAULT, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "INSERT INTO T5 (c1) values (DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { // Custom column order should use the correct column defaults Query: "insert into T6(createdAt, color) values (DEFAULT, DEFAULT);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, }, }, @@ -1465,27 +1465,27 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO t1 (a,b) values (1, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select * from t1 order by a", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "INSERT INTO t1 values (2, DEFAULT)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select * from t1 where a = 2 order by a", - Expected: []sql.Row{{2, 3}}, + Expected: []sql.UntypedSqlRow{{2, 3}}, }, { Query: "INSERT INTO t1 (b,a) values (DEFAULT, 3)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select * from t1 where a = 3 order by a", - Expected: []sql.Row{{3, 4}}, + Expected: []sql.UntypedSqlRow{{3, 4}}, }, }, }, @@ -1498,55 +1498,55 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, {3, 3}, }, }, { Query: "INSERT IGNORE INTO y VALUES (1, 2), (4,4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERDupEntry, }, { Query: "INSERT IGNORE INTO y VALUES (5, NULL)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERBadNullError, }, { Query: "INSERT IGNORE INTO y SELECT * FROM y WHERE pk=(SELECT pk+10 FROM y WHERE pk > 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.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{ + Expected: []sql.UntypedSqlRow{ {types.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{ + Expected: []sql.UntypedSqlRow{ {types.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{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERSubqueryNo1Row, }, { Query: "INSERT IGNORE INTO y VALUES (3, 8)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, ExpectedWarning: mysql.ERDupEntry, @@ -1566,11 +1566,11 @@ var InsertScripts = []ScriptTest{ }, { Query: `DELETE FROM test where pk = 1;`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: `INSERT INTO test VALUES (1,1)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -1584,7 +1584,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into test(pk) values (1)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -1596,7 +1596,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO city VALUES (1,'San Pedro de Macorís');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -1619,19 +1619,19 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into nodes(id,owner,status,timestamp) values('id1','dabe','off',2) on duplicate key update owner='milo',status='on'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "insert into nodes(id,owner,status,timestamp) values('id2','dabe','off',3) on duplicate key update owner='milo',status='on'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from nodes", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"id1", "milo", "on", 1}, {"id2", "dabe", "off", 3}, }, @@ -1649,13 +1649,13 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into a (select * from b) on duplicate key update a.i = b.j + 100`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {101}, {2}, {3}, @@ -1678,13 +1678,13 @@ var InsertScripts = []ScriptTest{ }, { Query: `insert into a (select * from b as t) on duplicate key update a.i = t.j + 100`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {101}, {2}, {3}, @@ -1722,13 +1722,13 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into a (select * from b join c where b.x = c.y) on duplicate key update a.j = b.x + c.y + 100`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 102}, {2, 2}, {3, 3}, @@ -1749,14 +1749,14 @@ var InsertScripts = []ScriptTest{ { Query: `insert into a (select t.i from b as t, b where t.i = b.i) on duplicate key update i = b.i;`, Skip: true, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select * from a", Skip: true, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -1775,14 +1775,14 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into a with cte as (select * from b) select * from cte on duplicate key update a.i = cte.j + 100`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 4}}, }, }, { Query: "select * from a", Skip: true, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {101}, {2}, {3}, @@ -1811,7 +1811,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO t VALUES (1), (2);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT into t VALUES (1);", @@ -1819,11 +1819,11 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t;", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "INSERT into t2 VALUES (1, 1), (2, 2);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT into t2 VALUES (1, 1);", @@ -1831,7 +1831,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, }, }, @@ -1850,7 +1850,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "INSERT INTO t2 VALUES (2, 2, 2), (3, 1, 1), (4, 4, 4);", @@ -1858,7 +1858,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}}, }, { Query: "INSERT INTO t VALUES (5, 2), (6, 2);", @@ -1866,7 +1866,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "INSERT INTO t2 VALUES (5, 2, 2), (6, 2, 2);", @@ -1874,15 +1874,15 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}}, }, { Query: "INSERT into t2 VALUES (5, NULL, 1), (6, NULL, 1), (7, 1, NULL), (8, 1, NULL), (9, NULL, NULL), (10, NULL, NULL)", - Expected: []sql.Row{{types.NewOkResult(6)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(6)}}, }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1, 1}, {5, nil, 1}, {6, nil, 1}, {7, 1, nil}, {8, 1, nil}, {9, nil, nil}, {10, nil, nil}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {5, nil, 1}, {6, nil, 1}, {7, 1, nil}, {8, 1, nil}, {9, nil, nil}, {10, nil, nil}}, }, }, }, @@ -1901,7 +1901,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "INSERT INTO t2 VALUES (2, 2, 2), (3, 1, 1), (4, 4, 4);", @@ -1909,7 +1909,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}}, }, { Query: "INSERT INTO t VALUES (5, 2), (6, 2);", @@ -1917,7 +1917,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "INSERT INTO t2 VALUES (5, 2, 2), (6, 2, 2);", @@ -1925,15 +1925,15 @@ var InsertScripts = []ScriptTest{ }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}}, }, { Query: "INSERT into t2 VALUES (5, NULL, 1), (6, NULL, 1), (7, 1, NULL), (8, 1, NULL), (9, NULL, NULL), (10, NULL, NULL)", - Expected: []sql.Row{{types.NewOkResult(6)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(6)}}, }, { Query: "SELECT * from t2;", - Expected: []sql.Row{{1, 1, 1}, {5, nil, 1}, {6, nil, 1}, {7, 1, nil}, {8, 1, nil}, {9, nil, nil}, {10, nil, nil}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1}, {5, nil, 1}, {6, nil, 1}, {7, 1, nil}, {8, 1, nil}, {9, nil, nil}, {10, nil, nil}}, }, }, }, @@ -1962,11 +1962,11 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (pk, v1) VALUES (1, 'a');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO test (pk, v1) SELECT 2 as pk, 'a' as v1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -1978,11 +1978,11 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (pk, v1) VALUES (1, 'a');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO test (pk, v1) SELECT 2 as pk, 'a' as v1;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -1996,7 +1996,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t2(d) select t from t1 where false;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, @@ -2010,13 +2010,13 @@ var InsertScripts = []ScriptTest{ }, { Query: "insert into t2(d) select t from t1 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2001, time.January, 1, 0, 0, 0, 0, time.UTC)}, }, }, @@ -2042,31 +2042,31 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT t1 from escpe", - Expected: []sql.Row{{"foo's baz"}}, + Expected: []sql.UntypedSqlRow{{"foo's baz"}}, }, { Query: "SELECT t2 from escpe", - Expected: []sql.Row{{"who's dat"}}, + Expected: []sql.UntypedSqlRow{{"who's dat"}}, }, { Query: "SELECT t3 from escpe", - Expected: []sql.Row{{"joe's bar"}}, + Expected: []sql.UntypedSqlRow{{"joe's bar"}}, }, { Query: "SELECT t4 from escpe", - Expected: []sql.Row{{"quote\"bazzar"}}, + Expected: []sql.UntypedSqlRow{{"quote\"bazzar"}}, }, { Query: "SELECT t5 from escpe", - Expected: []sql.Row{{"back\\'slash"}}, + Expected: []sql.UntypedSqlRow{{"back\\'slash"}}, }, { Query: "SELECT t6 from escpe", - Expected: []sql.Row{{"tab\ttab"}}, + Expected: []sql.UntypedSqlRow{{"tab\ttab"}}, }, { Query: "SELECT t7 from escpe", - Expected: []sql.Row{{"new\nline"}}, + Expected: []sql.UntypedSqlRow{{"new\nline"}}, }, }, }, @@ -2091,7 +2091,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT val from quoted order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"joe's"}, {"jan's"}, {"mia\\'s"}, @@ -2110,7 +2110,7 @@ var InsertScripts = []ScriptTest{ { // dolt table import with -u option generates a duplicate key update with values(col) Query: "insert into alphabet values ('a') on duplicate key update letter = values(letter)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -2130,7 +2130,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO t2 VALUES (1,2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, ExpectedWarning: mysql.ErNoReferencedRow2, @@ -2146,7 +2146,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t1 order by pk", - Expected: []sql.Row{{1, "abc"}}, + Expected: []sql.UntypedSqlRow{{1, "abc"}}, }, { Query: "INSERT INTO t1 VALUES (1, 'abc');", @@ -2154,11 +2154,11 @@ var InsertScripts = []ScriptTest{ }, { Query: "INSERT INTO t1 VALUES (2, 'def');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t1 order by pk", - Expected: []sql.Row{{1, "abc"}, {2, "def"}}, + Expected: []sql.UntypedSqlRow{{1, "abc"}, {2, "def"}}, }, }, }, @@ -2172,7 +2172,7 @@ var InsertScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t1 order by pk", - Expected: []sql.Row{{1, "abc"}}, + Expected: []sql.UntypedSqlRow{{1, "abc"}}, }, { Query: "INSERT INTO t1 VALUES (1, 'abc');", @@ -2180,7 +2180,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "INSERT INTO t1 VALUES (2, 'def');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "commit", @@ -2188,7 +2188,7 @@ var InsertScripts = []ScriptTest{ }, { Query: "select * from t1 order by pk", - Expected: []sql.Row{{1, "abc"}, {2, "def"}}, + Expected: []sql.UntypedSqlRow{{1, "abc"}, {2, "def"}}, }, }, }, @@ -2203,19 +2203,19 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t values (0, "first")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `insert into t values (0, "second") on duplicate key update j = "third"`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: `select i, j from t order by i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "third"}, }, }, @@ -2229,37 +2229,37 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t(c1, c2, c3) values (0, 0, 0) on duplicate key update c3 = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, }, }, { Query: `insert into t(c1, c2, c3) values (0, 0, 1) on duplicate key update c3 = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, }, }, { Query: `insert into t(c1, c2, c3) values (0, 0, 0) on duplicate key update c3 = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 1}, }, }, @@ -2273,38 +2273,38 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t(c1, c2, c3) values (0, null, 0) on duplicate key update c3 = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 0}, }, }, { Query: `insert into t(c1, c2, c3) values (0, null, 1) on duplicate key update c3 = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 0}, {0, nil, 1}, }, }, { Query: `insert into t(c1, c2, c3) values (0, null, 0) on duplicate key update c3 = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 0}, {0, nil, 0}, {0, nil, 1}, @@ -2312,13 +2312,13 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ }, { Query: `insert into t(c1, c2, c3) values (0, 0, 0) on duplicate key update c3 = null`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 0}, {0, nil, 0}, {0, nil, 1}, @@ -2327,13 +2327,13 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ }, { Query: `insert into t(c1, c2, c3) values (0, 0, 0) on duplicate key update c3 = null`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 0}, {0, nil, 0}, {0, nil, 1}, @@ -2350,37 +2350,37 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t(c1, c2, c3) values (0, 0, 0) on duplicate key update c3 = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, }, }, { Query: `insert into t(c1, c2, c3) values (0, 0, 1) on duplicate key update c3 = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, }, }, { Query: `insert into t(c1, c2, c3) values (0, 0, 0) on duplicate key update c3 = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: `select c1, c2, c3 from t order by c1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 1}, }, }, @@ -2394,37 +2394,37 @@ var InsertDuplicateKeyKeyless = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `insert into t(c1, c2, c3) values (0, 0, 0), (0, 0, 0), (0, 0, 1), (0, 0, 1) on duplicate key update c3 = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 1}, }, }, { Query: `insert into t(c1, c2, c3) values (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4) on duplicate key update c3 = 100`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 100}, }, }, { Query: `insert into t(c1, c2, c3) values (0, 0, 1), (0, 1, 1), (0, 2, 2), (0, 3, 3) on duplicate key update c3 = 200`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(5)}, }, }, { Query: `select c1, c2, c3 from t order by c1, c2, c3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 200}, {0, 1, 1}, {0, 2, 2}, @@ -2564,19 +2564,19 @@ var InsertIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ""}, }, }, { Query: "SELECT * FROM y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, { Query: "INSERT IGNORE INTO y VALUES (2, NULL)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERBadNullError, @@ -2592,27 +2592,27 @@ var InsertIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO t1 VALUES (1, 'dasd')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERTruncatedWrongValueForField, }, { Query: "SELECT * FROM t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, { Query: "INSERT IGNORE INTO t2 values (1, 'adsda')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERUnknownError, }, { Query: "SELECT * FROM t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a"}, }, }, @@ -2629,37 +2629,37 @@ var InsertIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE v='dsd';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, ExpectedWarning: mysql.ERTruncatedWrongValueForField, }, { Query: "SELECT * FROM t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, { Query: "INSERT IGNORE INTO t2 values (1, 'adsda')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERUnknownError, }, { Query: "SELECT * FROM t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a"}, }, }, { Query: "INSERT IGNORE INTO t2 VALUES (1, 's') ON DUPLICATE KEY UPDATE pk = 1000", // violates constraint - Expected: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, }, { Query: "SELECT * FROM t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a"}, }, }, @@ -2676,27 +2676,27 @@ var InsertIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO one_uniq VALUES (3, 2), (2, 1), (4, null), (5, null)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3}}, }, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * from one_uniq;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 2}, {4, nil}, {5, nil}, }, }, { Query: "INSERT IGNORE INTO two_uniq VALUES (4, 1, 2), (5, 2, 1), (6, null, 1), (7, null, 1), (12, 1, 1), (8, 1, null), (9, 1, null), (10, null, null), (11, null, null)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 8}}, }, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * from two_uniq;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1}, {4, 1, 2}, {5, 2, 1}, {6, nil, 1}, {7, nil, 1}, {8, 1, nil}, {9, 1, nil}, {10, nil, nil}, {11, nil, nil}, }, }, @@ -2716,27 +2716,27 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO one_uniq VALUES (3, 2), (2, 1), (4, null), (5, null)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3}}, }, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * from one_uniq;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 2}, {4, nil}, {5, nil}, }, }, { Query: "INSERT IGNORE INTO two_uniq VALUES (4, 1, 2), (5, 2, 1), (6, null, 1), (7, null, 1), (12, 1, 1), (8, 1, null), (9, 1, null), (10, null, null), (11, null, null)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 8}}, }, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * from two_uniq;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1}, {4, 1, 2}, {5, 2, 1}, {6, nil, 1}, {7, nil, 1}, {8, 1, nil}, {9, 1, nil}, {10, nil, nil}, {11, nil, nil}, }, }, @@ -2751,7 +2751,7 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT IGNORE INTO keyless VALUES (1, 2);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE keyless ADD CONSTRAINT c UNIQUE(val)", @@ -2759,15 +2759,15 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{ }, { Query: "DELETE FROM keyless where pk = 1 and val = 2", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE keyless ADD CONSTRAINT c UNIQUE(val)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT IGNORE INTO keyless VALUES (1, 3)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, ExpectedWarning: mysql.ERDupEntry, }, }, @@ -2781,11 +2781,11 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE IGNORE keyless SET val = 2 where pk = 1", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "SELECT * FROM keyless ORDER BY pk", - Expected: []sql.Row{{1, 2}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 2}, {3, 3}}, }, { Query: "ALTER TABLE keyless ADD CONSTRAINT c UNIQUE(val)", @@ -2793,30 +2793,30 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{ }, { Query: "UPDATE IGNORE keyless SET val = 1 where pk = 1", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, ExpectedWarning: mysql.ERDupEntry, }, { Query: "ALTER TABLE keyless ADD CONSTRAINT c UNIQUE(val)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "UPDATE IGNORE keyless SET val = 3 where pk = 1", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * FROM keyless ORDER BY pk", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "UPDATE IGNORE keyless SET val = val + 1 ORDER BY pk", - Expected: []sql.Row{{newUpdateResult(3, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(3, 1)}}, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * FROM keyless ORDER BY pk", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 4}}, }, }, }, @@ -2835,19 +2835,19 @@ var InsertBrokenScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "one"}, {2, 1}, {3, "three"}, }, }, { Query: "SELECT * FROM y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 0}, {3, 3}, }, }, { Query: `INSERT IGNORE INTO y VALUES (4, "four")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, ExpectedWarning: mysql.ERTruncatedWrongValueForField, @@ -2866,7 +2866,7 @@ var InsertBrokenScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table auto1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"auto1", "CREATE TABLE `auto1` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " PRIMARY KEY (`pk`)\n" + @@ -2879,7 +2879,7 @@ var InsertBrokenScripts = []ScriptTest{ }, { Query: "show create table auto1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"auto1", "CREATE TABLE `auto1` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " PRIMARY KEY (`pk`)\n" + @@ -2888,13 +2888,13 @@ var InsertBrokenScripts = []ScriptTest{ }, { Query: "insert into auto1 values (null);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, InsertID: 2}}, }, }, { Query: "show create table auto1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"auto1", "CREATE TABLE `auto1` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " PRIMARY KEY (`pk`)\n" + @@ -2903,7 +2903,7 @@ var InsertBrokenScripts = []ScriptTest{ }, { Query: "select * from auto1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, @@ -2911,7 +2911,7 @@ var InsertBrokenScripts = []ScriptTest{ { Query: "show create table auto2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"auto2", "CREATE TABLE `auto2` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " `c` int NOT NULL,\n" + @@ -2925,7 +2925,7 @@ var InsertBrokenScripts = []ScriptTest{ }, { Query: "show create table auto2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"auto2", "CREATE TABLE `auto2` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " `c` int NOT NULL,\n" + @@ -2935,13 +2935,13 @@ var InsertBrokenScripts = []ScriptTest{ }, { Query: "insert into auto2 values (null, 2);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, InsertID: 2}}, }, }, { Query: "show create table auto2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"auto2", "CREATE TABLE `auto2` (\n" + " `pk` int NOT NULL AUTO_INCREMENT,\n" + " `c` int NOT NULL,\n" + @@ -2951,7 +2951,7 @@ var InsertBrokenScripts = []ScriptTest{ }, { Query: "select * from auto2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, }, diff --git a/enginetest/queries/join_queries.go b/enginetest/queries/join_queries.go index ab7aef1901..3464ed424b 100644 --- a/enginetest/queries/join_queries.go +++ b/enginetest/queries/join_queries.go @@ -21,7 +21,7 @@ import ( var JoinQueryTests = []QueryTest{ { Query: "select ab.* from ab join pq on a = p where b = (select y from xy where y in (select v from uv where v = b)) order by a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -30,7 +30,7 @@ var JoinQueryTests = []QueryTest{ }, { Query: "select * from ab where b in (select y from xy where y in (select v from uv where v = b));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -39,14 +39,14 @@ var JoinQueryTests = []QueryTest{ }, { Query: "select * from ab where a in (select y from xy where y in (select v from uv where v = a));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 2}, }, }, { Query: "select * from ab where a in (select x from xy where x in (select u from uv where u = a));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 2}, {0, 2}, @@ -57,7 +57,7 @@ var JoinQueryTests = []QueryTest{ // sqe index lookup must reference schema of outer scope after // join planning reorders (lookup uv xy) Query: `select y, (select 1 from uv where y = 1 and u = x) is_one from xy join uv on x = v order by y;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {0, nil}, {1, 1}, @@ -66,7 +66,7 @@ var JoinQueryTests = []QueryTest{ }, { Query: `select y, (select 1 where y = 1) is_one from xy join uv on x = v order by y`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {0, nil}, {1, 1}, @@ -75,7 +75,7 @@ var JoinQueryTests = []QueryTest{ }, { Query: `select * from (select y, (select 1 where y = 1) is_one from xy join uv on x = v) sq order by y`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {0, nil}, {1, 1}, @@ -85,23 +85,23 @@ var JoinQueryTests = []QueryTest{ //{ // TODO this is invalid, should error // Query: `with cte1 as (select u, v from cte2 join ab on cte2.u = b), cte2 as (select u,v from uv join ab on u = b where u in (2,3)) select * from xy where (x) not in (select u from cte1) order by 1`, - // Expected: []sql.Row{{0, 2}, {1, 0}, {3, 3}}, + // Expected: []sql.UntypedSqlRow{{0, 2}, {1, 0}, {3, 3}}, //}, { Query: `SELECT (SELECT 1 FROM (SELECT x FROM xy INNER JOIN uv ON (x = u OR y = v) LIMIT 1) r) AS s FROM xy`, - Expected: []sql.Row{{1}, {1}, {1}, {1}}, + Expected: []sql.UntypedSqlRow{{1}, {1}, {1}, {1}}, }, { Query: `select a from ab where exists (select 1 from xy where a =x)`, - Expected: []sql.Row{{0}, {1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { Query: "select a from ab where exists (select 1 from xy where a = x and b = 2 and y = 2);", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "select * from uv where exists (select 1, count(a) from ab where u = a group by a)", - Expected: []sql.Row{{0, 1}, {1, 1}, {2, 2}, {3, 2}}, + Expected: []sql.UntypedSqlRow{{0, 1}, {1, 1}, {2, 2}, {3, 2}}, }, { Query: ` @@ -112,7 +112,7 @@ select * from where exists (select * from pq where u = p) ) alias2 inner join xy on a = x;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 1, 0, 2}, {1, 2, 1, 1, 1, 0}, {2, 2, 2, 2, 2, 1}, @@ -128,7 +128,7 @@ where exists left join pq on u = p where a = u );`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 2}, {2, 2}, @@ -143,7 +143,7 @@ select * from where not exists (select * from uv where a = v) ) alias1 where exists (select * from xy where a = x);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {3, 1}, }}, @@ -156,7 +156,7 @@ select * from ) alias1 inner join uv on true inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 2, 0, 1, 0, 0}, {0, 2, 0, 2, 0, 1, 1, 1}, {0, 2, 0, 2, 0, 1, 2, 2}, @@ -173,7 +173,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, ) alias1 left join pq on alias1.a = p where exists (select * from uv where a = u);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 0}, }}, { @@ -183,22 +183,22 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, "INNER JOIN othertable ON (mytable.i = othertable.i2) " + "LEFT JOIN othertable T4 ON (mytable.i = T4.i2) " + "ORDER BY othertable.i2, T4.s2", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { // test cross join used as projected subquery expression Query: "select 1 as exprAlias, 2, 3, (select exprAlias + count(*) from one_pk_three_idx a cross join one_pk_three_idx b);", - Expected: []sql.Row{{1, 2, 3, 65}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 65}}, }, { // test cross join used in an IndexedInFilter subquery expression Query: "select pk, v1, v2 from one_pk_three_idx where v1 in (select max(a.v1) from one_pk_three_idx a cross join (select 'foo' from dual) b);", - Expected: []sql.Row{{7, 4, 4}}, + Expected: []sql.UntypedSqlRow{{7, 4, 4}}, }, { // test cross join used as subquery alias Query: "select * from (select a.v1, b.v2 from one_pk_three_idx a cross join one_pk_three_idx b) dt order by 1 desc, 2 desc limit 5;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 4}, {4, 3}, {4, 2}, @@ -208,7 +208,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.pk, c.v2 from one_pk_three_idx a cross join one_pk_three_idx b left join one_pk_three_idx c on b.pk = c.v2 where b.pk = 0 and a.v2 = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 0}, {2, 0}, {2, 0}, @@ -217,7 +217,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.pk, c.v2 from one_pk_three_idx a cross join one_pk_three_idx b right join one_pk_three_idx c on b.pk = c.v3 where b.pk = 0 and c.v2 = 0 order by a.pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 0}, {1, 0}, @@ -238,7 +238,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.pk, c.v2 from one_pk_three_idx a cross join one_pk_three_idx b inner join (select * from one_pk_three_idx where v2 = 0) c on b.pk = c.v3 where b.pk = 0 and c.v2 = 0 order by a.pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 0}, {1, 0}, @@ -259,7 +259,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.pk, c.v2 from one_pk_three_idx a cross join one_pk_three_idx b left join one_pk_three_idx c on b.pk = c.v1+1 where b.pk = 0 order by a.pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, nil}, {2, nil}, @@ -272,7 +272,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.pk, c.v2 from one_pk_three_idx a cross join one_pk_three_idx b right join one_pk_three_idx c on b.pk = c.v1 where b.pk = 0 and c.v2 = 0 order by a.pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 0}, {1, 0}, @@ -293,7 +293,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a CROSS JOIN mytable b RIGHT JOIN mytable c ON b.i = c.i + 1 order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil, 3, "third row"}, {1, "first row", 2, "second row", 1, "first row"}, {1, "first row", 3, "third row", 2, "second row"}, @@ -305,7 +305,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a CROSS JOIN mytable b LEFT JOIN mytable c ON b.i = c.i + 1 order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row", nil, nil}, {1, "first row", 2, "second row", 1, "first row"}, {1, "first row", 3, "third row", 2, "second row"}, @@ -319,7 +319,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.i, b.i, c.i from mytable a CROSS JOIN mytable b LEFT JOIN mytable c ON b.i+1 = c.i order by 1,2,3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 2}, {1, 2, 3}, {1, 3, nil}, @@ -332,7 +332,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }}, { Query: "select * from mytable a LEFT JOIN mytable b on a.i = b.i LEFT JOIN mytable c ON b.i = c.i + 1 order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row", nil, nil}, {2, "second row", 2, "second row", 1, "first row"}, {3, "third row", 3, "third row", 2, "second row"}, @@ -340,7 +340,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a LEFT JOIN mytable b on a.i = b.i RIGHT JOIN mytable c ON b.i = c.i + 1 order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil, 3, "third row"}, {2, "second row", 2, "second row", 1, "first row"}, {3, "third row", 3, "third row", 2, "second row"}, @@ -348,7 +348,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a RIGHT JOIN mytable b on a.i = b.i RIGHT JOIN mytable c ON b.i = c.i + 1 order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil, 3, "third row"}, {2, "second row", 2, "second row", 1, "first row"}, {3, "third row", 3, "third row", 2, "second row"}, @@ -356,7 +356,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a RIGHT JOIN mytable b on a.i = b.i LEFT JOIN mytable c ON b.i = c.i + 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row", nil, nil}, {2, "second row", 2, "second row", 1, "first row"}, {3, "third row", 3, "third row", 2, "second row"}, @@ -364,28 +364,28 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a LEFT JOIN mytable b on a.i = b.i LEFT JOIN mytable c ON b.i+1 = c.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row", 2, "second row"}, {2, "second row", 2, "second row", 3, "third row"}, {3, "third row", 3, "third row", nil, nil}, }}, { Query: "select * from mytable a LEFT JOIN mytable b on a.i = b.i RIGHT JOIN mytable c ON b.i+1 = c.i order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil, 1, "first row"}, {1, "first row", 1, "first row", 2, "second row"}, {2, "second row", 2, "second row", 3, "third row"}, }}, { Query: "select * from mytable a RIGHT JOIN mytable b on a.i = b.i RIGHT JOIN mytable c ON b.i+1= c.i order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil, 1, "first row"}, {1, "first row", 1, "first row", 2, "second row"}, {2, "second row", 2, "second row", 3, "third row"}, }}, { Query: "select * from mytable a RIGHT JOIN mytable b on a.i = b.i LEFT JOIN mytable c ON b.i+1 = c.i order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row", 2, "second row"}, {2, "second row", 2, "second row", 3, "third row"}, {3, "third row", 3, "third row", nil, nil}, @@ -393,7 +393,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a CROSS JOIN mytable b RIGHT JOIN mytable c ON b.i+1 = c.i order by 1,2,3,4,5,6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil, 1, "first row"}, {1, "first row", 1, "first row", 2, "second row"}, {1, "first row", 2, "second row", 3, "third row"}, @@ -405,7 +405,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "with a as (select a.i, a.s from mytable a CROSS JOIN mytable b) select * from a RIGHT JOIN mytable c on a.i+1 = c.i-1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, 1, "first row"}, {nil, nil, 2, "second row"}, {1, "first row", 3, "third row"}, @@ -415,7 +415,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.* from mytable a RIGHT JOIN mytable b on a.i = b.i+1 LEFT JOIN mytable c on a.i = c.i-1 RIGHT JOIN mytable d on b.i = d.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {3, "third row"}, {nil, nil}, @@ -423,7 +423,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.*,b.* from mytable a RIGHT JOIN othertable b on a.i = b.i2+1 LEFT JOIN mytable c on a.i = c.i-1 LEFT JOIN othertable d on b.i2 = d.i2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row", "third", 1}, {3, "third row", "second", 2}, {nil, nil, "first", 3}, @@ -431,7 +431,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.*,b.* from mytable a RIGHT JOIN othertable b on a.i = b.i2+1 RIGHT JOIN mytable c on a.i = c.i-1 LEFT JOIN othertable d on b.i2 = d.i2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil, nil}, {nil, nil, nil, nil}, {2, "second row", "third", 1}, @@ -439,27 +439,27 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select i.pk, j.v3 from one_pk_two_idx i JOIN one_pk_three_idx j on i.v1 = j.pk;", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 0}, {3, 2}, {4, 0}, {5, 3}, {6, 0}, {7, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 0}, {3, 2}, {4, 0}, {5, 3}, {6, 0}, {7, 4}}, }, { Query: "select i.pk, j.v3, k.c1 from one_pk_two_idx i JOIN one_pk_three_idx j on i.v1 = j.pk JOIN one_pk k on j.v3 = k.pk;", - Expected: []sql.Row{{0, 0, 0}, {1, 1, 10}, {2, 0, 0}, {3, 2, 20}, {4, 0, 0}, {5, 3, 30}, {6, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 1, 10}, {2, 0, 0}, {3, 2, 20}, {4, 0, 0}, {5, 3, 30}, {6, 0, 0}}, }, { Query: "select i.pk, j.v3 from (one_pk_two_idx i JOIN one_pk_three_idx j on((i.v1 = j.pk)));", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 0}, {3, 2}, {4, 0}, {5, 3}, {6, 0}, {7, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 0}, {3, 2}, {4, 0}, {5, 3}, {6, 0}, {7, 4}}, }, { Query: "select i.pk, j.v3, k.c1 from ((one_pk_two_idx i JOIN one_pk_three_idx j on ((i.v1 = j.pk))) JOIN one_pk k on((j.v3 = k.pk)));", - Expected: []sql.Row{{0, 0, 0}, {1, 1, 10}, {2, 0, 0}, {3, 2, 20}, {4, 0, 0}, {5, 3, 30}, {6, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 1, 10}, {2, 0, 0}, {3, 2, 20}, {4, 0, 0}, {5, 3, 30}, {6, 0, 0}}, }, { Query: "select i.pk, j.v3, k.c1 from (one_pk_two_idx i JOIN one_pk_three_idx j on ((i.v1 = j.pk)) JOIN one_pk k on((j.v3 = k.pk)));", - Expected: []sql.Row{{0, 0, 0}, {1, 1, 10}, {2, 0, 0}, {3, 2, 20}, {4, 0, 0}, {5, 3, 30}, {6, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {1, 1, 10}, {2, 0, 0}, {3, 2, 20}, {4, 0, 0}, {5, 3, 30}, {6, 0, 0}}, }, { Query: "select a.* from one_pk_two_idx a RIGHT JOIN (one_pk_two_idx i JOIN one_pk_three_idx j on i.v1 = j.pk) on a.pk = i.v1 LEFT JOIN (one_pk_two_idx k JOIN one_pk_three_idx l on k.v1 = l.pk) on a.pk = l.v2;", - Expected: []sql.Row{{0, 0, 0}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, @@ -473,7 +473,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.* from one_pk_two_idx a LEFT JOIN (one_pk_two_idx i JOIN one_pk_three_idx j on i.pk = j.v3) on a.pk = i.pk RIGHT JOIN (one_pk_two_idx k JOIN one_pk_three_idx l on k.v2 = l.v3) on a.v1 = l.v2;", - Expected: []sql.Row{{0, 0, 0}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, @@ -497,26 +497,26 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select a.* from mytable a join mytable b on a.i = b.i and a.i > 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, }, }, { Query: "select a.* from mytable a join mytable b on a.i = b.i and now() >= coalesce(NULL, NULL, now())", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}}, }, { Query: "select * from mytable a join niltable b on a.i = b.i and b <=> NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, nil, nil, nil}, }, }, { Query: "select * from mytable a join niltable b on a.i = b.i and s IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, nil, nil, nil}, {2, "second row", 2, 2, 1, nil}, {3, "third row", 3, nil, 0, nil}, @@ -524,20 +524,20 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a join niltable b on a.i = b.i and b IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row", 2, 2, 1, nil}, {3, "third row", 3, nil, 0, nil}, }, }, { Query: "select * from mytable a join niltable b on a.i = b.i and b != 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row", 2, 2, 1, nil}, }, }, { Query: "select * from mytable a join niltable b on a.i <> b.i and b != 0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row", 2, 2, 1, nil}, {1, "first row", 2, 2, 1, nil}, {3, "third row", 5, nil, 1, float64(5)}, @@ -547,7 +547,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from mytable a join niltable b on a.i <> b.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row", 1, nil, nil, nil}, {2, "second row", 1, nil, nil, nil}, {3, "third row", 2, 2, 1, nil}, @@ -570,7 +570,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, RIGHT JOIN niltable nt ON pk=nt.i RIGHT JOIN niltable nt2 ON pk=nt2.i - 1 ORDER BY 3;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, 1}, {1, 1, 2}, {2, 2, 3}, @@ -581,7 +581,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select * from ab full join pq on a = p order by 1,2,3,4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 0}, {1, 2, 1, 1}, {2, 2, 2, 2}, @@ -593,7 +593,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, select * from ab inner join uv on a = u full join pq on a = p order by 1,2,3,4,5,6;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 1, 0, 0}, {1, 2, 1, 1, 1, 1}, {2, 2, 2, 2, 2, 2}, @@ -605,7 +605,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, select * from ab full join pq on a = p left join xy on a = x order by 1,2,3,4,5,6;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 0, 0, 2}, {1, 2, 1, 1, 1, 0}, {2, 2, 2, 2, 2, 1}, @@ -614,7 +614,7 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: `select * from (select a,v from ab join uv on a=u) av join (select x,q from xy join pq on x = p) xq on av.v = xq.x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 1, 1}, {1, 1, 1, 1}, {2, 2, 2, 2}, @@ -623,17 +623,17 @@ inner join pq on true order by 1,2,3,4,5,6,7,8 limit 5;`, }, { Query: "select x from xy join uv on y = v join ab on y = b and u = -1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select a.* from one_pk_two_idx a LEFT JOIN (one_pk_two_idx i JOIN one_pk_three_idx j on i.pk = j.v3) on a.pk = i.pk LEFT JOIN (one_pk_two_idx k JOIN one_pk_three_idx l on k.v2 = l.v3) on a.v1 = l.v2;", - Expected: []sql.Row{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {3, 3, 3}, {4, 4, 4}, {5, 5, 5}, {6, 6, 6}, {7, 7, 7}, }, }, { Query: "with recursive a(x,y) as (select i,i from mytable where i < 4 union select a.x, mytable.i from a join mytable on a.x+1 = mytable.i limit 2) select * from a;", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: ` @@ -641,7 +641,7 @@ select * from ( (ab JOIN pq ON (1 = p)) LEFT OUTER JOIN uv on (2 = u) );`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 1, 1, 2, 2}, {1, 2, 1, 1, 2, 2}, {2, 2, 1, 1, 2, 2}, @@ -650,7 +650,7 @@ select * from ( }, { Query: "select * from (ab JOIN pq ON (a = 1)) where a in (1,2,3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 0, 0}, {1, 2, 1, 1}, {1, 2, 2, 2}, @@ -658,7 +658,7 @@ select * from ( }, { Query: "select * from (ab JOIN pq ON (a = p)) where a in (select a from ab)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 0}, {1, 2, 1, 1}, {2, 2, 2, 2}, @@ -666,7 +666,7 @@ select * from ( }, { Query: "select * from (ab JOIN pq ON (a = 1)) where a in (select a from ab)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 0, 0}, {1, 2, 1, 1}, {1, 2, 2, 2}, @@ -674,7 +674,7 @@ select * from ( }, { Query: "select * from (ab JOIN pq) where a in (select a from ab)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 0, 0}, {0, 2, 1, 1}, {0, 2, 2, 2}, @@ -694,7 +694,7 @@ select * from ( }, { Query: "select * from (ab JOIN pq ON (a = 1)) where a in (1,2,3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 0, 0}, {1, 2, 1, 1}, {1, 2, 2, 2}, @@ -702,7 +702,7 @@ select * from ( }, { Query: "select * from (ab JOIN pq ON (a = 1)) where a in (select a from ab)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 0, 0}, {1, 2, 1, 1}, {1, 2, 2, 2}, @@ -723,71 +723,71 @@ JSON_TABLE( '$[*]' COLUMNS(z float path '$.c', w float path '$.d') ) as t2 on w = 0;`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT * from xy_hasnull where y not in (SELECT b from ab_hasnull)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from xy_hasnull where y not in (SELECT b from ab)`, - Expected: []sql.Row{{1, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}}, }, { Query: `SELECT * from xy where y not in (SELECT b from ab_hasnull)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * from xy where null not in (SELECT b from ab)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from othertable join foo.othertable on othertable.s2 = 'third'", - Expected: []sql.Row{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, + Expected: []sql.UntypedSqlRow{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, }, { Query: "select * from othertable join foo.othertable on mydb.othertable.s2 = 'third'", - Expected: []sql.Row{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, + Expected: []sql.UntypedSqlRow{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, }, { Query: "select * from othertable join foo.othertable on foo.othertable.text = 'a'", - Expected: []sql.Row{{"third", 1, "a", 4}, {"second", 2, "a", 4}, {"first", 3, "a", 4}}, + Expected: []sql.UntypedSqlRow{{"third", 1, "a", 4}, {"second", 2, "a", 4}, {"first", 3, "a", 4}}, }, { Query: "select * from foo.othertable join othertable on othertable.s2 = 'third'", - Expected: []sql.Row{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, + Expected: []sql.UntypedSqlRow{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, }, { Query: "select * from foo.othertable join othertable on mydb.othertable.s2 = 'third'", - Expected: []sql.Row{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, + Expected: []sql.UntypedSqlRow{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, }, { Query: "select * from foo.othertable join othertable on foo.othertable.text = 'a'", - Expected: []sql.Row{{"a", 4, "third", 1}, {"a", 4, "second", 2}, {"a", 4, "first", 3}}, + Expected: []sql.UntypedSqlRow{{"a", 4, "third", 1}, {"a", 4, "second", 2}, {"a", 4, "first", 3}}, }, { Query: "select * from mydb.othertable join foo.othertable on othertable.s2 = 'third'", - Expected: []sql.Row{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, + Expected: []sql.UntypedSqlRow{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, }, { Query: "select * from mydb.othertable join foo.othertable on mydb.othertable.s2 = 'third'", - Expected: []sql.Row{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, + Expected: []sql.UntypedSqlRow{{"third", 1, "a", 4}, {"third", 1, "b", 2}, {"third", 1, "c", 0}}, }, { Query: "select * from mydb.othertable join foo.othertable on foo.othertable.text = 'a'", - Expected: []sql.Row{{"third", 1, "a", 4}, {"second", 2, "a", 4}, {"first", 3, "a", 4}}, + Expected: []sql.UntypedSqlRow{{"third", 1, "a", 4}, {"second", 2, "a", 4}, {"first", 3, "a", 4}}, }, { Query: "select * from foo.othertable join mydb.othertable on othertable.s2 = 'third'", - Expected: []sql.Row{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, + Expected: []sql.UntypedSqlRow{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, }, { Query: "select * from foo.othertable join mydb.othertable on mydb.othertable.s2 = 'third'", - Expected: []sql.Row{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, + Expected: []sql.UntypedSqlRow{{"a", 4, "third", 1}, {"b", 2, "third", 1}, {"c", 0, "third", 1}}, }, { Query: "select * from foo.othertable join mydb.othertable on foo.othertable.text = 'a'", - Expected: []sql.Row{{"a", 4, "third", 1}, {"a", 4, "second", 2}, {"a", 4, "first", 3}}, + Expected: []sql.UntypedSqlRow{{"a", 4, "third", 1}, {"a", 4, "second", 2}, {"a", 4, "first", 3}}, }, } @@ -813,7 +813,7 @@ var JoinScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: " SELECT `t1`.`username`, COUNT(`t1`.`id`) AS `ct` FROM ((SELECT `t2`.`id`, `t2`.`content`, `t3`.`username` FROM `tweet` AS `t2` INNER JOIN `users` AS `t3` ON (`t2`.`user_id` = `t3`.`id`) WHERE (`t3`.`username` = 'u3')) UNION (SELECT `t4`.`id`, `t4`.`content`, `t5`.`username` FROM `tweet` AS `t4` INNER JOIN `users` AS `t5` ON (`t4`.`user_id` = `t5`.`id`) WHERE (`t5`.`username` IN ('u2', 'u4')))) AS `t1` GROUP BY `t1`.`username` ORDER BY COUNT(`t1`.`id`) DESC;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -835,7 +835,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select i from t1 join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, @@ -847,77 +847,77 @@ var JoinScriptTests = []ScriptTest{ { Query: "select * from t1 join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 30}, {2, 20, 20}, }, }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, }, }, { Query: "select * from t1 join t2 using (j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {30, 3, 1}, {20, 2, 2}, }, }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 join t2 using (j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 30, 1, 30}, {2, 20, 2, 20}, }, }, { Query: "select * from t1 join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20}, }, }, { Query: "select * from t1 join t2 using (j, i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20}, }, }, { Query: "select * from t1 natural join t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20}, }, }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20, 2, 20}, }, }, { Query: "select i, j, t1.*, t2.*, t1.i, t1.j, t2.i, t2.j from t1 join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20, 2, 20, 2, 20, 2, 20, 2, 20}, }, }, { Query: "select i, j, t1.*, t2.*, t1.i, t1.j, t2.i, t2.j from t1 natural join t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20, 2, 20, 2, 20, 2, 20, 2, 20}, }, }, { Query: "select i, j, a.*, b.*, a.i, a.j, b.i, b.j from t1 a join t2 b using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20, 2, 20, 2, 20, 2, 20, 2, 20}, }, }, { Query: "select i, j, a.*, b.*, a.i, a.j, b.i, b.j from t1 a natural join t2 b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 20, 2, 20, 2, 20, 2, 20, 2, 20}, }, }, @@ -925,7 +925,7 @@ var JoinScriptTests = []ScriptTest{ // Left Join { Query: "select * from t1 left join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 30}, {2, 20, 20}, {3, 30, nil}, @@ -933,7 +933,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 left join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, {3, 30, nil, nil}, @@ -941,7 +941,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select * from t1 left join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, {2, 20}, {3, 30}, @@ -949,7 +949,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select * from t1 natural left join t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, {2, 20}, {3, 30}, @@ -957,7 +957,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 left join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, nil, nil}, {2, 20, 2, 20}, {3, 30, nil, nil}, @@ -965,7 +965,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 natural left join t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, nil, nil}, {2, 20, 2, 20}, {3, 30, nil, nil}, @@ -975,7 +975,7 @@ var JoinScriptTests = []ScriptTest{ // Right Join { Query: "select * from t1 right join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 30, 10}, {2, 20, 20}, {5, 50, nil}, @@ -983,7 +983,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 right join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, {nil, nil, 5, 50}, @@ -991,7 +991,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select * from t1 right join t2 using (j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {30, 1, 3}, {20, 2, 2}, {50, 5, nil}, @@ -999,7 +999,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 right join t2 using (j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 30, 1, 30}, {2, 20, 2, 20}, {nil, nil, 5, 50}, @@ -1007,7 +1007,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select * from t1 right join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 30}, {2, 20}, {5, 50}, @@ -1015,7 +1015,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select * from t1 natural right join t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 30}, {2, 20}, {5, 50}, @@ -1023,7 +1023,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 right join t2 using (i, j);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, 1, 30}, {2, 20, 2, 20}, {nil, nil, 5, 50}, @@ -1031,7 +1031,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j from t1 natural right join t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, 1, 30}, {2, 20, 2, 20}, {nil, nil, 5, 50}, @@ -1041,7 +1041,7 @@ var JoinScriptTests = []ScriptTest{ // Nested Join { Query: "select t1.i, t1.j, t2.i, t2.j, t3.i, t3.j from t1 join t2 using (i) join t3 on t1.i = t3.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30, 1, 200}, {2, 20, 2, 20, 2, 20}, }, @@ -1052,14 +1052,14 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "select t1.i, t1.j, t2.i, t2.j, t3.i, t3.j from t1 join t2 using (i) join t3 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30, 1, 200}, {2, 20, 2, 20, 2, 20}, }, }, { Query: "select * from t1 join t2 using (i) join t3 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 30, 200}, {2, 20, 20, 20}, }, @@ -1068,20 +1068,20 @@ var JoinScriptTests = []ScriptTest{ // Subquery Tests { Query: "select t1.i, t1.j, tt.i from t1 join (select 1 as i) tt using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1}, }, }, { Query: "select t1.i, t1.j, tt.i, tt.j from t1 join (select * from t2) tt using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, }, }, { Query: "select tt1.i, tt1.j, tt2.i, tt2.j from (select * from t1) tt1 join (select * from t2) tt2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, }, @@ -1090,21 +1090,21 @@ var JoinScriptTests = []ScriptTest{ // CTE Tests { Query: "with cte as (select * from t1) select cte.i, cte.j, t2.i, t2.j from cte join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, }, }, { Query: "with cte1 as (select * from t1), cte2 as (select * from t2) select cte1.i, cte1.j, cte2.i, cte2.j from cte1 join cte2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 1, 30}, {2, 20, 2, 20}, }, }, { Query: "WITH cte(i, j) AS (SELECT 1, 1 UNION ALL SELECT i, j from t1) SELECT cte.i, cte.j, t2.i, t2.j from cte join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1, 30}, {1, 10, 1, 30}, {2, 20, 2, 20}, @@ -1112,7 +1112,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "with recursive cte(i, j) AS (select 1, 1 union all select i + 1, j * 10 from cte where i < 3) select cte.i, cte.j, t2.i, t2.j from cte join t2 using (i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1, 30}, {2, 10, 2, 20}, }, @@ -1143,7 +1143,7 @@ var JoinScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM a LEFT JOIN b ON 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {1, 1}, {2, 2}, @@ -1152,7 +1152,7 @@ var JoinScriptTests = []ScriptTest{ }, { Query: "SELECT * FROM a RIGHT JOIN b ON 8+9;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {1, 1}, {2, 2}, @@ -1176,13 +1176,13 @@ var LateralJoinScriptTests = []ScriptTest{ // Lateral Cross Join { Query: "select * from t, lateral (select * from t1 where t.i = t1.j) as tt order by t.i, tt.j;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, { Query: "select * from t, lateral (select * from t1 where t.i != t1.j) as tt order by tt.j, t.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {3, 1}, {1, 4}, @@ -1195,21 +1195,21 @@ var LateralJoinScriptTests = []ScriptTest{ }, { Query: "select * from t, t1, lateral (select * from t1 where t.i != t1.j) as tt where t.i > t1.j and t1.j = tt.j order by t.i, t1.j, tt.j;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 1}, {3, 1, 1}, }, }, { Query: "select * from t, lateral (select * from t1 where t.i = t1.j) tt, lateral (select * from t1 where t.i != t1.j) as ttt order by t.i, tt.j, ttt.j;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 4}, {1, 1, 5}, }, }, { Query: `WITH RECURSIVE cte(x) AS (SELECT 1 union all SELECT x + 1 from cte where x < 5) SELECT * FROM cte, lateral (select * from t where t.i = cte.x) tt;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, {3, 3}, @@ -1217,7 +1217,7 @@ var LateralJoinScriptTests = []ScriptTest{ }, { Query: "select * from (select * from t, lateral (select * from t1 where t.i = t1.j) as tt order by t.i, tt.j) ttt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, @@ -1225,26 +1225,26 @@ var LateralJoinScriptTests = []ScriptTest{ // Lateral Inner Join { Query: "select * from t inner join lateral (select * from t1 where t.i != t1.j) as tt on t.i > tt.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {3, 1}, }, }, { Query: "select * from t inner join lateral (select * from t1 where t.i = t1.j) as tt on t.i = tt.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, { Query: "select * from t inner join lateral (select * from t1 where t.i = t1.j) as tt on t.i != tt.j", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // Lateral Left Join { Query: "select * from t left join lateral (select * from t1 where t.i = t1.j) as tt on t.i = tt.j order by t.i, tt.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, nil}, {3, nil}, @@ -1252,7 +1252,7 @@ var LateralJoinScriptTests = []ScriptTest{ }, { Query: "select * from t left join lateral (select * from t1 where t.i != t1.j) as tt on t.i + 1 = tt.j or t.i + 2 = tt.j order by t.i, tt.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, 4}, {3, 4}, @@ -1267,7 +1267,7 @@ var LateralJoinScriptTests = []ScriptTest{ }, { Query: "select * from t right join lateral (select * from t1) as tt on t.i > tt.j order by t.i, tt.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, 4}, {nil, 5}, {2, 1}, @@ -1332,7 +1332,7 @@ LATERAL ( select name as class_name from classes where grade.cid = classes.id ) class `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Elle", "ESG Studies", 97.0}, {"Latham", "Greek Mythology", 92.0}, }, @@ -1350,7 +1350,7 @@ LATERAL ( Assertions: []ScriptTestAssertion{ { Query: "select x, u from xy, lateral (select * from uv where y = u) uv;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 1}, {3, 2}, diff --git a/enginetest/queries/json_scripts.go b/enginetest/queries/json_scripts.go index 4d494a7f8b..04b56f88b6 100644 --- a/enginetest/queries/json_scripts.go +++ b/enginetest/queries/json_scripts.go @@ -27,100 +27,100 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select JSON_TYPE(CAST(1 AS JSON))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"INTEGER"}, }, }, { Query: `select JSON_TYPE("1")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"INTEGER"}, }, }, { Query: `select JSON_TYPE(CAST("1" AS JSON))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"INTEGER"}, }, }, { Query: `select JSON_TYPE("\"1\"")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"STRING"}, }, }, { Query: `select JSON_TYPE(CAST("\"1\"" AS JSON))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"STRING"}, }, }, { // Casting without quotes: `321.4` is parsed as a decimal, then wrapped in a JSON Document. Query: "select JSON_TYPE(CAST(321.4 AS JSON))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DECIMAL"}, }, }, { // Casting with quotes: The string value is parsed as JSON, resulting in a wrapped double. Query: `select JSON_TYPE("321.4")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { // Casting with quotes: The string value is parsed as JSON, resulting in a wrapped double. Query: `select JSON_TYPE(CAST("321.4" AS JSON))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `select JSON_TYPE("\"321.4\"")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"STRING"}, }, }, { Query: `select JSON_TYPE(CAST("\"321.4\"" AS JSON))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"STRING"}, }, }, { Query: "select JSON_TYPE(CAST(1e-1 AS JSON))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `select JSON_TYPE("1e-1")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `select JSON_TYPE(CAST("1e-1" AS JSON))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: "select JSON_TYPE(CAST(1.0e-1 AS JSON))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `select JSON_TYPE("1.0e-1")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `select JSON_TYPE(CAST("1.0e-1" AS JSON))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, @@ -136,7 +136,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x, JSON_TYPE(y) from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "DECIMAL"}, {1, "DOUBLE"}, }, @@ -153,7 +153,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select JSON_TYPE(y) from xy where x = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, @@ -164,13 +164,13 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select JSON_TYPE(JSON_EXTRACT(JSON_OBJECT('a', CAST(12.34 AS DECIMAL(4, 2))), "$.a"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DECIMAL"}, }, }, { Query: `select JSON_TYPE(JSON_EXTRACT(JSON_OBJECT('a', CAST(12 AS UNSIGNED)), "$.a"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, @@ -185,13 +185,13 @@ var JsonScripts = []ScriptTest{ }, { Query: `select json_type(json_value(cast(cast(12.34 as decimal) as json), '$', 'json'))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DECIMAL"}, }, }, { Query: `select json_type(json_value(cast(cast(12 as unsigned) as json), '$', 'json'))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, @@ -207,7 +207,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select json_value(y, '$.a', 'json') from xy`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {nil}, {types.MustJSON("[{\"b\": 1}, {\"c\": 2}]")}, @@ -217,19 +217,19 @@ var JsonScripts = []ScriptTest{ }, { Query: `select json_value(y, '$.a[0].b', 'signed') from xy where x = 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, }, }, { Query: `select json_value(y, '$.a[0].b') from xy where x = 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, //{ // Query: `select json_value(y, '$.a.b', 'signed') from xy where x = 2`, - // Expected: []sql.Row{ + // Expected: []sql.UntypedSqlRow{ // {nil}, // }, //}, @@ -245,7 +245,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select json_length(y) from xy`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {1}, @@ -259,7 +259,7 @@ var JsonScripts = []ScriptTest{ }, { Query: `select json_length(json_extract(y, "$.a")) from xy`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {nil}, {2}, @@ -269,19 +269,19 @@ var JsonScripts = []ScriptTest{ }, { Query: `select json_length(json_extract(y, "$.a.b")) from xy where x = 3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: `select json_length(y, "$.a.b") from xy where x = 3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: `select json_length(y, "$.a[0].b") from xy where x = 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -301,7 +301,7 @@ var JsonScripts = []ScriptTest{ Bindings: map[string]sqlparser.Expr{ "v1": sqlparser.NewStrVal([]byte("ZH")), }, - Expected: []sql.Row{{uint64(1), "Tom", types.JSONDocument{Val: []interface{}{"ZH", "EN"}}}}, + Expected: []sql.UntypedSqlRow{{uint64(1), "Tom", types.JSONDocument{Val: []interface{}{"ZH", "EN"}}}}, }, }, }, @@ -314,7 +314,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT JSON_ARRAYAGG(o_id) FROM (SELECT * FROM t ORDER BY o_id) as sub", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.MustJSON(`[1,2]`), }, @@ -331,7 +331,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT JSON_ARRAYAGG(o_id), JSON_ARRAYAGG(`attribute`) FROM (SELECT * FROM t ORDER BY o_id) as sub;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.MustJSON(`[1,2]`), types.MustJSON(`["color","fabric"]`), @@ -349,7 +349,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT c0, JSON_ARRAYAGG(`attribute`) FROM (SELECT * FROM t ORDER BY o_id) as sub GROUP BY c0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { 2, types.MustJSON(`["color","fabric"]`), @@ -358,7 +358,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "SELECT c0, JSON_ARRAYAGG(value) FROM (SELECT * FROM t ORDER BY o_id) as sub GROUP BY c0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { 2, types.MustJSON(`["red","silk"]`), @@ -376,7 +376,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT val, JSON_ARRAYAGG(o_id) FROM (SELECT * FROM t2 ORDER BY o_id) AS sub GROUP BY val", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { 1, types.MustJSON(`[1,2,3]`), @@ -406,7 +406,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT JSON_ARRAYAGG(o_id) FROM t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.MustJSON(`[]`), }, @@ -423,13 +423,13 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT pk, JSON_ARRAYAGG(c1) FROM x GROUP BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON(`[null]`)}, }, }, { Query: "SELECT JSON_ARRAYAGG(c1) FROM x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[null]`)}, }, }, @@ -448,7 +448,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT JSON_ARRAYAGG(pk) FROM (SELECT * FROM x ORDER BY pk) as sub GROUP BY c1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[1,2]`)}, {types.MustJSON(`[3,4]`)}, {types.MustJSON(`[5]`)}, @@ -468,7 +468,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT pk, JSON_ARRAYAGG(field) FROM (SELECT * FROM j ORDER BY pk) as sub GROUP BY field ORDER BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON(`[{"key1": {"key": "value"}}]`)}, {2, types.MustJSON(`[{"key1": "value1", "key2": "value2"}]`)}, {3, types.MustJSON(`[{"key1":{"key":[2,3]}}]`)}, @@ -486,7 +486,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT JSON_OBJECTAGG(val, o_id) FROM (SELECT * FROM t2 ORDER BY o_id) as sub GROUP BY val", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"1": 3}`)}, }, }, @@ -502,14 +502,14 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT c0, JSON_OBJECTAGG(`attribute`, value) FROM (SELECT * FROM t ORDER BY o_id) as sub GROUP BY c0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, types.MustJSON(`{"color": "red", "fabric": "silk"}`)}, {3, types.MustJSON(`{"color": "green", "shape": "square"}`)}, }, }, { Query: `SELECT c0, JSON_OBJECTAGG(c0, value) FROM (SELECT * FROM t ORDER BY o_id) as sub GROUP BY c0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, types.MustJSON(`{"2": "silk"}`)}, {3, types.MustJSON(`{"3": "square"}`)}, }, @@ -526,13 +526,13 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select JSON_OBJECTAGG(c0, value) from (SELECT * FROM t ORDER BY o_id) as sub`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"2": "silk", "3": "square"}`)}, }, }, { Query: "select JSON_OBJECTAGG(`attribute`, value) from (SELECT * FROM t ORDER BY o_id) as sub", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"color": "green", "fabric": "silk", "shape": "square"}`)}, }, }, @@ -547,7 +547,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `SELECT JSON_OBJECTAGG(pk, val) from test`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"1": null}`)}, }, }, @@ -564,7 +564,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `SELECT JSON_OBJECTAGG(c0, val) from (SELECT * FROM j ORDER BY pk) as sub`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"1": {"key1": {"key": [2, 3]}}, "2": ["a", 1]}`)}, }, }, @@ -578,7 +578,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `SELECT JSON_OBJECTAGG(pk, val) from test`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, @@ -634,42 +634,42 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select col1->'$.key1' from t;`, - Expected: []sql.Row{{types.MustJSON("1")}, {types.MustJSON("100")}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON("1")}, {types.MustJSON("100")}}, }, { Query: `select col1->>'$.key2' from t;`, - Expected: []sql.Row{{"abc"}, {"ghi"}}, + Expected: []sql.UntypedSqlRow{{"abc"}, {"ghi"}}, }, { Query: `select pk, col1 from t where col1->'$.key1' = 1;`, - Expected: []sql.Row{{1, types.MustJSON(`{"key1":1, "key2":"\"abc\""}`)}}, + Expected: []sql.UntypedSqlRow{{1, types.MustJSON(`{"key1":1, "key2":"\"abc\""}`)}}, }, { Query: `select pk, col1 from t where col1->>'$.key2' = 'abc';`, - Expected: []sql.Row{{1, types.MustJSON(`{"key1":1, "key2":"\"abc\""}`)}}, + Expected: []sql.UntypedSqlRow{{1, types.MustJSON(`{"key1":1, "key2":"\"abc\""}`)}}, }, { Query: `select * from t where col1->>'$.key2' = 'def';`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT col2->"$[3]", col2->>"$[3]" FROM t;`, - Expected: []sql.Row{{types.MustJSON("17"), "17"}, {types.MustJSON("17"), "17"}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON("17"), "17"}, {types.MustJSON("17"), "17"}}, }, { Query: `SELECT col2->"$[4]", col2->>"$[4]" FROM t where pk=1;`, - Expected: []sql.Row{{types.MustJSON("\"z\""), "z"}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON("\"z\""), "z"}}, }, { // TODO: JSON_Extract doesn't seem able to handle a JSON path expression that references a nested array // This errors with "object is not Slice" Skip: true, Query: `SELECT col2->>"$[3]", col2->>"$[4][0]" FROM t;`, - Expected: []sql.Row{{17, 44}, {17, "y"}}, + Expected: []sql.UntypedSqlRow{{17, 44}, {17, "y"}}, }, { Query: `SELECT k->"$.inner" from (SELECT j->"$.outer" AS k FROM t2) sq;`, - Expected: []sql.Row{{types.MustJSON("456")}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON("456")}}, }, }, }, @@ -686,7 +686,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from t order by col1 asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {3, types.MustJSON("null")}, {4, types.MustJSON("0")}, @@ -695,7 +695,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select * from t order by col1 desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, types.MustJSON("{}")}, {4, types.MustJSON("0")}, {3, types.MustJSON("null")}, @@ -745,7 +745,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select pk, cast(col1 as char) from t order by pk asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, `{"a": 1, "b": 2}`}, {2, `{"a": 1, "b": 2}`}, {3, `{"a": 1, "b": 2}`}, @@ -777,7 +777,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select pk, json_extract(col1, '$.items') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON("{\"1\":1,\"2\":2}")}, {2, nil}, {3, nil}, @@ -787,7 +787,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_extract(col1, '$') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON("{\"items\": {\"1\": 1, \"2\": 2}}")}, {2, nil}, {3, types.MustJSON("{}")}, @@ -797,7 +797,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_extract(col1, '$.items') is null from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, true}, {3, true}, @@ -807,7 +807,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_extract(col1, '$.items') <> null from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, nil}, {3, nil}, @@ -817,7 +817,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_extract(col1, '$.items.*') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON("[1, 2]")}, {2, nil}, {3, nil}, @@ -827,11 +827,11 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk from t where json_extract(col1, '$.items') is null;", - Expected: []sql.Row{{2}, {3}, {5}}, + Expected: []sql.UntypedSqlRow{{2}, {3}, {5}}, }, { Query: "select pk from t where json_extract(col1, '$.items') <> null;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -849,7 +849,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select pk, json_contains_path(col1, 'one', '$.a') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, false}, @@ -859,7 +859,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_contains_path(col1, 'one', '$.a', '$.x', '$.c.d') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, true}, @@ -869,7 +869,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_contains_path(col1, 'all', '$.a', '$.x') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, false}, @@ -879,7 +879,7 @@ var JsonScripts = []ScriptTest{ }, { Query: "select pk, json_contains_path(col1, 'all', '$.c.d', '$.x') from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, true}, @@ -898,22 +898,22 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT JSON_EXTRACT('0.4', '$')", - Expected: []sql.Row{{types.MustJSON(`0.4`)}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON(`0.4`)}}, }, { Query: "SELECT JSON_EXTRACT('0.4', '$') > 0;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT JSON_EXTRACT('0.4', '$') <= 0;", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT JSON_EXTRACT('0.4', '$') = 0;", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT JSON_EXTRACT('0.4', '$') = 0.4;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, }, }, @@ -926,7 +926,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select j->'$.x' = true from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, {false}, }, @@ -942,7 +942,7 @@ var JsonScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select pk, json_insert(col1, '$.x', 1), json_insert(col1, '$.y', 2) from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, types.MustJSON("{\"x\":1}"), types.MustJSON("{\"y\":2}")}, }, }, diff --git a/enginetest/queries/json_table_queries.go b/enginetest/queries/json_table_queries.go index 7059eae9af..901bdc5bf5 100644 --- a/enginetest/queries/json_table_queries.go +++ b/enginetest/queries/json_table_queries.go @@ -22,47 +22,47 @@ import ( var JSONTableQueryTests = []QueryTest{ { Query: "SELECT * FROM JSON_TABLE(NULL,'$[*]' COLUMNS(x int path '$.a')) as t;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM JSON_TABLE('{}','$[*]' COLUMNS(x int path '$.a')) as t;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM JSON_TABLE('{\"a\":1}','$.b' COLUMNS(x varchar(100) path '$.a')) as tt;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM JSON_TABLE('[{\"a\":1},{\"a\":2}]','$[*]' COLUMNS(x varchar(100) path '$.a')) as tt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, }, }, { Query: "SELECT * FROM JSON_TABLE('[{\"a\":1, \"b\":2},{\"a\":3, \"b\":4}]',\"$[*]\" COLUMNS(x int path '$.a', y int path '$.b')) as tt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {3, 4}, }, }, { Query: "SELECT * FROM JSON_TABLE('[{\"a\":1.5, \"b\":2.25},{\"a\":3.125, \"b\":4.0625}]','$[*]' COLUMNS(x float path '$.a', y float path '$.b')) as tt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1.5, 2.25}, {3.125, 4.0625}, }, }, { Query: "SELECT * FROM JSON_TABLE(concat('[{},','{}]'),'$[*]' COLUMNS(x varchar(100) path '$.a',y varchar(100) path '$.b')) as t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil}, {nil, nil}, }, }, { Query: "select * from JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) as t1 join JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) as t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {1, 2}, {2, 1}, @@ -71,7 +71,7 @@ var JSONTableQueryTests = []QueryTest{ }, { Query: "select * from JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) as t1 join one_pk order by x, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 0, 1, 2, 3, 4}, {1, 1, 10, 11, 12, 13, 14}, {1, 2, 20, 21, 22, 23, 24}, @@ -84,7 +84,7 @@ var JSONTableQueryTests = []QueryTest{ }, { Query: "select * from one_pk join JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) as t1 order by x, pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 1, 2, 3, 4, 1}, {1, 10, 11, 12, 13, 14, 1}, {2, 20, 21, 22, 23, 24, 1}, @@ -97,7 +97,7 @@ var JSONTableQueryTests = []QueryTest{ }, { Query: "select * from JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) as t1 union select * from JSON_TABLE('[{\"b\":3},{\"b\":4}]', '$[*]' COLUMNS(y int path '$.b')) as t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -106,20 +106,20 @@ var JSONTableQueryTests = []QueryTest{ }, { Query: "select * from one_pk where pk in (select x from JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) as t)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 11, 12, 13, 14}, {2, 20, 21, 22, 23, 24}, }, }, { Query: "select * from JSON_TABLE('[{\"a\":1},{\"a\":2}]', '$[*]' COLUMNS(x int path '$.a')) t1 where x in (select y from JSON_TABLE('[{\"b\":1},{\"b\":100}]', '$[*]' COLUMNS(y int path '$.b')) as t2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "with c as (select jt.a from json_table('[{\"a\":1,\"b\":2,\"c\":3},{\"a\":4,\"b\":5,\"c\":6},{\"a\":7,\"b\":8,\"c\":9}]', '$[*]' columns (a int path '$.a')) as jt) select * from c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {4}, {7}, @@ -127,7 +127,7 @@ var JSONTableQueryTests = []QueryTest{ }, { Query: "select * from json_table('[{\"a\":1,\"b\":2,\"c\":3},{\"a\":4,\"b\":5,\"c\":6},{\"a\":7,\"b\":8,\"c\":9}]', '$[*]' columns (a int path '$.a')) as jt\nunion\nselect * from json_table('[{\"a\":1,\"b\":2,\"c\":3},{\"a\":4,\"b\":5,\"c\":6},{\"a\":7,\"b\":8,\"c\":9}]', '$[*]' columns (b int path '$.b')) as jt\nunion\nselect * from json_table('[{\"a\":1,\"b\":2,\"c\":3},{\"a\":4,\"b\":5,\"c\":6},{\"a\":7,\"b\":8,\"c\":9}]', '$[*]' columns (c int path '$.c')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {4}, {7}, @@ -153,7 +153,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select names from organizations, JSON_TABLE(members, '$[*]' columns (names varchar(100) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bob"}, {"john"}, {"alice"}, @@ -166,7 +166,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "SELECT names, COUNT(names) AS count FROM organizations, JSON_TABLE(members, '$[*]' COLUMNS (names varchar(100) path '$')) AS jt GROUP BY names ORDER BY names asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"alice", 3}, {"bob", 1}, {"john", 2}, @@ -177,7 +177,7 @@ var JSONTableScriptTests = []ScriptTest{ { // qualified json column name Query: "select names from organizations, JSON_TABLE(organizations.members, '$[*]' columns (names varchar(100) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bob"}, {"john"}, {"alice"}, @@ -191,7 +191,7 @@ var JSONTableScriptTests = []ScriptTest{ { // aliased without as keyword Query: "select names from organizations o, JSON_TABLE(o.members, '$[*]' columns (names varchar(100) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bob"}, {"john"}, {"alice"}, @@ -205,7 +205,7 @@ var JSONTableScriptTests = []ScriptTest{ { // aliased table name Query: "SELECT jt.names, COUNT(jt.names) AS count FROM organizations AS o, JSON_TABLE(o.members, '$[*]' COLUMNS (names varchar(100) path '$')) AS jt GROUP BY jt.names ORDER BY jt.names asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"alice", 3}, {"bob", 1}, {"john", 2}, @@ -216,7 +216,7 @@ var JSONTableScriptTests = []ScriptTest{ { // aliased and qualified select Query: "select o.organization, jt.names from organizations o, JSON_TABLE(o.members, '$[*]' columns (names varchar(100) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"orgA", "bob"}, {"orgA", "john"}, {"orgB", "alice"}, @@ -229,7 +229,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "SELECT people.* FROM t1, JSON_TABLE(t1.json_col, '$.people[*]' COLUMNS (name VARCHAR(40) PATH '$.name', address VARCHAR(100) PATH '$.address')) people;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"John Smith", "780 Mission St, San Francisco, CA 94103"}, {"Sally Brown", "75 37th Ave S, St Cloud, MN 94103"}, {"John Johnson", "1262 Roosevelt Trail, Raymond, ME 04071"}, @@ -248,7 +248,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select o.organization, jt.names from organizations o CROSS JOIN JSON_TABLE(o.members, '$[*]' columns (names varchar(100) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"orgA", "bob"}, {"orgA", "john"}, {"orgB", "alice"}, @@ -257,7 +257,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "select o.organization, jt.names from organizations o NATURAL JOIN JSON_TABLE(o.members, '$[*]' columns (names varchar(100) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"orgA", "bob"}, {"orgA", "john"}, {"orgB", "alice"}, @@ -266,20 +266,20 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "select o.organization, jt.names from organizations o INNER JOIN JSON_TABLE(o.members, '$[*]' columns (names varchar(100) path '$')) as jt on o.organization = 'orgA';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"orgA", "bob"}, {"orgA", "john"}, }, }, { Query: `select (select jt.i from p inner join JSON_TABLE('[1,2,3]', '$[*]' columns (i int path '$')) as jt where p.i >= jt.i LIMIT 1);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: `select * from p left join JSON_TABLE('[1,2,3]', '$[*]' columns (i int path '$')) as jt on p.i > jt.i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, 1}, {3, 1}, @@ -288,7 +288,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: `select * from p right join JSON_TABLE('[1,2,3]', '$[*]' columns (i int path '$')) as jt on p.i > jt.i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {3, 1}, {3, 2}, @@ -306,19 +306,19 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select i, (select names from JSON_Table(t.j, '$[*]' columns (names varchar(100) path '$')) jt) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "test"}, }, }, { Query: "select (select jt.a from t, json_table('[\"abc\"]', '$[*]' columns (a varchar(10) path '$')) as jt)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select (select a from t, json_table(t.j, '$[*]' columns (a varchar(10) path '$')) as jt)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test"}, }, }, @@ -335,7 +335,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "with c as (select jt.a from tbl, json_table(tbl.j, '$[*]' columns (a int path '$.a')) as jt) select * from c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {4}, {7}, @@ -343,7 +343,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "with tt as (select * from t) select * from tt, json_table('[{\"a\":3}]', '$[*]' columns (a int path '$.a')) as jt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 3}, }, @@ -359,7 +359,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select t.j from t union select a from t, json_table(t.j, '$[*]' columns (a varchar(10) path '$')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"[\"test\"]"}, {"test"}, }, @@ -373,7 +373,7 @@ var JSONTableScriptTests = []ScriptTest{ `insert into tbl values (0, '[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]')`, }, Query: "select j1.a, j2.b, j3.c from tbl, json_table(tbl.j, '$[*]' columns (a int path '$.a')) as j1, json_table(tbl.j, '$[*]' columns (b int path '$.b')) as j2, json_table(tbl.j, '$[*]' columns (c int path '$.c')) as j3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2, 3}, {1, 2, 6}, {1, 2, 9}, @@ -414,7 +414,7 @@ var JSONTableScriptTests = []ScriptTest{ `insert into tbl values ('[{"a":5},{"a":6}]')`, }, Query: "select t1.x, t2.y, jt.a from t1, t2, tbl, json_table(tbl.j, '$[*]' columns (a int path '$.a')) as jt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, 5}, {1, 3, 6}, {1, 4, 5}, @@ -436,7 +436,7 @@ var JSONTableScriptTests = []ScriptTest{ `insert into tbl values ('[{"a":5},{"a":6}]')`, }, Query: "select t1.i, t2.y, jt.a from t1, t2, tbl, json_table(t1.x, '$[*]' columns (a int path '$.a')) as jt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, 5}, {1, 3, 6}, {1, 4, 5}, @@ -485,17 +485,17 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('{}', '$' COLUMNS( pk FOR ORDINALITY, c1 INT PATH '$.c1')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, }, }, { Query: "SELECT * FROM JSON_TABLE('{}', '$[*]' COLUMNS( pk FOR ORDINALITY, c1 INT PATH '$.c1')) as jt;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM JSON_TABLE('[{\"c1\": 333}, {\"c1\": 222}, {\"c1\": 111}]', '$[*]' COLUMNS( pk FOR ORDINALITY, c1 INT PATH '$.c1')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 333}, {2, 222}, {3, 111}, @@ -503,7 +503,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "SELECT * FROM JSON_TABLE('[{\"c1\": 333}, {\"c1\": 222}, {\"c1\": 111}]', '$[*]' COLUMNS( pk1 FOR ORDINALITY, pk2 FOR ORDINALITY, c1 INT PATH '$.c1')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 333}, {2, 2, 222}, {3, 3, 111}, @@ -517,19 +517,19 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('{}', '$' COLUMNS(c1 INT EXISTS PATH '$.c1')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "SELECT * FROM JSON_TABLE('{\"c1\": 123}', '$' COLUMNS(c1 INT EXISTS PATH '$.c1')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "SELECT * FROM JSON_TABLE('[{\"c1\": 333}, {\"c1\": 222}, {\"c1\": 111}, {\"notc1\": 123}]', '$[*]' COLUMNS(c1 INT EXISTS PATH '$.c1')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, {1}, @@ -538,7 +538,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "SELECT * FROM JSON_TABLE('[{\"a\": 333}, {\"b\": 222}, {\"a\": 111}, {\"b\": 123}]', '$[*]' COLUMNS(a INT EXISTS PATH '$.a', b INT EXISTS PATH '$.b')) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {0, 1}, {1, 0}, @@ -553,13 +553,13 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('{}', '$' COLUMNS(c1 INT PATH '$.c1' DEFAULT '123' ON ERROR)) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT * FROM JSON_TABLE('{\"c1\":\"abc\"}', '$' COLUMNS(c1 INT PATH '$.c1' DEFAULT '123' ON ERROR)) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -575,20 +575,20 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('{}', '$' COLUMNS(c1 INT PATH '$.c1' DEFAULT '123' ON EMPTY)) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, { Query: "SELECT * FROM JSON_TABLE('{\"notc1\": \"321321\"}', '$' COLUMNS(c1 INT PATH '$.c1' DEFAULT '123' ON EMPTY)) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, { // MySQL only supports string type for DEFAULT Query: "SELECT * FROM JSON_TABLE('{}', '$' COLUMNS(c1 INT PATH '$.c1' DEFAULT 123 ON EMPTY)) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -600,7 +600,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('{}', '$' COLUMNS(c1 INT PATH '$.c1' ERROR ON ERROR)) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, @@ -630,7 +630,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('[{\"a\": 1, \"b\": [11,111]}, {\"a\": 2, \"b\": [22,222]}]', '$[*]' COLUMNS(a INT PATH '$.a', NESTED PATH '$.b[*]' COLUMNS (b1 INT PATH '$'))) AS jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 11}, {1, 111}, {2, 22}, @@ -639,7 +639,7 @@ var JSONTableScriptTests = []ScriptTest{ }, { Query: "SELECT * FROM JSON_TABLE('[{\"a\": 1, \"b\": [11,111]}, {\"a\": 2, \"b\": [22,222]}]', '$[*]' COLUMNS( a INT PATH '$.a', NESTED PATH '$.b[*]' COLUMNS (b1 INT PATH '$', b2 INT PATH '$'))) AS jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 11, 11}, {1, 111, 111}, {2, 22, 22}, @@ -650,7 +650,7 @@ var JSONTableScriptTests = []ScriptTest{ { Query: "SELECT * FROM JSON_TABLE('[{\"a\": 1, \"b\": [11,111]}, {\"a\": 2, \"b\": [22,222]}]', '$[*]' COLUMNS( a INT PATH '$.a', NESTED PATH '$.b' COLUMNS (b1 INT PATH '$[0]', b2 INT PATH '$[1]'))) AS jt;", Skip: true, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 11, 111}, {2, 22, 222}, }, @@ -663,7 +663,7 @@ var JSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('[{\"a\": 1, \"b\": [11,111]}, {\"a\": 2, \"b\": [22,222]}]', '$[*]' COLUMNS( a INT PATH '$.a', NESTED PATH '$.b[*]' COLUMNS (b1 INT PATH '$'), NESTED PATH '$.b[*]' COLUMNS (b2 INT PATH '$'), NESTED PATH '$.b[*]' COLUMNS (b3 INT PATH '$'))) AS jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 11, nil, nil}, {1, 111, nil, nil}, {1, nil, 11, nil}, @@ -735,7 +735,7 @@ JSON_TABLE( ) ) as jt; `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 123, 123, 123, 1, 123, 123, 123, 1, 123, 123, 123, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil}, {1, 123, 123, 123, 1, 123, 123, 123, nil, nil, nil, nil, 1, 123, 123, 123, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil}, {1, 123, 123, 123, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1, 123, 123, 123, 1, 123, 123, 123, nil, nil, nil, nil}, @@ -755,7 +755,7 @@ JSON_TABLE( { // From MySQL docs Query: "SELECT * FROM JSON_TABLE('[{\"a\":\"3\"},{\"a\":2},{\"b\":1},{\"a\":0},{\"a\":[1,2]}]', \"$[*]\" COLUMNS (rowid FOR ORDINALITY, ac VARCHAR(100) PATH \"$.a\" DEFAULT '111' ON EMPTY DEFAULT '999' ON ERROR, aj JSON PATH \"$.a\" DEFAULT '{\"x\": 333}' ON EMPTY, bx INT EXISTS PATH \"$.b\")) AS tt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "3", types.MustJSON("3"), 0}, {2, "2", types.MustJSON("2"), 0}, {3, "111", types.MustJSON("{\"x\": 333}"), 1}, @@ -765,7 +765,7 @@ JSON_TABLE( }, { Query: "SELECT * FROM JSON_TABLE('[{\"x\":2,\"y\":\"8\"},{\"x\":\"3\",\"y\":\"7\"},{\"x\":\"4\",\"y\":6}]', \"$[*]\" COLUMNS (xval VARCHAR(100) PATH \"$.x\", yval VARCHAR(100) PATH \"$.y\")) AS jt1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2", "8"}, {"3", "7"}, {"4", "6"}, @@ -773,7 +773,7 @@ JSON_TABLE( }, { Query: "SELECT * FROM JSON_TABLE('[{\"x\":2,\"y\":\"8\"},{\"x\":\"3\",\"y\":\"7\"},{\"x\":\"4\",\"y\":6}]', \"$[1]\" COLUMNS (xval VARCHAR(100) PATH \"$.x\", yval VARCHAR(100) PATH \"$.y\")) AS jt1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"3", "7"}, }, }, @@ -807,13 +807,13 @@ var BrokenJSONTableScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM JSON_TABLE('[ {\"c1\": null} ]', '$[*]' COLUMNS( c1 INT PATH '$.c1' ERROR ON ERROR )) as jt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT * FROM JSON_TABLE('[{\"a\":\"3\"},{\"a\":2},{\"b\":1},{\"a\":0},{\"a\":[1,2]}]', \"$[*]\" COLUMNS(rowid FOR ORDINALITY, ac VARCHAR(100) PATH \"$.a\" DEFAULT '111' ON EMPTY DEFAULT '999' ON ERROR, aj JSON PATH \"$.a\" DEFAULT '{\"x\": 333}' ON EMPTY, bx INT EXISTS PATH \"$.b\")) AS tt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, "3", 0}, {2, 2, 2, 0}, {3, 111, types.MustJSON("{\"x\": 333}"), 1}, @@ -823,7 +823,7 @@ var BrokenJSONTableScriptTests = []ScriptTest{ }, { Query: "SELECT * FROM JSON_TABLE('[ {\"a\": 1, \"b\": [11,111]}, {\"a\": 2, \"b\": [22,222]}, {\"a\":3}]', '$[*]' COLUMNS(a INT PATH '$.a', NESTED PATH '$.b[*]' COLUMNS (b INT PATH '$'))) AS jt WHERE b IS NOT NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 11}, {1, 111}, {2, 22}, diff --git a/enginetest/queries/load_queries.go b/enginetest/queries/load_queries.go index a3faedab3e..307cdadf6e 100644 --- a/enginetest/queries/load_queries.go +++ b/enginetest/queries/load_queries.go @@ -31,7 +31,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{int8(1)}, {int8(2)}, {int8(3)}, {int8(4)}}, + Expected: []sql.UntypedSqlRow{{int8(1)}, {int8(2)}, {int8(3)}, {int8(4)}}, }, }, }, @@ -56,7 +56,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{int8(1), "hi"}, {int8(2), "hello"}}, + Expected: []sql.UntypedSqlRow{{int8(1), "hi"}, {int8(2), "hello"}}, }, }, }, @@ -69,7 +69,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{int8(1), "hi"}, {int8(2), "hello"}}, + Expected: []sql.UntypedSqlRow{{int8(1), "hi"}, {int8(2), "hello"}}, }, }, }, @@ -82,7 +82,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{"\"abc\"", int8(1)}, {"\"def\"", int8(2)}, {"\"hello\"", nil}}, + Expected: []sql.UntypedSqlRow{{"\"abc\"", int8(1)}, {"\"def\"", int8(2)}, {"\"hello\"", nil}}, }, }, }, @@ -95,7 +95,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{"\"abc\"", int8(1)}, {"\"def\"", int8(2)}, {"\"hello\"", nil}}, + Expected: []sql.UntypedSqlRow{{"\"abc\"", int8(1)}, {"\"def\"", int8(2)}, {"\"hello\"", nil}}, }, }, }, @@ -108,7 +108,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable ORDER BY pk", - Expected: []sql.Row{{1, nil}, {2, nil}, {3, nil}, {4, nil}}, + Expected: []sql.UntypedSqlRow{{1, nil}, {2, nil}, {3, nil}, {4, nil}}, }, }, }, @@ -133,7 +133,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM inmate_population_snapshots", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"8946", time.Date(2020, 5, 1, 0, 0, 0, 0, time.UTC), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 0, nil, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "https://www.website.gov", "https://www.website.gov/other.html", nil, nil}, {"8976", time.Date(2020, 5, 1, 0, 0, 0, 0, time.UTC), 196, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 0, 73, nil, nil, 123, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "https://www.website.gov", "https://www.website.gov/other.html", nil, 0}, {"8978", time.Date(2020, 5, 1, 0, 0, 0, 0, time.UTC), 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 0, nil, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "https://www.website.gov", "https://www.website.gov/other.html", nil, nil}, @@ -157,7 +157,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 50, 5}, {2, 50, 5}, {3, 50, 5}, @@ -165,7 +165,7 @@ var LoadDataScripts = []ScriptTest{ }, { Query: "SELECT * FROM test2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 50, 5}, {2, 50, 5}, {3, 50, 5}, @@ -173,7 +173,7 @@ var LoadDataScripts = []ScriptTest{ }, { Query: "SELECT * FROM test3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 9}, {2, 20, 19}, {3, 30, 29}, @@ -181,7 +181,7 @@ var LoadDataScripts = []ScriptTest{ }, { Query: "SELECT * FROM test4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 9}, {2, 20, 19}, {3, 30, 29}, @@ -200,7 +200,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 50, 5}, {2, 100, 5}, {3, 50, 5}, @@ -208,7 +208,7 @@ var LoadDataScripts = []ScriptTest{ }, { Query: "SELECT * FROM test2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 9}, {2, 100, 99}, {3, 30, 29}, @@ -226,7 +226,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "test"}, {2, "hello"}, }, @@ -243,7 +243,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "hi"}, {2, "hello"}, }, @@ -267,35 +267,35 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from lt1 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "def", "ghi"}, {"123", "mno", "pqr"}, }, }, { Query: "select * from lt2 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "456", "ghi"}, {"123", "456", "pqr"}, }, }, { Query: "select * from lt3 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "456", "789"}, {"123", "456", "789"}, }, }, { Query: "select * from lt4 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"321", "def", "ghi"}, {"321", "mno", "pqr"}, }, }, { Query: "select * from lt5 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "defdef", "ghi"}, {"jkl", "mnomno", "pqr"}, }, @@ -317,28 +317,28 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from lt1 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "def", "ghi"}, {"123", "mno", "pqr"}, }, }, { Query: "select * from lt2 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "ghi", "abc"}, {"123", "pqr", "jkl"}, }, }, { Query: "select * from lt3 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "abc", "def"}, {"123", "jkl", "mno"}, }, }, { Query: "select * from lt4 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", nil, "abc"}, {"123", nil, "jkl"}, }, @@ -359,7 +359,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from lt order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123", "456", "789"}, {"123", "456", "789"}, {"123", "456", "ghi"}, @@ -389,67 +389,67 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from lt1 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, "def", "ghi"}, {nil, "mno", "pqr"}, }, }, { Query: "select * from lt2 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", nil, "ghi"}, {"jkl", nil, "pqr"}, }, }, { Query: "select * from lt3 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "def", nil}, {"jkl", "mno", nil}, }, }, { Query: "select @i, @j, @k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"jkl", "mno", "pqr"}, }, }, { Query: "select * from lt4 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil, nil}, {nil, nil, nil}, }, }, { Query: "select @ii, @jj, @kk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"jkl", "mno", "pqr"}, }, }, { Query: "select * from lt5 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "def"}, {"jkl", "mno"}, }, }, { Query: "select @trash1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pqr"}, }, }, { Query: "select * from lt6 order by j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, {"mno"}, }, }, { Query: "select @trash2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pqr"}, }, }, @@ -472,35 +472,35 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from lt1 order by i, j, k", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi", "def", "abc"}, {"pqr", "mno", "jkl"}, }, }, { Query: "select * from lt2 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "ghighi"}, {"jkl", "pqrpqr"}, }, }, { Query: "select * from lt3 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "defghi"}, {"jkl", "mnopqr"}, }, }, { Query: "select * from lt4 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "defghi"}, {"jkl", "mnopqr"}, }, }, { Query: "select * from lt5 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def", "abc"}, {"mno", "jkl"}, }, @@ -532,7 +532,7 @@ var LoadDataScripts = []ScriptTest{ { Skip: true, // escaped column names are ok Query: "LOAD DATA INFILE './testdata/test9.txt' INTO TABLE lt(i, @j, `@@k`)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc", "def", "ghi"}, {"jkl", "mno", "pqr"}, }, @@ -548,7 +548,7 @@ var LoadDataScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select id, length(lt) from t order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 65535}, {2, 100000}, {3, 1000000}, @@ -645,7 +645,7 @@ var LoadDataFailingScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{"hi"}, {"hello"}, {nil}, {"TryN"}, {fmt.Sprintf("%c", 26)}, {fmt.Sprintf("%c", 0)}, {"new\n"}}, + Expected: []sql.UntypedSqlRow{{"hi"}, {"hello"}, {nil}, {"TryN"}, {fmt.Sprintf("%c", 26)}, {fmt.Sprintf("%c", 0)}, {"new\n"}}, }, }, }, @@ -658,7 +658,7 @@ var LoadDataFailingScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{int8(1)}, {int8(2)}, {int8(3)}, {int8(4)}}, + Expected: []sql.UntypedSqlRow{{int8(1)}, {int8(2)}, {int8(3)}, {int8(4)}}, }, }, }, @@ -671,7 +671,7 @@ var LoadDataFailingScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{nil, 0}, {nil, 0}}, + Expected: []sql.UntypedSqlRow{{nil, 0}, {nil, 0}}, }, }, }, @@ -684,7 +684,7 @@ var LoadDataFailingScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{"hi", 1}, {"hello", nil}}, + Expected: []sql.UntypedSqlRow{{"hi", 1}, {"hello", nil}}, }, }, }, @@ -697,7 +697,7 @@ var LoadDataFailingScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from loadtable", - Expected: []sql.Row{{1, "hi"}, {nil, "hello"}}, + Expected: []sql.UntypedSqlRow{{1, "hi"}, {nil, "hello"}}, }, }, }, diff --git a/enginetest/queries/logic_test_scripts.go b/enginetest/queries/logic_test_scripts.go index 08013a0484..51107a276a 100644 --- a/enginetest/queries/logic_test_scripts.go +++ b/enginetest/queries/logic_test_scripts.go @@ -39,7 +39,7 @@ var SQLLogicJoinTests = []ScriptTest{ { // SQLLogicTests incorrectly reports this as an error Query: "SELECT * FROM foo NATURAL JOIN bar", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0}, {2, 2, 2.0, 2.0}, {3, 3, 3.0, 3.0}, @@ -47,7 +47,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo JOIN bar USING (b);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1, 1.0, 1}, {2, 2, 2.0, 2.0, 2, 2.0, 2}, {3, 3, 3.0, 3.0, 3, 3.0, 3}, @@ -55,7 +55,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo JOIN bar USING (a, b);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1.0, 1}, {2, 2, 2.0, 2.0, 2.0, 2}, {3, 3, 3.0, 3.0, 3.0, 3}, @@ -63,7 +63,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo JOIN bar USING (a, b, c);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1}, {2, 2, 2.0, 2.0, 2}, {3, 3, 3.0, 3.0, 3}, @@ -71,7 +71,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo JOIN bar ON foo.b = bar.b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1, 1.0, 1.0, 1}, {2, 2, 2.0, 2.0, 2, 2.0, 2.0, 2}, {3, 3, 3.0, 3.0, 3, 3.0, 3.0, 3}, @@ -79,7 +79,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo JOIN bar ON foo.a = bar.a AND foo.b = bar.b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1, 1.0, 1.0, 1}, {2, 2, 2.0, 2.0, 2, 2.0, 2.0, 2}, {3, 3, 3.0, 3.0, 3, 3.0, 3.0, 3}, @@ -87,7 +87,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo, bar WHERE foo.b = bar.b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1, 1.0, 1.0, 1}, {2, 2, 2.0, 2.0, 2, 2.0, 2.0, 2}, {3, 3, 3.0, 3.0, 3, 3.0, 3.0, 3}, @@ -95,7 +95,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT * FROM foo, bar WHERE foo.a = bar.a AND foo.b = bar.b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1.0, 1.0, 1, 1.0, 1.0, 1}, {2, 2, 2.0, 2.0, 2, 2.0, 2.0, 2}, {3, 3, 3.0, 3.0, 3, 3.0, 3.0, 3}, @@ -115,7 +115,7 @@ var SQLLogicJoinTests = []ScriptTest{ { Skip: true, Query: "SELECT s, str1.s, str2.s FROM str1 INNER JOIN str2 USING(s);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"A", "A", "A"}, {"a", "a", "A"}, {"c", "c", "C"}, @@ -123,7 +123,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT s, str1.s, str2.s FROM str1 LEFT OUTER JOIN str2 USING(s)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a", "a", "A"}, {"A", "A", "A"}, {"c", "c", "C"}, @@ -132,7 +132,7 @@ var SQLLogicJoinTests = []ScriptTest{ }, { Query: "SELECT s, str1.s, str2.s FROM str1 RIGHT OUTER JOIN str2 USING(s)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"A", "A", "A"}, {"A", "a", "A"}, {"B", nil, "B"}, @@ -151,7 +151,7 @@ var SQLLogicJoinTests = []ScriptTest{ { // Syntax error Query: "INSERT INTO xy (VALUES ROW(1, 1))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -168,7 +168,7 @@ var SQLLogicJoinTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT abcd.*, dxby.* FROM abcd INNER JOIN dxby USING (d, b);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2, 2, 2, 2, 2, 2, 2}, }, }, @@ -189,7 +189,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM c WHERE EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -198,14 +198,14 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE NOT EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "MA"}, {5, nil}, }, }, { Query: "SELECT * FROM c WHERE EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id) OR NOT EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {3, "MA"}, @@ -216,33 +216,33 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id AND c.bill='TX');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "TX"}, {4, "TX"}, }, }, { Query: "SELECT * FROM c WHERE 'WY' IN (SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, "TX"}, }, }, { Query: "SELECT * FROM c WHERE 'WY' IN (SELECT ship FROM o WHERE o.c_id=c.c_id) OR 'WA' IN (SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, "TX"}, {6, "FL"}, }, }, { Query: "SELECT * FROM c WHERE 'CA' IN (SELECT ship FROM o WHERE o.c_id=c.c_id) AND 'TX' NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, }, }, { Query: "SELECT * FROM c WHERE bill IN (SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, }, @@ -250,7 +250,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill = ALL(SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {5, nil}, @@ -258,7 +258,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE bill NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "MA"}, {5, nil}, {6, "FL"}, @@ -266,7 +266,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE bill NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "MA"}, {4, "TX"}, {5, nil}, @@ -275,7 +275,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE bill NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NULL);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {5, nil}, @@ -285,7 +285,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill < ANY(SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, "TX"}, {6, "FL"}, }, @@ -293,7 +293,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill < SOME(SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, "TX"}, {6, "FL"}, }, @@ -301,14 +301,14 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE (bill < ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "TX"}, }, }, { Skip: true, Query: "SELECT * FROM c WHERE (bill < ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {4, "TX"}, @@ -319,21 +319,21 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill > ANY(SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "TX"}, }, }, { Skip: true, Query: "SELECT * FROM c WHERE (bill > ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, "TX"}, }, }, { Skip: true, Query: "SELECT * FROM c WHERE (bill > ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {4, "TX"}, @@ -344,7 +344,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill = ANY(SELECT ship FROM o);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {4, "TX"}, @@ -355,7 +355,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill = ANY(SELECT ship FROM o) OR bill IS NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {4, "TX"}, @@ -364,28 +364,28 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE (NULL IN (SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "MA"}, {5, nil}, }, }, { Query: "SELECT * FROM c WHERE (NULL NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "MA"}, {5, nil}, }, }, { Query: "SELECT * FROM c WHERE (replace(bill, 'TX', 'WY') IN (SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NULL;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "TX"}, }, }, { Skip: true, Query: "SELECT * FROM c WHERE bill = ALL(SELECT ship FROM o WHERE o.c_id=c.c_id) OR EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id AND ship='WY');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {3, "MA"}, {4, "TX"}, @@ -395,13 +395,13 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM c WHERE bill = ALL(SELECT ship FROM o WHERE o.c_id=c.c_id) AND EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, }, }, { Query: "SELECT * FROM c WHERE (SELECT count(*) FROM o WHERE o.c_id=c.c_id) > 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -409,14 +409,14 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE (SELECT count(ship) FROM o WHERE o.c_id=c.c_id) > 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, }, }, { Query: "SELECT c.c_id, o.o_id, o.ship FROM c INNER JOIN o ON o.ship = (SELECT min(o.ship) FROM o WHERE o.c_id=c.c_id) ORDER BY c.c_id, o.o_id, o.ship;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, "CA"}, {1, 20, "CA"}, {1, 30, "CA"}, @@ -431,7 +431,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c.c_id, o.o_id, o.ship FROM c INNER JOIN o ON c.c_id=o.c_id AND o.ship = (SELECT min(o.ship) FROM o WHERE o.c_id=c.c_id) ORDER BY c.c_id, o.o_id, o.ship;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, "CA"}, {1, 20, "CA"}, {1, 30, "CA"}, @@ -442,7 +442,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c.c_id, o.ship, count(*) FROM c INNER JOIN o ON c.c_id=o.c_id WHERE (SELECT count(*) FROM o AS o2 WHERE o2.ship = o.ship AND o2.c_id = o.c_id) > (SELECT count(*) FROM o AS o2 WHERE o2.ship = o.ship AND o2.c_id <> o.c_id) GROUP BY c.c_id, o.ship;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA", 3}, {2, "TX", 1}, {4, "WY", 1}, @@ -451,13 +451,13 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE (SELECT count(*) FROM o WHERE o.c_id=c.c_id) > 1 AND (SELECT max(ship) FROM o WHERE o.c_id=c.c_id) = 'CA';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, }, }, { Query: "SELECT * FROM c WHERE (SELECT count(*) FROM o WHERE o.c_id=c.c_id) > 1 OR EXISTS(SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NULL);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -465,21 +465,21 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM c WHERE bill=(SELECT max(ship) FROM o WHERE c_id=c2.c_id AND c_id=c.c_id));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, }, }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM c WHERE bill=(SELECT min(ship) FROM o WHERE c_id=c2.c_id AND c_id=c.c_id));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, }, }, { Skip: true, Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM c WHERE bill=(SELECT coalesce(min(ship), bill) FROM o WHERE c_id=c2.c_id AND c_id=c.c_id));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {3, "MA"}, @@ -490,7 +490,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM (SELECT c_id, coalesce(ship, bill) AS state FROM o WHERE c_id=c2.c_id) AS o WHERE state=bill);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -498,7 +498,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM (SELECT c_id, coalesce(ship, bill) AS state FROM o) AS o WHERE c_id = c2.c_id AND state = bill);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -506,7 +506,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM (SELECT c_id, ship AS state FROM o) AS o WHERE c_id = c2.c_id AND coalesce(state, bill) = bill);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -514,7 +514,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT c_id, ship FROM o WHERE c_id = c2.c_id AND coalesce(ship, bill) = bill);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -522,7 +522,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill FROM c AS c2 WHERE EXISTS(SELECT * FROM (SELECT c_id, ship AS state FROM o) AS o WHERE c_id = c2.c_id AND coalesce(state, bill) = bill);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -530,14 +530,14 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE (SELECT ship FROM o WHERE o.c_id=c.c_id ORDER BY ship LIMIT 1) IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {6, "FL"}, }, }, { Query: "SELECT * FROM c WHERE (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL ORDER BY ship LIMIT 1)='CA' OR (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL ORDER BY ship LIMIT 1)='WY' ORDER BY c_id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -545,29 +545,29 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE (SELECT o_id FROM o WHERE o.c_id=c.c_id AND ship='WY')=4;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM c WHERE c_id=(SELECT c_id FROM o WHERE ship='CA' AND c_id<>1 AND bill='TX');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "TX"}, }, }, { Query: "SELECT * FROM c WHERE c_id=(SELECT c_id FROM o WHERE ship='WA' AND bill='FL')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6, "FL"}, }, }, { Query: "SELECT * FROM c WHERE (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL AND (SELECT count(*) FROM o WHERE o.c_id=c.c_id)<=1)='WA';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6, "FL"}, }, }, { Query: "SELECT c_id, EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, false}, @@ -578,7 +578,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, NOT EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, true}, @@ -589,7 +589,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id) OR NOT EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, true}, @@ -600,7 +600,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id AND c.bill='TX') FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, true}, {3, false}, @@ -611,7 +611,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, 'WY' IN (SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, nil}, {3, false}, @@ -622,7 +622,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, 'WY' IN (SELECT ship FROM o WHERE o.c_id=c.c_id) OR 'WA' IN (SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, nil}, {3, false}, @@ -633,7 +633,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, 'CA' IN (SELECT ship FROM o WHERE o.c_id=c.c_id) AND 'TX' NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, false}, {3, false}, @@ -644,7 +644,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill IN (SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, false}, @@ -656,7 +656,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill = ALL(SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 0}, {3, 1}, @@ -667,7 +667,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, true}, @@ -678,7 +678,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, true}, @@ -689,7 +689,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, bill NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NULL) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, nil}, {3, true}, @@ -701,7 +701,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill < ANY(SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, nil}, {3, false}, @@ -713,7 +713,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, (bill < ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, true}, {3, false}, @@ -725,7 +725,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, (bill < ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, false}, {3, true}, @@ -737,7 +737,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill > ANY(SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, true}, {3, false}, @@ -749,7 +749,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, (bill > ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, false}, @@ -761,7 +761,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, (bill > ANY(SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, true}, @@ -773,7 +773,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill = ANY(SELECT ship FROM o WHERE ship IS NOT NULL) FROM c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, false}, @@ -785,7 +785,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill = ANY(SELECT ship FROM o WHERE ship IS NOT NULL) OR bill IS NULL FROM c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, false}, @@ -796,7 +796,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, (NULL IN (SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, true}, @@ -807,7 +807,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, (NULL NOT IN (SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NOT NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, false}, {3, true}, @@ -818,7 +818,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, (replace(bill, 'TX', 'WY') IN (SELECT ship FROM o WHERE o.c_id=c.c_id)) IS NULL FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, false}, {2, true}, {3, false}, @@ -830,7 +830,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill = ALL(SELECT ship FROM o WHERE o.c_id=c.c_id) OR EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id AND ship='WY') FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, false}, {3, true}, @@ -842,7 +842,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT c_id, bill = ALL(SELECT ship FROM o WHERE o.c_id=c.c_id) AND EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, false}, {3, false}, @@ -853,7 +853,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM c WHERE (SELECT min(ship) FROM o WHERE o.c_id=c.c_id) IN (SELECT ship FROM o WHERE o.c_id=c.c_id);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA"}, {2, "TX"}, {4, "TX"}, @@ -862,7 +862,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_id, (SELECT min(ship) FROM o WHERE o.c_id=c.c_id) IN (SELECT ship FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, false}, @@ -873,13 +873,13 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT max((SELECT count(*) FROM o WHERE o.c_id=c.c_id)) FROM c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "SELECT c_id, (SELECT count(*) FROM o WHERE o.c_id=c.c_id) FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 3}, {3, 0}, @@ -890,7 +890,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT s.st, (SELECT count(*) FROM c WHERE c.bill=s.st) + (SELECT count(*) FROM o WHERE o.ship=s.st) FROM (SELECT c.bill AS st FROM c UNION SELECT o.ship AS st FROM o) s ORDER BY s.st;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, 0}, {"CA", 5}, {"FL", 1}, @@ -902,7 +902,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c.c_id, o.ship, count(*) AS cust, (SELECT count(*) FROM o AS o2 WHERE o2.ship = o.ship AND o2.c_id <> c.c_id) AS other FROM c INNER JOIN o ON c.c_id=o.c_id GROUP BY c.c_id, o.ship;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA", 3, 1}, {2, "CA", 1, 3}, {2, "TX", 1, 0}, @@ -914,7 +914,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c.c_id, o.o_id, (SELECT max(CASE WHEN c2.bill > o2.ship THEN c2.bill ELSE o2.ship END) FROM c AS c2, o AS o2 WHERE c2.c_id=o2.c_id AND c2.c_id=c.c_id) FROM c LEFT JOIN o ON c.c_id=o.c_id ORDER BY c.c_id, o.o_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, "CA"}, {1, 20, "CA"}, {1, 30, "CA"}, @@ -930,7 +930,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c.c_id, (SELECT ship FROM o WHERE o.c_id=c.c_id ORDER BY ship LIMIT 1) IS NOT NULL FROM c ORDER BY c.c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, false}, {3, false}, @@ -941,7 +941,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c.c_id, (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL ORDER BY ship LIMIT 1)='CA' OR (SELECT ship FROM o WHERE o.c_id=c.c_id AND ship IS NOT NULL ORDER BY ship LIMIT 1)='WY' FROM c ORDER BY c_id;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, true}, {2, true}, {3, nil}, @@ -953,7 +953,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT * FROM (SELECT c_id AS c_c_id, bill FROM c) sq1, LATERAL (SELECT row_number() OVER () AS rownum FROM o WHERE c_id = c_c_id) sq2 ORDER BY c_c_id, bill, rownum;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "CA", 1}, {1, "CA", 2}, {1, "CA", 3}, @@ -967,7 +967,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT * FROM (SELECT bill FROM c) sq1, LATERAL (SELECT row_number() OVER (PARTITION BY bill) AS rownum FROM o WHERE ship = bill) sq2 ORDER BY bill, rownum;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"CA", 1}, {"CA", 2}, {"CA", 3}, @@ -979,7 +979,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ { Skip: true, Query: "SELECT (SELECT count(*) FROM o WHERE o.c_id=c.c_id) AS order_cnt, count(*) AS cust_cnt FROM c GROUP BY (SELECT count(*) FROM o WHERE o.c_id=c.c_id) ORDER BY (SELECT count(*) FROM o WHERE o.c_id=c.c_id) DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2}, {2, 1}, {1, 1}, @@ -988,13 +988,13 @@ var SQLLogicSubqueryTests = []ScriptTest{ }, { Query: "SELECT c_cnt, o_cnt, c_cnt + o_cnt AS total FROM (VALUES ROW((SELECT count(*) FROM c), (SELECT count(*) FROM o))) AS v(c_cnt, o_cnt) WHERE c_cnt > 0 AND o_cnt > 0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6, 9, 15}, }, }, { Query: "SELECT c.c_id, o.o_id FROM c INNER JOIN o ON c.c_id=o.c_id AND EXISTS(SELECT * FROM o WHERE o.c_id=c.c_id AND ship IS NULL);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 40}, {2, 50}, {2, 60}, @@ -1029,7 +1029,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ // { // Skip: true, // Query: "SELECT users.id AS users_id, users.name AS users_name, stuff_1.id AS stuff_1_id, stuff_1.date AS stuff_1_date, stuff_1.user_id AS stuff_1_user_id FROM users LEFT JOIN stuff AS stuff_1 ON users.id = stuff_1.user_id AND stuff_1.id = (SELECT stuff_2.id FROM stuff AS stuff_2 WHERE stuff_2.user_id = users.id ORDER BY stuff_2.date DESC LIMIT 1) ORDER BY users.name;", - // Expected: []sql.Row{ + // Expected: []sql.UntypedSqlRow{ // {1, "user1", 2, 2007-12-15, 1}, // {2, "user2", 4, 2008-01-15, 2}, // {3, "user3", 5, 2007-06-15, 3}, @@ -1052,7 +1052,7 @@ var SQLLogicSubqueryTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t_48638 WHERE `key` IN (WITH v AS (SELECT level1.`value` AS `value`, level1.`key`AS level1, level2.`key` AS level2, level3.`key` AS level3 FROM t_48638 AS level2 RIGHT JOIN (SELECT * FROM t_48638 WHERE `value` = 4) AS level1 ON level1.`value` = level2.`key` LEFT JOIN (SELECT * FROM t_48638) AS level3 ON level3.`key` = level2.`value` ) SELECT v.level1 FROM v WHERE v.level1 IS NOT NULL UNION ALL SELECT v.level2 FROM v WHERE v.level2 IS NOT NULL UNION ALL SELECT v.level3 FROM v WHERE v.level3 IS NOT NULL);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {1, 4}, {3, 2}, diff --git a/enginetest/queries/mysql_db_queries.go b/enginetest/queries/mysql_db_queries.go index 90f8fccbb4..0053755ec7 100644 --- a/enginetest/queries/mysql_db_queries.go +++ b/enginetest/queries/mysql_db_queries.go @@ -22,19 +22,19 @@ var MySqlDbTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table mysql.help_topic;", - Expected: []sql.Row{{"help_topic", "CREATE TABLE `help_topic` (\n `help_topic_id` bigint unsigned NOT NULL,\n `name` char(64) COLLATE utf8mb3_general_ci NOT NULL,\n `help_category_id` tinyint unsigned NOT NULL,\n `description` text COLLATE utf8mb3_general_ci NOT NULL,\n `example` text COLLATE utf8mb3_general_ci NOT NULL,\n `url` text COLLATE utf8mb3_general_ci NOT NULL,\n PRIMARY KEY (`help_topic_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, + Expected: []sql.UntypedSqlRow{{"help_topic", "CREATE TABLE `help_topic` (\n `help_topic_id` bigint unsigned NOT NULL,\n `name` char(64) COLLATE utf8mb3_general_ci NOT NULL,\n `help_category_id` tinyint unsigned NOT NULL,\n `description` text COLLATE utf8mb3_general_ci NOT NULL,\n `example` text COLLATE utf8mb3_general_ci NOT NULL,\n `url` text COLLATE utf8mb3_general_ci NOT NULL,\n PRIMARY KEY (`help_topic_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, }, { Query: "show create table mysql.help_category;", - Expected: []sql.Row{{"help_category", "CREATE TABLE `help_category` (\n `help_category_id` tinyint unsigned NOT NULL,\n `name` char(64) COLLATE utf8mb3_general_ci NOT NULL,\n `parent_category_id` tinyint unsigned NOT NULL,\n `url` text COLLATE utf8mb3_general_ci NOT NULL,\n PRIMARY KEY (`help_category_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, + Expected: []sql.UntypedSqlRow{{"help_category", "CREATE TABLE `help_category` (\n `help_category_id` tinyint unsigned NOT NULL,\n `name` char(64) COLLATE utf8mb3_general_ci NOT NULL,\n `parent_category_id` tinyint unsigned NOT NULL,\n `url` text COLLATE utf8mb3_general_ci NOT NULL,\n PRIMARY KEY (`help_category_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, }, { Query: "show create table mysql.help_keyword;", - Expected: []sql.Row{{"help_keyword", "CREATE TABLE `help_keyword` (\n `help_keyword_id` bigint unsigned NOT NULL,\n `name` char(64) COLLATE utf8mb3_general_ci NOT NULL,\n PRIMARY KEY (`help_keyword_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, + Expected: []sql.UntypedSqlRow{{"help_keyword", "CREATE TABLE `help_keyword` (\n `help_keyword_id` bigint unsigned NOT NULL,\n `name` char(64) COLLATE utf8mb3_general_ci NOT NULL,\n PRIMARY KEY (`help_keyword_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, }, { Query: "show create table mysql.help_relation;", - Expected: []sql.Row{{"help_relation", "CREATE TABLE `help_relation` (\n `help_keyword_id` bigint unsigned NOT NULL,\n `help_topic_id` bigint unsigned NOT NULL,\n PRIMARY KEY (`help_keyword_id`,`help_topic_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, + Expected: []sql.UntypedSqlRow{{"help_relation", "CREATE TABLE `help_relation` (\n `help_keyword_id` bigint unsigned NOT NULL,\n `help_topic_id` bigint unsigned NOT NULL,\n PRIMARY KEY (`help_keyword_id`,`help_topic_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin"}}, }, }, }, diff --git a/enginetest/queries/null_range_tests.go b/enginetest/queries/null_range_tests.go index 6aa48c9acd..83291675ad 100644 --- a/enginetest/queries/null_range_tests.go +++ b/enginetest/queries/null_range_tests.go @@ -21,7 +21,7 @@ import ( var NullRangeTests = []QueryTest{ { Query: "select * from null_ranges where y IS NULL or y < 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {3, nil}, {4, nil}, @@ -29,11 +29,11 @@ var NullRangeTests = []QueryTest{ }, { Query: "select * from null_ranges where y IS NULL and y < 1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from null_ranges where y IS NULL or y IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -43,7 +43,7 @@ var NullRangeTests = []QueryTest{ }, { Query: "select * from null_ranges where y IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -51,7 +51,7 @@ var NullRangeTests = []QueryTest{ }, { Query: "select * from null_ranges where y IS NULL or y = 0 or y = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {3, nil}, @@ -60,7 +60,7 @@ var NullRangeTests = []QueryTest{ }, { Query: "select * from null_ranges where y IS NULL or y < 1 or y > 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {2, 2}, {3, nil}, @@ -69,36 +69,36 @@ var NullRangeTests = []QueryTest{ }, { Query: "select * from null_ranges where y IS NOT NULL and x > 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2}, }, }, { Query: "select * from null_ranges where y IS NULL and x = 4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, nil}, }, }, { Query: "select * from null_ranges where y IS NULL and x > 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, nil}, {4, nil}, }, }, { Query: "select * from null_ranges where y IS NULL and y IS NOT NULL", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from null_ranges where y is NULL and y > -1 and y > -2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from null_ranges where y > -1 and y < 7 and y IS NULL", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from null_ranges where y > -1 and y > -2 and y IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -106,13 +106,13 @@ var NullRangeTests = []QueryTest{ }, { Query: "select * from null_ranges where y > -1 and y > 1 and y IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2}, }, }, { Query: "select * from null_ranges where y < 6 and y > -1 and y IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, diff --git a/enginetest/queries/numeric_error_queries.go b/enginetest/queries/numeric_error_queries.go index be8607507d..a0e94223ff 100644 --- a/enginetest/queries/numeric_error_queries.go +++ b/enginetest/queries/numeric_error_queries.go @@ -44,51 +44,51 @@ var NumericErrorQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "delete from float_pk where a = 1 and b = -4e+212", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from decimal_uk where b = 9999999999999999999999999.9999999999999999999999999999999", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from decimal_nuk where b = 9999999999999999999999999.9999999999999999999999999999999", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from decimal_pk where a = 1 and b = 9999999999999999999999999.9999999999999999999999999999999", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from i8 where i = 127", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from i16 where i = 32767", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from i32 where i = 2147483647", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from i64 where i = 9223372036854775807", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from ui8 where i = 255", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from ui16 where i = 65535", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from ui32 where i = 4294967295", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from ui64 where i = 18446744073709551615", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, diff --git a/enginetest/queries/order_by_group_by_queries.go b/enginetest/queries/order_by_group_by_queries.go index 84de8445ea..686f4fb81f 100644 --- a/enginetest/queries/order_by_group_by_queries.go +++ b/enginetest/queries/order_by_group_by_queries.go @@ -30,11 +30,11 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select team as f from members order by id, f", - Expected: []sql.Row{{"red"}, {"red"}, {"orange"}, {"orange"}, {"orange"}, {"purple"}}, + Expected: []sql.UntypedSqlRow{{"red"}, {"red"}, {"orange"}, {"orange"}, {"orange"}, {"purple"}}, }, { Query: "SELECT team, COUNT(*) FROM members GROUP BY team ORDER BY 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"purple", int64(1)}, {"red", int64(2)}, {"orange", int64(3)}, @@ -42,7 +42,7 @@ var OrderByGroupByScriptTests = []ScriptTest{ }, { Query: "SELECT team, COUNT(*) FROM members GROUP BY 1 ORDER BY 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"purple", int64(1)}, {"red", int64(2)}, {"orange", int64(3)}, @@ -54,34 +54,34 @@ var OrderByGroupByScriptTests = []ScriptTest{ }, { Query: "SELECT DISTINCT BINARY t1.id as id FROM members AS t1 JOIN members AS t2 ON t1.id = t2.id WHERE t1.id > 0 ORDER BY BINARY t1.id", - Expected: []sql.Row{{[]uint8{0x33}}, {[]uint8{0x34}}, {[]uint8{0x35}}, {[]uint8{0x36}}, {[]uint8{0x37}}, {[]uint8{0x38}}}, + Expected: []sql.UntypedSqlRow{{[]uint8{0x33}}, {[]uint8{0x34}}, {[]uint8{0x35}}, {[]uint8{0x36}}, {[]uint8{0x37}}, {[]uint8{0x38}}}, }, { Query: "SELECT DISTINCT BINARY t1.id as id FROM members AS t1 JOIN members AS t2 ON t1.id = t2.id WHERE t1.id > 0 ORDER BY t1.id", - Expected: []sql.Row{{[]uint8{0x33}}, {[]uint8{0x34}}, {[]uint8{0x35}}, {[]uint8{0x36}}, {[]uint8{0x37}}, {[]uint8{0x38}}}, + Expected: []sql.UntypedSqlRow{{[]uint8{0x33}}, {[]uint8{0x34}}, {[]uint8{0x35}}, {[]uint8{0x36}}, {[]uint8{0x37}}, {[]uint8{0x38}}}, }, { Query: "SELECT DISTINCT t1.id as id FROM members AS t1 JOIN members AS t2 ON t1.id = t2.id WHERE t2.id > 0 ORDER BY t1.id", - Expected: []sql.Row{{3}, {4}, {5}, {6}, {7}, {8}}, + Expected: []sql.UntypedSqlRow{{3}, {4}, {5}, {6}, {7}, {8}}, }, { // aliases from outer scopes can be used in a subquery's having clause. // https://github.com/dolthub/dolt/issues/4723 Query: "SELECT id as alias1, (SELECT alias1+1 group by alias1 having alias1 > 0) FROM members where id < 6;", - Expected: []sql.Row{{3, 4}, {4, 5}, {5, 6}}, + Expected: []sql.UntypedSqlRow{{3, 4}, {4, 5}, {5, 6}}, }, { // columns from outer scopes can be used in a subquery's having clause. // https://github.com/dolthub/dolt/issues/4723 Query: "SELECT id, (SELECT UPPER(team) having id > 3) as upper_team FROM members where id < 6;", - Expected: []sql.Row{{3, nil}, {4, "RED"}, {5, "ORANGE"}}, + Expected: []sql.UntypedSqlRow{{3, nil}, {4, "RED"}, {5, "ORANGE"}}, }, { // When there is ambiguity between a reference in an outer scope and a reference in the current // scope, the reference in the innermost scope will be used. // https://github.com/dolthub/dolt/issues/4723 Query: "SELECT id, (SELECT -1 as id having id < 10) as upper_team FROM members where id < 6;", - Expected: []sql.Row{{3, -1}, {4, -1}, {5, -1}}, + Expected: []sql.UntypedSqlRow{{3, -1}, {4, -1}, {5, -1}}, }, }, }, @@ -96,21 +96,21 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select binary s from t group by binary s order by binary s", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]uint8("abc")}, {[]uint8("def")}, }, }, { Query: "select count(b), b from t1 group by b order by b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, []uint8("abc")}, {2, []uint8("def")}, }, }, { Query: "select binary s from t group by binary s order by s", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]uint8("abc")}, {[]uint8("def")}, }, @@ -133,39 +133,39 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT t1.username, COUNT(t1.id) FROM ((SELECT t2.id, t2.content, t3.username FROM tweet AS t2 INNER JOIN users AS t3 ON (-t2.user_id = -t3.id) WHERE (t3.username = 'u3')) UNION (SELECT t4.id, t4.content, `t5`.`username` FROM `tweet` AS t4 INNER JOIN users AS t5 ON (-t4.user_id = -t5.id) WHERE (t5.username IN ('u2', 'u4')))) AS t1 GROUP BY `t1`.`username` ORDER BY 1,2 DESC;", - Expected: []sql.Row{{"u2", 2}, {"u3", 1}, {"u4", 1}}, + Expected: []sql.UntypedSqlRow{{"u2", 2}, {"u3", 1}, {"u4", 1}}, }, { Query: "SELECT t1.username, COUNT(t1.id) AS ct FROM ((SELECT t2.id, t2.content, t3.username FROM tweet AS t2 INNER JOIN users AS t3 ON (-t2.user_id = -t3.id) WHERE (t3.username = 'u3')) UNION (SELECT t4.id, t4.content, `t5`.`username` FROM `tweet` AS t4 INNER JOIN users AS t5 ON (-t4.user_id = -t5.id) WHERE (t5.username IN ('u2', 'u4')))) AS t1 GROUP BY `t1`.`username` ORDER BY 1,2 DESC;", - Expected: []sql.Row{{"u2", 2}, {"u3", 1}, {"u4", 1}}, + Expected: []sql.UntypedSqlRow{{"u2", 2}, {"u3", 1}, {"u4", 1}}, }, { Query: "SELECT COUNT(id) as ct, user_id as uid FROM tweet GROUP BY tweet.user_id ORDER BY COUNT(id), user_id;", - Expected: []sql.Row{{1, 2}, {1, 3}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {1, 3}, {2, 1}}, }, { Query: "SELECT COUNT(tweet.id) as ct, user_id as uid FROM tweet GROUP BY tweet.user_id ORDER BY COUNT(id), user_id;", - Expected: []sql.Row{{1, 2}, {1, 3}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {1, 3}, {2, 1}}, }, { Query: "SELECT COUNT(id) as ct, user_id as uid FROM tweet GROUP BY tweet.user_id ORDER BY COUNT(tweet.id), user_id;", - Expected: []sql.Row{{1, 2}, {1, 3}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {1, 3}, {2, 1}}, }, { Query: "SELECT COUNT(id) as ct, user_id as uid FROM tweet GROUP BY tweet.user_id HAVING COUNT(tweet.id) > 0 ORDER BY COUNT(tweet.id), user_id;", - Expected: []sql.Row{{1, 2}, {1, 3}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {1, 3}, {2, 1}}, }, { Query: "SELECT COUNT(id) as ct, user_id as uid FROM tweet WHERE tweet.id is NOT NULL GROUP BY tweet.user_id ORDER BY COUNT(tweet.id), user_id;", - Expected: []sql.Row{{1, 2}, {1, 3}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {1, 3}, {2, 1}}, }, { Query: "SELECT COUNT(id) as ct, user_id as uid FROM tweet WHERE tweet.id is NOT NULL GROUP BY tweet.user_id HAVING COUNT(tweet.id) > 0 ORDER BY COUNT(tweet.id), user_id;", - Expected: []sql.Row{{1, 2}, {1, 3}, {2, 1}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {1, 3}, {2, 1}}, }, { Query: "SELECT COUNT(id) as ct, user_id as uid FROM tweet WHERE tweet.id is NOT NULL GROUP BY tweet.user_id HAVING COUNT(tweet.id) > 0 ORDER BY COUNT(tweet.id), user_id LIMIT 1;", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, }, }, @@ -174,7 +174,7 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT column_0, sum(column_1) FROM (values row(1.00,1), row(1.00,3), row(2,2), row(2,5), row(3,9)) a group by 1 order by 1;", - Expected: []sql.Row{{"1.00", float64(4)}, {"2.00", float64(7)}, {"3.00", float64(9)}}, + Expected: []sql.UntypedSqlRow{{"1.00", float64(4)}, {"2.00", float64(7)}, {"3.00", float64(9)}}, }, }, }, @@ -232,19 +232,19 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @@global.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES"}, }, }, { Query: "select @@session.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES"}, }, }, { Query: "select any_value(id), any_value(team) from members order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "red"}, {4, "red"}, {5, "orange"}, @@ -265,13 +265,13 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @@global.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES"}, }, }, { Query: "select @@session.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES"}, }, }, @@ -291,14 +291,14 @@ var OrderByGroupByScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select c1, count(pk) from t group by c1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"foo", 2}, {nil, 1}, }, }, { Query: "select c1, count(c1) from t group by c1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"foo", 2}, {nil, 0}, }, diff --git a/enginetest/queries/ordinal_ddl_queries.go b/enginetest/queries/ordinal_ddl_queries.go index ff62b5c06e..0cd5e6e4f2 100644 --- a/enginetest/queries/ordinal_ddl_queries.go +++ b/enginetest/queries/ordinal_ddl_queries.go @@ -22,35 +22,35 @@ import ( var OrdinalDDLQueries = []QueryTest{ { Query: "show keys from short_ord_pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"short_ord_pk", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"short_ord_pk", 0, "PRIMARY", 2, "x", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { Query: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'short_ord_pk'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"x", uint(1)}, {"y", uint(2)}, }, }, { Query: "show keys from long_ord_pk1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"long_ord_pk1", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk1", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { Query: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk1' and column_key = 'PRI'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"v", uint(2)}, {"y", uint(5)}, }, }, { Query: "show keys from long_ord_pk2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"long_ord_pk2", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk2", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk2", 0, "PRIMARY", 3, "x", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, @@ -60,7 +60,7 @@ var OrdinalDDLQueries = []QueryTest{ }, { Query: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk2' and column_key = 'PRI'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"u", uint(1)}, {"v", uint(2)}, {"x", uint(4)}, @@ -70,7 +70,7 @@ var OrdinalDDLQueries = []QueryTest{ }, { Query: "show keys from long_ord_pk3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"long_ord_pk3", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk3", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk3", 0, "PRIMARY", 3, "x", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, @@ -80,7 +80,7 @@ var OrdinalDDLQueries = []QueryTest{ }, { Query: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk3' and column_key = 'PRI'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"u", uint(1)}, {"v", uint(2)}, {"x", uint(5)}, @@ -90,119 +90,119 @@ var OrdinalDDLQueries = []QueryTest{ }, { Query: "show keys from ord_kl", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'ord_kl' and column_key = 'PRI'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, } var OrdinalDDLWriteQueries = []WriteQueryTest{ { WriteQuery: "ALTER TABLE long_ord_pk1 ADD COLUMN ww int AFTER v", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk1' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"v", uint(2)}, {"y", uint(6)}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk1 MODIFY COLUMN w int AFTER y", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk1' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"v", uint(2)}, {"y", uint(4)}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk1 DROP PRIMARY KEY", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from ord_kl", - ExpectedSelect: []sql.Row{}, + ExpectedSelect: []sql.UntypedSqlRow{}, }, { WriteQuery: "ALTER TABLE ord_kl ADD PRIMARY KEY (y,v)", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from ord_kl", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"ord_kl", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"ord_kl", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { WriteQuery: "ALTER TABLE ord_kl ADD PRIMARY KEY (y,v)", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'ord_kl' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"v", uint(2)}, {"y", uint(5)}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk1 MODIFY COLUMN y int AFTER u", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: `SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk1' and column_key = 'PRI' order by 2`, - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"y", uint(2)}, {"v", uint(3)}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk1 MODIFY COLUMN y int AFTER u", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from long_ord_pk1", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"long_ord_pk1", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk1", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk1 RENAME COLUMN y to yy", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk1' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"v", uint(2)}, {"yy", uint(5)}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk1 RENAME COLUMN y to yy", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from long_ord_pk1", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"long_ord_pk1", 0, "PRIMARY", 1, "yy", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk1", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, }, }, { WriteQuery: "ALTER TABLE long_ord_pk2 ADD COLUMN ww int AFTER w", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk2' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"u", uint(1)}, {"v", uint(2)}, {"x", uint(5)}, @@ -212,11 +212,11 @@ var OrdinalDDLWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE long_ord_pk2 ADD COLUMN ww int AFTER w", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from long_ord_pk2", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"long_ord_pk2", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk2", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk2", 0, "PRIMARY", 3, "x", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, @@ -226,11 +226,11 @@ var OrdinalDDLWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE long_ord_pk3 DROP COLUMN ww", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk3' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"u", uint(1)}, {"v", uint(2)}, {"x", uint(4)}, @@ -240,11 +240,11 @@ var OrdinalDDLWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE long_ord_pk3 DROP COLUMN ww", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from long_ord_pk3", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"long_ord_pk3", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk3", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk3", 0, "PRIMARY", 3, "x", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, @@ -254,11 +254,11 @@ var OrdinalDDLWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE long_ord_pk2 MODIFY COLUMN y int AFTER u", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "SELECT column_name, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'long_ord_pk2' and column_key = 'PRI'", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"u", uint(1)}, {"y", uint(2)}, {"v", uint(3)}, @@ -268,11 +268,11 @@ var OrdinalDDLWriteQueries = []WriteQueryTest{ }, { WriteQuery: "ALTER TABLE long_ord_pk2 MODIFY COLUMN y int AFTER u", - ExpectedWriteResult: []sql.Row{ + ExpectedWriteResult: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0}}, }, SelectQuery: "show keys from long_ord_pk2", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {"long_ord_pk2", 0, "PRIMARY", 1, "y", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk2", 0, "PRIMARY", 2, "v", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"long_ord_pk2", 0, "PRIMARY", 3, "x", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, diff --git a/enginetest/queries/priv_auth_queries.go b/enginetest/queries/priv_auth_queries.go index 5043fccf68..39faf1923f 100644 --- a/enginetest/queries/priv_auth_queries.go +++ b/enginetest/queries/priv_auth_queries.go @@ -40,7 +40,7 @@ type UserPrivilegeTestAssertion struct { User string Host string Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow ExpectedErr *errors.Kind ExpectedErrStr string } @@ -78,7 +78,7 @@ type UserPrivilegeTestAssertion struct { // INSERT INTO otherdb.test2 VALUES (1, 1), (2, 2); type QuickPrivilegeTest struct { Queries []string - Expected []sql.Row + Expected []sql.UntypedSqlRow ExpectedErr *errors.Kind ExpectingErr bool } @@ -257,7 +257,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "replica-client", Host: "localhost", Query: "SHOW REPLICA STATUS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "replica-reload", @@ -269,7 +269,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW REPLICA STATUS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // SHOW BINARY LOGS @@ -289,7 +289,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "replica-client", Host: "localhost", Query: "SHOW BINARY LOGS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "replica-reload", @@ -301,7 +301,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW BINARY LOGS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // SHOW BINARY LOG STATUS @@ -321,7 +321,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "replica-client", Host: "localhost", Query: "SHOW BINARY LOG STATUS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "replica-reload", @@ -333,7 +333,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW BINARY LOG STATUS;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // CHANGE REPLICATION SOURCE @@ -436,13 +436,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT ON *.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM mydb.test;/*2*/", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "tester", @@ -454,7 +454,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "REVOKE SELECT ON *.* FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // Ensure we've reverted to initial state (all SELECTs after REVOKEs are doing this) User: "tester", @@ -472,13 +472,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT ON mydb.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM mydb.test;/*4*/", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "tester", @@ -490,7 +490,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "REVOKE SELECT ON mydb.* FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -508,19 +508,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT ON mydb.test TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM mydb.test;/*6*/", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "tester", Host: "localhost", Query: "WITH cte AS (SELECT * FROM mydb.test) SELECT * FROM cte;/*6*/", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "tester", @@ -532,7 +532,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "WITH cte AS (SELECT * FROM mydb.test) SELECT * FROM cte JOIN mydb.test t2 WHERE cte.pk = t2.pk;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { User: "tester", @@ -544,7 +544,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "REVOKE SELECT ON mydb.test FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -562,7 +562,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT ON mydb.test2 TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -580,7 +580,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "REVOKE SELECT ON mydb.test2 FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -598,13 +598,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT test_role TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM mydb.test;/*10*/", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "tester", @@ -626,15 +626,15 @@ var UserPrivTests = []UserPrivilegeTest{ }, { Query: "CREATE USER IF NOT EXISTS testuser@`127.0.0.1`;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO mysql.user (Host, User) VALUES ('localhost', 'testuser2');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM mysql.user WHERE User = 'root';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "localhost", // Host "root", // User @@ -693,7 +693,7 @@ var UserPrivTests = []UserPrivilegeTest{ }, { Query: "SELECT Host, User FROM mysql.user;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"localhost", "root"}, {"localhost", "testuser2"}, {"127.0.0.1", "testuser"}, @@ -711,7 +711,7 @@ var UserPrivTests = []UserPrivilegeTest{ Assertions: []UserPrivilegeTestAssertion{ { Query: "SELECT user, host from mysql.user", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root", "localhost"}, {"testuser", "localhost"}, }, @@ -720,7 +720,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR testuser@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT USAGE ON *.* TO `testuser`@`localhost`"}, {"GRANT CLONE_ADMIN, REPLICATION_SLAVE_ADMIN ON *.* TO `testuser`@`localhost`"}, }, @@ -763,7 +763,7 @@ var UserPrivTests = []UserPrivilegeTest{ Assertions: []UserPrivilegeTestAssertion{ { Query: "SELECT user, host from mysql.user", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root", "localhost"}, {"testuser", "%"}, }, @@ -783,7 +783,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT ON *.* TO `tester`@`%`"}, {"GRANT SELECT ON `db`.* TO `tester`@`%`"}, {"GRANT SELECT ON `db`.`tbl` TO `tester`@`%`"}, @@ -808,13 +808,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "granted", Host: "localhost", Query: "CALL mydb.memory_admin_only(1,2)", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { User: "denied", Host: "localhost", Query: "CALL mydb.memory_variadic_add(3,2)", // Verify this user _can_ access non-admin proc - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, { User: "denied", @@ -832,7 +832,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "targeted", Host: "localhost", Query: "CALL mydb.memory_admin_only(7,2)", - Expected: []sql.Row{{9}}, + Expected: []sql.UntypedSqlRow{{9}}, }, { User: "noaccess", @@ -858,7 +858,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SELECT 1+2;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { User: "noexist", @@ -886,13 +886,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT INSERT ON *.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "INSERT INTO test VALUES (4);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { User: "tester", @@ -904,19 +904,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { User: "root", Host: "localhost", Query: "GRANT SELECT ON *.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, }, }, @@ -930,31 +930,31 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT, UPDATE, EXECUTE ON mydb.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.db;", - Expected: []sql.Row{{"localhost", "mydb", "tester", "Y", "N", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "Y", "N", "N"}}, + Expected: []sql.UntypedSqlRow{{"localhost", "mydb", "tester", "Y", "N", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "Y", "N", "N"}}, }, { User: "root", Host: "localhost", Query: "REVOKE UPDATE ON mydb.* FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.db;", - Expected: []sql.Row{{"localhost", "mydb", "tester", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "Y", "N", "N"}}, + Expected: []sql.UntypedSqlRow{{"localhost", "mydb", "tester", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "Y", "N", "N"}}, }, { User: "root", Host: "localhost", Query: "UPDATE mysql.db SET Insert_priv = 'Y' WHERE User = 'tester';", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{ @@ -968,7 +968,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT * FROM mysql.db;", - Expected: []sql.Row{{"localhost", "mydb", "tester", "Y", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "Y", "N", "N"}}, + Expected: []sql.UntypedSqlRow{{"localhost", "mydb", "tester", "Y", "Y", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "Y", "N", "N"}}, }, }, }, @@ -983,31 +983,31 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT, DELETE, DROP ON mydb.test TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.tables_priv;", - Expected: []sql.Row{{"localhost", "mydb", "tester", "test", "", time.Unix(1, 0).UTC(), "Select,Delete,Drop", ""}}, + Expected: []sql.UntypedSqlRow{{"localhost", "mydb", "tester", "test", "", time.Unix(1, 0).UTC(), "Select,Delete,Drop", ""}}, }, { User: "root", Host: "localhost", Query: "REVOKE DELETE ON mydb.test FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.tables_priv;", - Expected: []sql.Row{{"localhost", "mydb", "tester", "test", "", time.Unix(1, 0).UTC(), "Select,Drop", ""}}, + Expected: []sql.UntypedSqlRow{{"localhost", "mydb", "tester", "test", "", time.Unix(1, 0).UTC(), "Select,Drop", ""}}, }, { User: "root", Host: "localhost", Query: "UPDATE mysql.tables_priv SET table_priv = 'References,Index' WHERE User = 'tester';", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{ @@ -1021,7 +1021,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT * FROM mysql.tables_priv;", - Expected: []sql.Row{{"localhost", "mydb", "tester", "test", "", time.Unix(1, 0).UTC(), "References,Index", ""}}, + Expected: []sql.UntypedSqlRow{{"localhost", "mydb", "tester", "test", "", time.Unix(1, 0).UTC(), "References,Index", ""}}, }, }, }, @@ -1040,7 +1040,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT Routine_name,Routine_type,proc_priv from mysql.procs_priv WHERE User = 'tester1'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"proc1", "PROCEDURE", "Grant,Execute"}, {"proc2", "PROCEDURE", "Alter Routine"}, }, @@ -1049,13 +1049,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT Routine_name,Routine_type,proc_priv from mysql.procs_priv WHERE User = 'tester2'", - Expected: []sql.Row{{"proc1", "PROCEDURE", "Grant"}}, + Expected: []sql.UntypedSqlRow{{"proc1", "PROCEDURE", "Grant"}}, }, { User: "tester1", Host: "localhost", Query: "GRANT Execute ON PROCEDURE mydb.proc1 TO tester2@localhost", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester2", @@ -1084,13 +1084,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT Routine_name,Routine_type,proc_priv from mysql.procs_priv WHERE User = 'tester1'", - Expected: []sql.Row{{"proc1", "PROCEDURE", "Grant"}}, + Expected: []sql.UntypedSqlRow{{"proc1", "PROCEDURE", "Grant"}}, }, { User: "root", Host: "localhost", Query: "SELECT Routine_name,Routine_type,proc_priv from mysql.procs_priv WHERE User = 'tester2'", - Expected: []sql.Row{sql.Row{"proc2", "PROCEDURE", "Grant,Execute"}}, + Expected: []sql.UntypedSqlRow{{"proc2", "PROCEDURE", "Grant,Execute"}}, }, }, }, @@ -1133,19 +1133,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { User: "root", Host: "localhost", Query: "SELECT User, Host, Select_priv FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{"tester", "localhost", "Y"}}, + Expected: []sql.UntypedSqlRow{{"tester", "localhost", "Y"}}, }, { User: "root", Host: "localhost", Query: "REVOKE SELECT ON *.* FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -1157,7 +1157,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT User, Host, Select_priv FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{"tester", "localhost", "N"}}, + Expected: []sql.UntypedSqlRow{{"tester", "localhost", "N"}}, }, }, }, @@ -1174,25 +1174,25 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "INSERT INTO test VALUES (4);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { User: "root", Host: "localhost", Query: "SELECT User, Host, Select_priv, Insert_priv FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{"tester", "localhost", "Y", "Y"}}, + Expected: []sql.UntypedSqlRow{{"tester", "localhost", "Y", "Y"}}, }, { User: "root", Host: "localhost", Query: "REVOKE ALL ON *.* FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -1210,7 +1210,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT User, Host, Select_priv, Insert_priv FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{"tester", "localhost", "N", "N"}}, + Expected: []sql.UntypedSqlRow{{"tester", "localhost", "N", "N"}}, }, }, }, @@ -1224,7 +1224,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT User, Host, account_locked FROM mysql.user WHERE User = 'test_role';", - Expected: []sql.Row{{"test_role", "%", "Y"}}, + Expected: []sql.UntypedSqlRow{{"test_role", "%", "Y"}}, }, }, }, @@ -1249,31 +1249,31 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.role_edges;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "GRANT test_role TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.role_edges;", - Expected: []sql.Row{{"%", "test_role", "localhost", "tester", "N"}}, + Expected: []sql.UntypedSqlRow{{"%", "test_role", "localhost", "tester", "N"}}, }, { User: "tester", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { User: "root", Host: "localhost", Query: "SELECT User, Host, Select_priv FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{"tester", "localhost", "N"}}, + Expected: []sql.UntypedSqlRow{{"tester", "localhost", "N"}}, }, }, }, @@ -1293,19 +1293,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.role_edges;", - Expected: []sql.Row{{"%", "test_role", "localhost", "tester", "N"}}, + Expected: []sql.UntypedSqlRow{{"%", "test_role", "localhost", "tester", "N"}}, }, { User: "root", Host: "localhost", Query: "REVOKE test_role FROM tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -1317,19 +1317,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.role_edges;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.user WHERE User = 'test_role';", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1349,19 +1349,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SELECT * FROM test;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { User: "root", Host: "localhost", Query: "SELECT * FROM mysql.role_edges;", - Expected: []sql.Row{{"%", "test_role", "localhost", "tester", "N"}}, + Expected: []sql.UntypedSqlRow{{"%", "test_role", "localhost", "tester", "N"}}, }, { User: "root", Host: "localhost", Query: "DROP ROLE test_role;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", @@ -1373,19 +1373,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.role_edges;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.user WHERE User = 'test_role';", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { // Ensure nothing wonky happened like the user was deleted as well User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "root", @@ -1397,7 +1397,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "DROP ROLE IF EXISTS test_role;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -1417,31 +1417,31 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT * FROM mysql.role_edges;", - Expected: []sql.Row{{"%", "test_role", "localhost", "tester", "N"}}, + Expected: []sql.UntypedSqlRow{{"%", "test_role", "localhost", "tester", "N"}}, }, { User: "root", Host: "localhost", Query: "DROP USER tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.role_edges;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.user WHERE User = 'tester';", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { // Ensure nothing wonky happened like the role was deleted as well User: "root", Host: "localhost", Query: "SELECT COUNT(*) FROM mysql.user WHERE User = 'test_role';", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "root", @@ -1453,7 +1453,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "DROP USER IF EXISTS tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -1464,7 +1464,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS;", - Expected: []sql.Row{{"GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, " + + Expected: []sql.UntypedSqlRow{{"GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, " + "FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, " + "EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, " + "ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO " + @@ -1489,7 +1489,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT ON *.* TO `tester`@`localhost`"}, {"GRANT `test_role1`@`%`, `test_role2`@`%` TO `tester`@`localhost`"}, }, @@ -1498,13 +1498,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT UPDATE ON *.* TO tester@localhost WITH GRANT OPTION;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT, UPDATE ON *.* TO `tester`@`localhost` WITH GRANT OPTION"}, {"GRANT `test_role1`@`%`, `test_role2`@`%` TO `tester`@`localhost`"}, }, @@ -1513,7 +1513,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SHOW GRANTS;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT, UPDATE ON *.* TO `tester`@`localhost` WITH GRANT OPTION"}, {"GRANT `test_role1`@`%`, `test_role2`@`%` TO `tester`@`localhost`"}, }, @@ -1530,7 +1530,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT USAGE ON *.* TO `tester`@`localhost`"}, }, }, @@ -1548,7 +1548,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT, INSERT ON *.* TO `tester`@`localhost`"}, }, }, @@ -1567,7 +1567,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT ON *.* TO `tester`@`localhost`"}, {"GRANT SELECT ON `db`.* TO `tester`@`localhost`"}, {"GRANT SELECT ON `db`.`tbl` TO `tester`@`localhost`"}, @@ -1587,7 +1587,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT ON *.* TO `tester`@`localhost`"}, {"GRANT SELECT ON `db`.`tbl` TO `tester`@`localhost`"}, }, @@ -1609,7 +1609,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT USAGE ON *.* TO `tester`@`localhost`"}, {"GRANT SELECT ON `db`.* TO `tester`@`localhost`"}, {"GRANT INSERT ON `db1`.* TO `tester`@`localhost`"}, @@ -1632,7 +1632,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT ON *.* TO `tester`@`localhost` WITH GRANT OPTION"}, {"GRANT SELECT ON `db`.* TO `tester`@`localhost` WITH GRANT OPTION"}, {"GRANT SELECT ON `db`.`tbl` TO `tester`@`localhost` WITH GRANT OPTION"}, @@ -1656,7 +1656,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW GRANTS FOR tester@localhost;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"GRANT SELECT, INSERT ON *.* TO `tester`@`localhost` WITH GRANT OPTION"}, {"GRANT SELECT, INSERT ON `db`.* TO `tester`@`localhost` WITH GRANT OPTION"}, {"GRANT SELECT, INSERT ON `db`.`tbl` TO `tester`@`localhost` WITH GRANT OPTION"}, @@ -1674,7 +1674,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT user FROM mysql.user;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root"}, {"testuser"}, }, @@ -1683,7 +1683,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT USER();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root@localhost"}, }, }, @@ -1691,7 +1691,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SHOW DATABASES", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"information_schema"}, {"mydb"}, {"mysql"}, @@ -1716,7 +1716,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "rand_user", Host: "localhost", Query: "SELECT * FROM mydb.test;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, }, @@ -1737,7 +1737,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "rand_user", Host: "non_existent_host", Query: "SELECT * FROM mydb.test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 2}, }, @@ -1752,7 +1752,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "non_existent_user", Host: "non_existent_host", Query: "SELECT * FROM mydb.test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 2}, }, @@ -1767,7 +1767,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "", Host: "%", Query: "SELECT * FROM mydb.test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 2}, }, @@ -1791,7 +1791,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "rand_user1", Host: "localhost", Query: "SELECT * FROM mydb.test;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, }, @@ -1800,7 +1800,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "rand_user1", Host: "127.0.0.1", Query: "SELECT * FROM mydb.test;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, }, @@ -1815,7 +1815,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "rand_user2", Host: "localhost", Query: "SELECT * FROM mydb.test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 2}, }, @@ -1824,7 +1824,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "rand_user2", Host: "127.0.0.1", Query: "SELECT * FROM mydb.test2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 2}, }, @@ -1847,7 +1847,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "SELECT user FROM mysql.user", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root"}, {"admin"}, }, @@ -1856,13 +1856,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "DROP USER admin;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "SELECT user FROM mysql.user", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root"}, }, }, @@ -1880,55 +1880,55 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SELECT count(*) FROM inFORmation_ScHeMa.columns where table_schema = 'mydb' and table_name = 'test';", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "GRANT INSERT ON mydb.test TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT column_name, privileges FROM information_schema.columns where table_schema = 'mydb' and table_name = 'test'", - Expected: []sql.Row{{"pk", "insert"}, {"c", "insert"}, {"p", "insert"}}, + Expected: []sql.UntypedSqlRow{{"pk", "insert"}, {"c", "insert"}, {"p", "insert"}}, }, { User: "root", Host: "localhost", Query: "GRANT SELECT ON mydb.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT column_name, privileges FROM information_schema.columns where table_schema = 'mydb' and table_name = 'test'", - Expected: []sql.Row{{"pk", "insert,select"}, {"c", "insert,select"}, {"p", "insert,select"}}, + Expected: []sql.UntypedSqlRow{{"pk", "insert,select"}, {"c", "insert,select"}, {"p", "insert,select"}}, }, { User: "root", Host: "localhost", Query: "GRANT UPDATE ON mydb.checks TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "select table_name, column_name, privileges from information_schema.columns where table_schema = 'mydb' and table_name = 'checks';", - Expected: []sql.Row{{"checks", "a", "select,update"}, {"checks", "b", "select,update"}, {"checks", "c", "select,update"}}, + Expected: []sql.UntypedSqlRow{{"checks", "a", "select,update"}, {"checks", "b", "select,update"}, {"checks", "c", "select,update"}}, }, { User: "tester", Host: "localhost", Query: "SELECT count(*) FROM information_schema.columns where table_schema = 'information_schema' and table_name = 'columns'", - Expected: []sql.Row{{22}}, + Expected: []sql.UntypedSqlRow{{22}}, }, { User: "root", Host: "localhost", Query: "select table_name, column_name, privileges from information_schema.columns where table_schema = 'mydb' and table_name = 'checks';", - Expected: []sql.Row{{"checks", "a", "insert,references,select,update"}, {"checks", "b", "insert,references,select,update"}, {"checks", "c", "insert,references,select,update"}}, + Expected: []sql.UntypedSqlRow{{"checks", "a", "insert,references,select,update"}, {"checks", "b", "insert,references,select,update"}, {"checks", "c", "insert,references,select,update"}}, }, }, }, @@ -1948,13 +1948,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT ON mydb.one TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT table_name, column_name FROM information_schema.column_statistics where schema_name = 'mydb';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"one", "f"}, }, }, @@ -1962,13 +1962,13 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT SELECT ON mydb.two TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "SELECT table_name, column_name FROM information_schema.column_statistics where schema_name = 'mydb';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"one", "f"}, {"two", "i"}, {"two", "j"}, @@ -1988,19 +1988,19 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "SELECT count(*) FROM information_schema.statistics where table_schema = 'mydb';", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "GRANT INSERT ON mydb.checks TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "select table_name, column_name, index_name from information_schema.statistics where table_schema = 'mydb';", - Expected: []sql.Row{{"checks", "a", "PRIMARY"}}, + Expected: []sql.UntypedSqlRow{{"checks", "a", "PRIMARY"}}, }, }, }, @@ -2016,49 +2016,49 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "select * from information_schema.schema_privileges;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "root", Host: "localhost", Query: "GRANT INSERT, REFERENCES ON mydb.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "GRANT UPDATE, GRANT OPTION ON mydb.* TO admin@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "select * from information_schema.schema_privileges order by privilege_type, is_grantable;", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "mydb", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "REFERENCES", "NO"}, {"'admin'@'localhost'", "def", "mydb", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "mydb", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "REFERENCES", "NO"}, {"'admin'@'localhost'", "def", "mydb", "UPDATE", "YES"}}, }, { User: "tester", Host: "localhost", Query: "select * from information_schema.schema_privileges order by privilege_type, is_grantable;", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "mydb", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "REFERENCES", "NO"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "mydb", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "REFERENCES", "NO"}}, }, { User: "admin", Host: "localhost", Query: "select * from information_schema.schema_privileges order by privilege_type, is_grantable;", - Expected: []sql.Row{{"'admin'@'localhost'", "def", "mydb", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'admin'@'localhost'", "def", "mydb", "UPDATE", "YES"}}, }, { User: "root", Host: "localhost", Query: "GRANT SELECT ON mysql.* TO admin@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "admin", Host: "localhost", Query: "select * from information_schema.schema_privileges order by privilege_type, is_grantable;", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "mydb", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "REFERENCES", "NO"}, {"'admin'@'localhost'", "def", "mysql", "SELECT", "NO"}, {"'admin'@'localhost'", "def", "mydb", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "mydb", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "REFERENCES", "NO"}, {"'admin'@'localhost'", "def", "mysql", "SELECT", "NO"}, {"'admin'@'localhost'", "def", "mydb", "UPDATE", "YES"}}, }, }, }, @@ -2075,49 +2075,49 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "select * from information_schema.table_privileges;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "root", Host: "localhost", Query: "GRANT INSERT ON mydb.checks TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "GRANT UPDATE, GRANT OPTION ON mydb.test TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "root", Host: "localhost", Query: "select * from information_schema.table_privileges order by privilege_type, is_grantable;/*root*/", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "mydb", "checks", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "test", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "mydb", "checks", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "test", "UPDATE", "YES"}}, }, { User: "tester", Host: "localhost", Query: "select * from information_schema.table_privileges order by privilege_type, is_grantable;/*tester*/", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "mydb", "checks", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "test", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "mydb", "checks", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "test", "UPDATE", "YES"}}, }, { User: "admin", Host: "localhost", Query: "select * from information_schema.table_privileges order by privilege_type, is_grantable;/*admin1*/", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "root", Host: "localhost", Query: "GRANT SELECT ON mysql.* TO admin@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "admin", Host: "localhost", Query: "select * from information_schema.table_privileges order by privilege_type, is_grantable;/*admin2*/", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "mydb", "checks", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "test", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "mydb", "checks", "INSERT", "NO"}, {"'tester'@'localhost'", "def", "mydb", "test", "UPDATE", "YES"}}, }, }, }, @@ -2134,7 +2134,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "select * from information_schema.user_privileges order by privilege_type LIMIT 4;/*root*/", - Expected: []sql.Row{{"'root'@'localhost'", "def", "ALTER", "YES"}, + Expected: []sql.UntypedSqlRow{{"'root'@'localhost'", "def", "ALTER", "YES"}, {"'root'@'localhost'", "def", "ALTER ROUTINE", "YES"}, {"'root'@'localhost'", "def", "CREATE", "YES"}, {"'root'@'localhost'", "def", "CREATE ROLE", "YES"}}, @@ -2143,31 +2143,31 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "GRANT INSERT ON *.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "select * from information_schema.user_privileges order by privilege_type, is_grantable;/*tester1*/", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "INSERT", "NO"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "INSERT", "NO"}}, }, { User: "root", Host: "localhost", Query: "GRANT UPDATE, GRANT OPTION ON *.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "select * from information_schema.user_privileges order by privilege_type, is_grantable;/*tester2*/", - Expected: []sql.Row{{"'tester'@'localhost'", "def", "INSERT", "YES"}, {"'tester'@'localhost'", "def", "UPDATE", "YES"}}, + Expected: []sql.UntypedSqlRow{{"'tester'@'localhost'", "def", "INSERT", "YES"}, {"'tester'@'localhost'", "def", "UPDATE", "YES"}}, }, { User: "admin", Host: "localhost", Query: "select * from information_schema.user_privileges order by privilege_type, is_grantable;/*admin*/", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -2184,7 +2184,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "root", Host: "localhost", Query: "select * from information_schema.user_attributes order by user;/*root*/", - Expected: []sql.Row{{"admin", "localhost", nil}, + Expected: []sql.UntypedSqlRow{{"admin", "localhost", nil}, {"root", "localhost", nil}, {"tester", "localhost", nil}}, }, @@ -2192,7 +2192,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "admin", Host: "localhost", Query: "select * from information_schema.user_attributes order by user;/*admin*/", - Expected: []sql.Row{{"admin", "localhost", nil}, + Expected: []sql.UntypedSqlRow{{"admin", "localhost", nil}, {"root", "localhost", nil}, {"tester", "localhost", nil}}, }, @@ -2200,7 +2200,7 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "select * from information_schema.user_attributes order by user;/*tester*/", - Expected: []sql.Row{{"tester", "localhost", nil}}, + Expected: []sql.UntypedSqlRow{{"tester", "localhost", nil}}, }, }, }, @@ -2215,31 +2215,31 @@ var UserPrivTests = []UserPrivilegeTest{ User: "tester", Host: "localhost", Query: "select count(*) from information_schema.routines where routine_name = 'testabc'/*tester1*/;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "tester", Host: "localhost", Query: "select count(*) from information_schema.parameters where specific_name = 'testabc'/*tester1*/;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { User: "root", Host: "localhost", Query: "GRANT CREATE ROUTINE ON mydb.* TO tester@localhost;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { User: "tester", Host: "localhost", Query: "select count(*) from information_schema.routines where routine_name = 'testabc';", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "tester", Host: "localhost", Query: "select count(*) from information_schema.parameters where specific_name = 'testabc';", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, }, }, @@ -2255,25 +2255,25 @@ var UserPrivTests = []UserPrivilegeTest{ User: "testadmin", Host: "%", Query: "USE testdb;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { User: "testadmin", Host: "%", Query: `SELECT SUM(found) FROM ((SELECT 1 as found FROM information_schema.tables) UNION (SELECT 1 as found FROM information_schema.events)) as all_found;`, - Expected: []sql.Row{{1.0}}, + Expected: []sql.UntypedSqlRow{{1.0}}, }, { User: "testadmin", Host: "%", Query: `(SELECT 1 as found FROM information_schema.tables) UNION (SELECT 1 as found FROM information_schema.events);`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { User: "testadmin", Host: "%", Query: `SELECT SUM(found) FROM ((SELECT 1 as found FROM dual) UNION (SELECT 1 as found FROM dual)) as all_found;`, - Expected: []sql.Row{{1.0}}, + Expected: []sql.UntypedSqlRow{{1.0}}, }, { User: "testadmin", @@ -2290,25 +2290,7 @@ FROM ((SELECT 1 as found FROM information_schema.tables WHERE table_schema = 'te (SELECT 1 as found FROM information_schema.routines WHERE routine_schema = 'testdb' LIMIT 1) UNION ALL (SELECT 1 as found FROM information_schema.events WHERE event_schema = 'testdb' LIMIT 1)) as all_found;`, - Expected: []sql.Row{{nil}}, - }, - }, - }, - { - Name: "Test user creation with hashed password", - SetUpScript: []string{ - "CREATE USER 'lol'@'%' IDENTIFIED WITH mysql_native_password AS '*91D9861DFC07DD967611B8C96953474EF270AD5E';", - }, - Assertions: []UserPrivilegeTestAssertion{ - { - Query: "SELECT User, plugin, authentication_string FROM mysql.user WHERE User = 'lol';", - Expected: []sql.Row{ - { - "lol", // User - "mysql_native_password", // plugin - "*91D9861DFC07DD967611B8C96953474EF270AD5E", // authentication_string - }, - }, + Expected: []sql.UntypedSqlRow{{nil}}, }, }, }, @@ -2681,28 +2663,28 @@ var QuickPrivTests = []QuickPrivilegeTest{ "GRANT SELECT ON *.* TO tester@localhost", "SELECT * FROM mydb.test", }, - Expected: []sql.Row{{0, 0}, {1, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}}, }, { Queries: []string{ "GRANT SELECT ON mydb.* TO tester@localhost", "SELECT * FROM mydb.test", }, - Expected: []sql.Row{{0, 0}, {1, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}}, }, { Queries: []string{ "GRANT SELECT ON mydb.* TO tester@localhost", "SELECT * FROM mydb.test2", }, - Expected: []sql.Row{{0, 1}, {1, 2}}, + Expected: []sql.UntypedSqlRow{{0, 1}, {1, 2}}, }, { Queries: []string{ "GRANT SELECT ON mydb.test TO tester@localhost", "SELECT * FROM mydb.test", }, - Expected: []sql.Row{{0, 0}, {1, 1}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}}, }, { Queries: []string{ @@ -2738,7 +2720,7 @@ var QuickPrivTests = []QuickPrivilegeTest{ "USE mydb;", "SHOW TABLES;", }, - Expected: []sql.Row{{"test"}, {"test2"}}, + Expected: []sql.UntypedSqlRow{{"test"}, {"test2"}}, }, { Queries: []string{ @@ -2746,7 +2728,7 @@ var QuickPrivTests = []QuickPrivilegeTest{ "USE mydb;", "SHOW TABLES;", }, - Expected: []sql.Row{{"test"}, {"test2"}}, + Expected: []sql.UntypedSqlRow{{"test"}, {"test2"}}, }, { Queries: []string{ @@ -2754,7 +2736,7 @@ var QuickPrivTests = []QuickPrivilegeTest{ "USE mydb;", "SHOW TABLES;", }, - Expected: []sql.Row{{"test"}}, + Expected: []sql.UntypedSqlRow{{"test"}}, }, { Queries: []string{ @@ -2762,7 +2744,7 @@ var QuickPrivTests = []QuickPrivilegeTest{ "USE mydb;", "SHOW TABLES;", }, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Queries: []string{ diff --git a/enginetest/queries/procedure_queries.go b/enginetest/queries/procedure_queries.go index ae03494138..12bf79de57 100644 --- a/enginetest/queries/procedure_queries.go +++ b/enginetest/queries/procedure_queries.go @@ -40,7 +40,7 @@ var ProcedureLogicTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL p1;", - Expected: []sql.Row{{42}}, + Expected: []sql.UntypedSqlRow{{42}}, }, }, }, @@ -61,7 +61,7 @@ var ProcedureLogicTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL p1;", - Expected: []sql.Row{{42}}, + Expected: []sql.UntypedSqlRow{{42}}, }, }, }, @@ -74,7 +74,7 @@ var ProcedureLogicTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL testabc(2, 3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { 6.0, }, @@ -82,7 +82,7 @@ var ProcedureLogicTests = []ScriptTest{ }, { Query: "CALL testabc(9, 9.5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { 85.5, }, @@ -109,7 +109,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"30"}, @@ -119,7 +119,7 @@ END;`, }, { Query: "SELECT * FROM t1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"30"}, @@ -162,7 +162,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(@outparam, 1, 2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "1 is less than 2.", }, @@ -170,7 +170,7 @@ END;`, }, { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "1 is less than 2.", }, @@ -178,7 +178,7 @@ END;`, }, { Query: "CALL p1(@outparam, null, 2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { nil, }, @@ -186,7 +186,7 @@ END;`, }, { Query: "CALL p1(@outparam, 7, 4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "7 is greater than 4.", }, @@ -194,7 +194,7 @@ END;`, }, { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "7 is greater than 4.", }, @@ -202,7 +202,7 @@ END;`, }, { Query: "CALL p1(@outparam, 5, 5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "5 equals 5.", }, @@ -210,7 +210,7 @@ END;`, }, { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "5 equals 5.", }, @@ -218,7 +218,7 @@ END;`, }, { Query: "CALL p2(@outparam, 9, 3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "9 is greater than 3.", }, @@ -226,7 +226,7 @@ END;`, }, { // Not affected as p2 has an IN param rather than OUT Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "5 equals 5.", }, @@ -266,7 +266,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(1000), }, @@ -274,7 +274,7 @@ END;`, }, { Query: "CALL p1(1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(1001), }, @@ -283,7 +283,7 @@ END;`, { SkipResultCheckOnServerEngine: true, // tracking issue: https://github.com/dolthub/dolt/issues/6918 Query: "CALL p1(2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.NewOkResult(2), }, @@ -295,7 +295,7 @@ END;`, }, { Query: "CALL p1(11)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(8)}, {int64(9)}, {int64(10)}, @@ -305,7 +305,7 @@ END;`, }, { Query: "CALL p1(12)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(2003), }, @@ -328,20 +328,20 @@ END`, // need to filter out Result Sets that should be completely omitted. { Query: "CALL p1(0)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "CALL p1(1)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "CALL p1(2)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // https://github.com/dolthub/dolt/issues/6230 Query: "CALL p1(200)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, }, }, @@ -362,15 +362,15 @@ END`, // need to filter out Result Sets that should be completely omitted. { Query: "CALL p1(0)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "CALL p1(1)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "CALL p1(2)", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, }, }, @@ -455,49 +455,49 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"aaaabbbb"}, }, }, { Query: "CALL p1(3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abbbb"}, }, }, { Query: "CALL p1(6)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bb"}, }, }, { Query: "CALL p1(9)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {""}, }, }, { Query: "CALL p2(1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "CALL p2(2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bc"}, }, }, { Query: "CALL p2(3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c"}, }, }, { Query: "CALL p2(4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {""}, }, }, @@ -519,13 +519,13 @@ END;`, }, { Query: "CALL p5(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"aa"}, }, }, { Query: "CALL p5(1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a"}, }, }, @@ -552,7 +552,7 @@ END;`, Assertions: []ScriptTestAssertion{ { // Enforces that this is the expected output from the query normally 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{ + Expected: []sql.UntypedSqlRow{ {int64(1), "z", "d"}, {int64(2), "y", "e"}, {int64(3), "x", "f"}, @@ -560,7 +560,7 @@ END;`, }, { Query: "CALL p1()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "z", "d"}, {int64(2), "y", "e"}, {int64(3), "x", "f"}, @@ -568,7 +568,7 @@ END;`, }, { Query: "CALL p2()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "z", "d"}, {int64(2), "y", "e"}, {int64(3), "x", "f"}, @@ -577,7 +577,7 @@ END;`, { SkipResultCheckOnServerEngine: true, // tracking issue: https://github.com/dolthub/dolt/issues/6918 Query: "CALL p3()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "z", "d"}, {int64(2), "y", "e"}, {int64(3), "x", "f"}, @@ -585,7 +585,7 @@ END;`, }, { Query: "CALL p4()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "z", "d"}, {int64(2), "y", "e"}, {int64(3), "x", "f"}, @@ -594,7 +594,7 @@ END;`, { SkipResultCheckOnServerEngine: true, // tracking issue: https://github.com/dolthub/dolt/issues/6918 Query: "CALL p5()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "z", "d"}, {int64(2), "y", "e"}, {int64(3), "x", "f"}, @@ -613,21 +613,21 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(20)}, {int64(30)}, }, }, { Query: "CALL p1(2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(200)}, {int64(300)}, }, }, { Query: "CALL p1(5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(10)}, {int64(15)}, }, @@ -655,7 +655,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, {int64(3)}, @@ -663,7 +663,7 @@ END;`, }, { Query: "CALL p1(1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, {int64(3)}, @@ -687,13 +687,13 @@ INSERT INTO items (item) VALUES (txt)`, { SkipResultCheckOnServerEngine: true, // call depends on stored procedure stmt for whether to use 'query' or 'exec' from go sql driver. Query: "CALL add_item('A test item');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, InsertID: 1}}, }, }, { Query: "SELECT * FROM items;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "A test item"}, }, }, @@ -714,14 +714,14 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(3, 4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 6}, {3, 4}, }, }, { Query: "CALL p2(5, 6)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6, 8}, {5, 6}, }, @@ -744,13 +744,13 @@ END`, { SkipResultCheckOnServerEngine: true, // call depends on stored procedure stmt for whether to use 'query' or 'exec' from go sql driver. Query: "CALL add_item(6);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "SELECT * FROM items ORDER BY 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 5}, {2, 6}, {3, 7}, @@ -774,14 +774,14 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, }, }, { Query: "CALL p1(5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(6)}, {int64(7)}, }, @@ -797,13 +797,13 @@ END;`, { SkipResultCheckOnServerEngine: true, // the user var has null type, which returns nil value over the wire. Query: "CALL p1('hi')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, }, }, { Query: "CALL p1('hello')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(5)}, }, }, @@ -819,11 +819,11 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "SELECT @res1", - Expected: []sql.Row{{float64(6)}}, + Expected: []sql.UntypedSqlRow{{float64(6)}}, }, { Query: "SELECT @res2", - Expected: []sql.Row{{float64(85.5)}}, + Expected: []sql.UntypedSqlRow{{float64(85.5)}}, }, }, }, @@ -837,11 +837,11 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "SELECT @res1, @res2", - Expected: []sql.Row{{float64(6), float64(5)}}, + Expected: []sql.UntypedSqlRow{{float64(6), float64(5)}}, }, { Query: "SELECT @res3, @res4", - Expected: []sql.Row{{float64(85.5), float64(18.5)}}, + Expected: []sql.UntypedSqlRow{{float64(85.5), float64(18.5)}}, }, }, }, @@ -858,7 +858,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "SELECT @shelf1, @shelf2, @shelf3", - Expected: []sql.Row{{3, 1, 0}}, + Expected: []sql.UntypedSqlRow{{3, 1, 0}}, }, }, }, @@ -875,11 +875,11 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "SELECT @result1", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT @result2", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -897,7 +897,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "SELECT @s1, @s2", - Expected: []sql.Row{{3, "d"}}, + Expected: []sql.UntypedSqlRow{{3, "d"}}, }, }, }, @@ -914,11 +914,11 @@ END`, Assertions: []ScriptTestAssertion{ { Query: "CALL count_and_print(1, @total)", - Expected: []sql.Row{{"a"}, {"b"}, {"d"}}, + Expected: []sql.UntypedSqlRow{{"a"}, {"b"}, {"d"}}, }, { Query: "SELECT @total", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, }, }, @@ -943,13 +943,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(@x);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 2, "a"}, }, }, { Query: "SELECT @x;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6}, }, }, @@ -968,7 +968,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {9}, }, }, @@ -986,15 +986,15 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "SET @x = 2;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "CALL p1(@x);", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT @x;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -1118,7 +1118,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, @@ -1147,7 +1147,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, @@ -1164,19 +1164,19 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "call limited(1,0)", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "call limited(2,0)", - Expected: []sql.Row{{0}, {1}}, + Expected: []sql.UntypedSqlRow{{0}, {1}}, }, { Query: "call limited(2,2)", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "call limited_uns(2,2)", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "CREATE PROCEDURE limited_inv(the_limit CHAR(3), the_offset INT) SELECT * FROM t LIMIT the_limit OFFSET the_offset", @@ -1211,7 +1211,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, @@ -1235,7 +1235,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, @@ -1276,15 +1276,15 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL eof();", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "CALL duplicate_key();", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "CALL duplicate_key();", - Expected: []sql.Row{{7}}, + Expected: []sql.UntypedSqlRow{{7}}, }, }, }, @@ -1327,11 +1327,11 @@ END`, Assertions: []ScriptTestAssertion{ { Query: "CALL curdemo()", - Expected: []sql.Row{{"success"}}, + Expected: []sql.UntypedSqlRow{{"success"}}, }, { Query: "SELECT * from t3", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "INSERT INTO t1 values ('a', 10), ('b', 20)", @@ -1341,11 +1341,11 @@ END`, }, { Query: "CALL curdemo()", - Expected: []sql.Row{{"success"}}, + Expected: []sql.UntypedSqlRow{{"success"}}, }, { Query: "SELECT * from t3", - Expected: []sql.Row{{"a", 10}, {"b", 15}}, + Expected: []sql.UntypedSqlRow{{"a", 10}, {"b", 15}}, }, }, }, @@ -1393,11 +1393,11 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL outer_declare();", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "CALL inner_declare();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1001}, }, }, @@ -1421,7 +1421,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, @@ -1447,7 +1447,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {50}, }, }, @@ -1468,7 +1468,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -1503,7 +1503,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2230}, }, }, @@ -1539,7 +1539,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2230}, }, }, @@ -1574,7 +1574,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2230}, }, }, @@ -1592,13 +1592,13 @@ END`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(@uservar4);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT @uservar4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"5"}, }, }, @@ -1634,13 +1634,13 @@ END`, { SkipResultCheckOnServerEngine: true, // call depends on stored procedure stmt for whether to use 'query' or 'exec' from go sql driver. Query: "call create_cal_entries_for_event('cb8ba301-6c27-4bf8-b99b-617082d72621');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "SELECT * FROM person_cal_entries;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"d17cb898-7b9b-11ed-a1eb-0242ac120002", "cb8ba301-6c27-4bf8-b99b-617082d72621", "6140e23e-7b9b-11ed-a1eb-0242ac120002"}, }, }, @@ -1660,18 +1660,18 @@ BEGIN INSERT INTO test (id) VALUES (val); END IF; END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CALL populate(1);", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, }}}, SkipResultCheckOnServerEngine: true, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -1691,18 +1691,18 @@ BEGIN INSERT INTO test (id) VALUES (val); END IF; END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CALL populate(1);", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, }}}, SkipResultCheckOnServerEngine: true, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -1724,18 +1724,18 @@ BEGIN SELECT 0; END IF; END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CALL populate(1);", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, }}}, SkipResultCheckOnServerEngine: true, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -1768,7 +1768,7 @@ END`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -1899,11 +1899,11 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL stable();", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "CALL fragile();", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "SHOW PROCEDURE STATUS LIKE 'stable'", @@ -1915,11 +1915,11 @@ END;`, }, { Query: "alter table t drop other;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CALL stable();", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "CALL fragile();", @@ -1935,27 +1935,27 @@ END;`, }, { Query: "ALTER TABLE t ADD COLUMN other INT", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "CALL stable();", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "CALL fragile();", - Expected: []sql.Row{{nil}, {nil}, {nil}}, + Expected: []sql.UntypedSqlRow{{nil}, {nil}, {nil}}, }, { Query: "INSERT INTO t VALUES (4, 4), (5, 5), (6, 6);", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "CALL stable();", - Expected: []sql.Row{{1}, {2}, {3}, {4}, {5}, {6}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}, {5}, {6}}, }, { Query: "CALL fragile();", - Expected: []sql.Row{{nil}, {nil}, {nil}, {4}, {5}, {6}}, + Expected: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {4}, {5}, {6}}, }, }, }, @@ -2123,7 +2123,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1234}, }, }, @@ -2141,7 +2141,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL p1(1234);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1234}, }, }, @@ -2176,7 +2176,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "CALL computeSummary('i am not used');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(0.5), 4}, }, }, @@ -2195,7 +2195,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(9), }, @@ -2213,7 +2213,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { nil, }, @@ -2231,7 +2231,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(9), }, @@ -2249,7 +2249,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(5), }, @@ -2269,7 +2269,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(777), }, @@ -2287,7 +2287,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @outparam", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { nil, }, @@ -2334,7 +2334,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL proc1(1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(6), }, @@ -2342,28 +2342,28 @@ var ProcedureCallTests = []ScriptTest{ }, { Query: "CALL proc1(2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(2), }, }, }, { Query: "CALL proc1(4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(0), }, }, }, { Query: "CALL proc2(3, @foo)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(1), }, }, }, { Query: "SELECT @foo", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(44), }, @@ -2381,23 +2381,23 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL p1()", - Expected: []sql.Row{{42}}, + Expected: []sql.UntypedSqlRow{{42}}, }, { Query: "CALL mydb.p1()", - Expected: []sql.Row{{42}}, + Expected: []sql.UntypedSqlRow{{42}}, }, { Query: "CALL otherdb.p1()", - Expected: []sql.Row{{43}}, + Expected: []sql.UntypedSqlRow{{43}}, }, { Query: "USE otherdb", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "CALL p1()", - Expected: []sql.Row{{43}}, + Expected: []sql.UntypedSqlRow{{43}}, }, }, }, @@ -2411,15 +2411,15 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL joe('open')", - Expected: []sql.Row{{"joe's bar:open"}}, + Expected: []sql.UntypedSqlRow{{"joe's bar:open"}}, }, { Query: "CALL jill('closed')", - Expected: []sql.Row{{"jill's bar:closed"}}, + Expected: []sql.UntypedSqlRow{{"jill's bar:closed"}}, }, { Query: "CALL stan('quarantined')", - Expected: []sql.Row{{"stan's bar:quarantined"}}, + Expected: []sql.UntypedSqlRow{{"stan's bar:quarantined"}}, }, }, }, @@ -2437,7 +2437,7 @@ var ProcedureCallTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL populate_if_empty();", - Expected: []sql.Row{{"hi"}}, + Expected: []sql.UntypedSqlRow{{"hi"}}, }, }, }, @@ -2453,7 +2453,7 @@ var ProcedureDropTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CALL p1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(5), }, @@ -2461,7 +2461,7 @@ var ProcedureDropTests = []ScriptTest{ }, { Query: "CALL p2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { int64(6), }, @@ -2469,7 +2469,7 @@ var ProcedureDropTests = []ScriptTest{ }, { Query: "DROP PROCEDURE p1", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CALL p1", @@ -2477,7 +2477,7 @@ var ProcedureDropTests = []ScriptTest{ }, { Query: "DROP PROCEDURE IF EXISTS p2", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CALL p2", @@ -2489,7 +2489,7 @@ var ProcedureDropTests = []ScriptTest{ }, { Query: "DROP PROCEDURE IF EXISTS p4", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, }, }, @@ -2506,7 +2506,7 @@ var ProcedureShowStatus = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW PROCEDURE STATUS", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mydb", // Db "p1", // Name @@ -2550,7 +2550,7 @@ var ProcedureShowStatus = []ScriptTest{ }, { Query: "SHOW PROCEDURE STATUS LIKE 'p2%'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mydb", // Db "p2", // Name @@ -2581,11 +2581,11 @@ var ProcedureShowStatus = []ScriptTest{ }, { Query: "SHOW PROCEDURE STATUS LIKE 'p4'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SHOW PROCEDURE STATUS WHERE Db = 'mydb'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mydb", // Db "p1", // Name @@ -2629,7 +2629,7 @@ var ProcedureShowStatus = []ScriptTest{ }, { Query: "SHOW PROCEDURE STATUS WHERE Name LIKE '%1'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mydb", // Db "p1", // Name @@ -2660,7 +2660,7 @@ var ProcedureShowStatus = []ScriptTest{ }, { Query: "SHOW PROCEDURE STATUS WHERE Security_type = 'INVOKER'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mydb", // Db "p2", // Name @@ -2678,7 +2678,7 @@ var ProcedureShowStatus = []ScriptTest{ }, { Query: "SHOW PROCEDURE STATUS", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "mydb", // Db "p1", // Name @@ -2735,7 +2735,7 @@ var ProcedureShowCreate = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE PROCEDURE p1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "p1", // Procedure "", // sql_mode @@ -2748,7 +2748,7 @@ var ProcedureShowCreate = []ScriptTest{ }, { Query: "SHOW CREATE PROCEDURE p2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "p2", // Procedure "", // sql_mode @@ -2761,7 +2761,7 @@ var ProcedureShowCreate = []ScriptTest{ }, { Query: "SHOW CREATE PROCEDURE p21", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "p21", // Procedure "", // sql_mode @@ -2828,15 +2828,15 @@ var ProcedureCreateInSubroutineTests = []ScriptTest{ var NoDbProcedureTests = []ScriptTestAssertion{ { Query: "SHOW databases;", - Expected: []sql.Row{{"information_schema"}, {"mydb"}, {"mysql"}}, + Expected: []sql.UntypedSqlRow{{"information_schema"}, {"mydb"}, {"mysql"}}, }, { Query: "SELECT database();", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "CREATE PROCEDURE mydb.p5() SELECT 42;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE PROCEDURE mydb.p5;", diff --git a/enginetest/queries/queries.go b/enginetest/queries/queries.go index 138d4e2668..f57f0fdc63 100644 --- a/enginetest/queries/queries.go +++ b/enginetest/queries/queries.go @@ -31,7 +31,7 @@ import ( type QueryTest struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow ExpectedColumns sql.Schema // only Name and Type matter here, because that's what we send on the wire Bindings map[string]sqlparser.Expr SkipPrepared bool @@ -65,7 +65,7 @@ var QueryPlanTODOs = []QueryPlanTest{ var SpatialQueryTests = []QueryTest{ { Query: `SHOW CREATE TABLE point_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "point_table", "CREATE TABLE `point_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -76,7 +76,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SHOW CREATE TABLE line_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "line_table", "CREATE TABLE `line_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -87,7 +87,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SHOW CREATE TABLE polygon_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "polygon_table", "CREATE TABLE `polygon_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -98,7 +98,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SHOW CREATE TABLE mpoint_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "mpoint_table", "CREATE TABLE `mpoint_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -109,7 +109,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SHOW CREATE TABLE mline_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "mline_table", "CREATE TABLE `mline_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -120,7 +120,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SHOW CREATE TABLE mpoly_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "mpoly_table", "CREATE TABLE `mpoly_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -131,7 +131,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SHOW CREATE TABLE geometry_table`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "geometry_table", "CREATE TABLE `geometry_table` (\n" + " `i` bigint NOT NULL,\n" + @@ -142,143 +142,143 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT HEX(ST_ASWKB(p)) from point_table`, - Expected: []sql.Row{{"0101000000000000000000F03F0000000000000040"}}, + Expected: []sql.UntypedSqlRow{{"0101000000000000000000F03F0000000000000040"}}, }, { Query: `SELECT HEX(ST_ASWKB(l)) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"010200000002000000000000000000F03F000000000000004000000000000008400000000000001040"}, {"010200000003000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840"}, }, }, { Query: `SELECT HEX(ST_ASWKB(p)) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"01030000000100000004000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F00000000000000000000000000000000"}, {"01030000000200000004000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F0000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F00000000000000000000000000000000"}, }, }, { Query: `SELECT ST_GEOMFROMWKB(ST_ASWKB(POINT(123.45,6.78)))`, - Expected: []sql.Row{{types.Point{X: 123.45, Y: 6.78}}}, + Expected: []sql.UntypedSqlRow{{types.Point{X: 123.45, Y: 6.78}}}, }, { Query: `SELECT ST_GEOMFROMWKB(ST_ASWKB(LINESTRING(POINT(1.2,3.45),point(67.8,9))))`, - Expected: []sql.Row{{types.LineString{Points: []types.Point{{X: 1.2, Y: 3.45}, {X: 67.8, Y: 9}}}}}, + Expected: []sql.UntypedSqlRow{{types.LineString{Points: []types.Point{{X: 1.2, Y: 3.45}, {X: 67.8, Y: 9}}}}}, }, { Query: `SELECT ST_GEOMFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0),POINT(2,2),POINT(1,1),POINT(0,0)))))`, - Expected: []sql.Row{{types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 2, Y: 2}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}}, + Expected: []sql.UntypedSqlRow{{types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 2, Y: 2}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}}, }, { Query: `SELECT ST_ASWKT(p) from point_table`, - Expected: []sql.Row{{"POINT(1 2)"}}, + Expected: []sql.UntypedSqlRow{{"POINT(1 2)"}}, }, { Query: `SELECT ST_ASWKT(l) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"LINESTRING(1 2,3 4)"}, {"LINESTRING(1 2,3 4,5 6)"}, }, }, { Query: `SELECT ST_ASWKT(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POLYGON((0 0,0 1,1 1,0 0))"}, {"POLYGON((0 0,0 1,1 1,0 0),(0 0,0 1,1 1,0 0))"}, }, }, { Query: `SELECT ST_ASTEXT(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POLYGON((0 0,0 1,1 1,0 0))"}, {"POLYGON((0 0,0 1,1 1,0 0),(0 0,0 1,1 1,0 0))"}, }, }, { Query: `SELECT ST_GEOMFROMTEXT(ST_ASWKT(POINT(1,2)))`, - Expected: []sql.Row{{types.Point{X: 1, Y: 2}}}, + Expected: []sql.UntypedSqlRow{{types.Point{X: 1, Y: 2}}}, }, { Query: `SELECT ST_GEOMFROMTEXT(ST_ASWKT(LINESTRING(POINT(1.1,2.22),POINT(3.333,4.4444))))`, - Expected: []sql.Row{{types.LineString{Points: []types.Point{{X: 1.1, Y: 2.22}, {X: 3.333, Y: 4.4444}}}}}, + Expected: []sql.UntypedSqlRow{{types.LineString{Points: []types.Point{{X: 1.1, Y: 2.22}, {X: 3.333, Y: 4.4444}}}}}, }, { Query: `SELECT ST_GEOMFROMTEXT(ST_ASWKT(POLYGON(LINESTRING(POINT(1.2, 3.4),POINT(2.5, -6.7),POINT(33, 44),POINT(1.2,3.4)))))`, - Expected: []sql.Row{{types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 1.2, Y: 3.4}, {X: 2.5, Y: -6.7}, {X: 33, Y: 44}, {X: 1.2, Y: 3.4}}}}}}}, + Expected: []sql.UntypedSqlRow{{types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 1.2, Y: 3.4}, {X: 2.5, Y: -6.7}, {X: 33, Y: 44}, {X: 1.2, Y: 3.4}}}}}}}, }, { Query: `SELECT ST_X(POINT(1,2))`, - Expected: []sql.Row{{1.0}}, + Expected: []sql.UntypedSqlRow{{1.0}}, }, { Query: `SELECT ST_Y(POINT(1,2))`, - Expected: []sql.Row{{2.0}}, + Expected: []sql.UntypedSqlRow{{2.0}}, }, { Query: `SELECT ST_X(POINT(123.45,6.789))`, - Expected: []sql.Row{{123.45}}, + Expected: []sql.UntypedSqlRow{{123.45}}, }, { Query: `SELECT ST_Y(POINT(123.45,6.789))`, - Expected: []sql.Row{{6.789}}, + Expected: []sql.UntypedSqlRow{{6.789}}, }, { Query: `SELECT ST_X(POINT(1,2),99.9)`, - Expected: []sql.Row{{types.Point{X: 99.9, Y: 2}}}, + Expected: []sql.UntypedSqlRow{{types.Point{X: 99.9, Y: 2}}}, }, { Query: `SELECT ST_Y(POINT(1,2),99.9)`, - Expected: []sql.Row{{types.Point{X: 1, Y: 99.9}}}, + Expected: []sql.UntypedSqlRow{{types.Point{X: 1, Y: 99.9}}}, }, { Query: `SELECT ST_X(p) from point_table`, - Expected: []sql.Row{{1.0}}, + Expected: []sql.UntypedSqlRow{{1.0}}, }, { Query: `SELECT ST_X(p) from point_table`, - Expected: []sql.Row{{1.0}}, + Expected: []sql.UntypedSqlRow{{1.0}}, }, { Query: `SELECT ST_Y(p) from point_table`, - Expected: []sql.Row{{2.0}}, + Expected: []sql.UntypedSqlRow{{2.0}}, }, { Query: `SELECT ST_SRID(p) from point_table`, - Expected: []sql.Row{{uint32(0)}}, + Expected: []sql.UntypedSqlRow{{uint32(0)}}, }, { Query: `SELECT ST_SRID(l) from line_table`, - Expected: []sql.Row{{uint32(0)}, {uint32(0)}}, + Expected: []sql.UntypedSqlRow{{uint32(0)}, {uint32(0)}}, }, { Query: `SELECT ST_SRID(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint32(0)}, {uint32(0)}, }, }, { Query: `SELECT ST_SRID(p, 4326) from point_table`, - Expected: []sql.Row{{types.Point{SRID: 4326, X: 1, Y: 2}}}, + Expected: []sql.UntypedSqlRow{{types.Point{SRID: 4326, X: 1, Y: 2}}}, }, { Query: `SELECT ST_SRID(l, 4326) from line_table ORDER BY l`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.LineString{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}}}}, {types.LineString{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}, {SRID: 4326, X: 5, Y: 6}}}}, }, }, { Query: `SELECT ST_SRID(p, 4326) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Polygon{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 0, Y: 1}, {SRID: 4326, X: 1, Y: 1}, {SRID: 4326, X: 0, Y: 0}}}}}}, {types.Polygon{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 0, Y: 1}, {SRID: 4326, X: 1, Y: 1}, {SRID: 4326, X: 0, Y: 0}}}, {SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 0, Y: 1}, {SRID: 4326, X: 1, Y: 1}, {SRID: 4326, X: 0, Y: 0}}}}}}, }, }, { Query: `SELECT ST_GEOMFROMGEOJSON(s) from stringtogeojson_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Point{SRID: 4326, X: 1, Y: 2}}, {types.Point{SRID: 4326, X: 123.45, Y: 56.789}}, {types.LineString{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}}}}, @@ -297,41 +297,41 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_ASGEOJSON(p) from point_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.JSONDocument{Val: map[string]interface{}{"type": "Point", "coordinates": [2]float64{1, 2}}}}, }, }, { Query: `SELECT ST_ASGEOJSON(l) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.JSONDocument{Val: map[string]interface{}{"type": "LineString", "coordinates": [][2]float64{{1, 2}, {3, 4}}}}}, {types.JSONDocument{Val: map[string]interface{}{"type": "LineString", "coordinates": [][2]float64{{1, 2}, {3, 4}, {5, 6}}}}}, }, }, { Query: `SELECT ST_ASGEOJSON(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.JSONDocument{Val: map[string]interface{}{"type": "Polygon", "coordinates": [][][2]float64{{{0, 0}, {0, 1}, {1, 1}, {0, 0}}}}}}, {types.JSONDocument{Val: map[string]interface{}{"type": "Polygon", "coordinates": [][][2]float64{{{0, 0}, {0, 1}, {1, 1}, {0, 0}}, {{0, 0}, {0, 1}, {1, 1}, {0, 0}}}}}}, }, }, { Query: `SELECT ST_ASGEOJSON(p) from mpoint_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.JSONDocument{Val: map[string]interface{}{"type": "MultiPoint", "coordinates": [][2]float64{{1, 2}, {3, 4}}}}}, {types.JSONDocument{Val: map[string]interface{}{"type": "MultiPoint", "coordinates": [][2]float64{{1, 2}, {3, 4}, {5, 6}}}}}, }, }, { Query: `SELECT ST_ASGEOJSON(l) from mline_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.JSONDocument{Val: map[string]interface{}{"type": "MultiLineString", "coordinates": [][][2]float64{{{1, 2}, {3, 4}}}}}}, {types.JSONDocument{Val: map[string]interface{}{"type": "MultiLineString", "coordinates": [][][2]float64{{{1, 2}, {3, 4}, {5, 6}}}}}}, }, }, { Query: `SELECT ST_ASGEOJSON(ST_GEOMFROMGEOJSON(s)) from stringtogeojson_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.JSONDocument{Val: map[string]interface{}{"type": "Point", "coordinates": [2]float64{1, 2}}}}, {types.JSONDocument{Val: map[string]interface{}{"type": "Point", "coordinates": [2]float64{123.45, 56.789}}}}, {types.JSONDocument{Val: map[string]interface{}{"type": "LineString", "coordinates": [][2]float64{{1, 2}, {3, 4}}}}}, @@ -347,41 +347,41 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(p)) from point_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Point{SRID: 4326, X: 1, Y: 2}}, }, }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(l)) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.LineString{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}}}}, {types.LineString{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}, {SRID: 4326, X: 5, Y: 6}}}}, }, }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(p)) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Polygon{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 0, Y: 1}, {SRID: 4326, X: 1, Y: 1}, {SRID: 4326, X: 0, Y: 0}}}}}}, {types.Polygon{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 0, Y: 1}, {SRID: 4326, X: 1, Y: 1}, {SRID: 4326, X: 0, Y: 0}}}, {SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 0, Y: 1}, {SRID: 4326, X: 1, Y: 1}, {SRID: 4326, X: 0, Y: 0}}}}}}, }, }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(p)) from mpoint_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MultiPoint{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}}}}, {types.MultiPoint{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}, {SRID: 4326, X: 5, Y: 6}}}}, }, }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(l)) from mline_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MultiLineString{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}}}}}}, {types.MultiLineString{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}, {SRID: 4326, X: 5, Y: 6}}}}}}, }, }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(p)) from mpoly_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MultiPolygon{SRID: 4326, Polygons: []types.Polygon{{SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}, {SRID: 4326, X: 0, Y: 0}}}}}}}}, {types.MultiPolygon{SRID: 4326, Polygons: []types.Polygon{ {SRID: 4326, Lines: []types.LineString{{SRID: 4326, Points: []types.Point{{SRID: 4326, X: 0, Y: 0}, {SRID: 4326, X: 1, Y: 2}, {SRID: 4326, X: 3, Y: 4}, {SRID: 4326, X: 0, Y: 0}}}}}, @@ -390,80 +390,80 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_GEOMFROMGEOJSON(ST_ASGEOJSON(g)) from geom_coll_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.GeomColl{SRID: 4326, Geoms: []types.GeometryValue{types.GeomColl{SRID: 4326, Geoms: []types.GeometryValue{}}}}}, }, }, { Query: `SELECT ST_DIMENSION(p) from point_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: `SELECT ST_DIMENSION(l) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, }, }, { Query: `SELECT ST_DIMENSION(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {2}, }, }, { Query: `SELECT ST_DIMENSION(p) from mpoint_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {0}, }, }, { Query: `SELECT ST_DIMENSION(l) from mline_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, }, }, { Query: `SELECT ST_DIMENSION(p) from mpoly_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {2}, }, }, { Query: `SELECT ST_DIMENSION(g) from geom_coll_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `SELECT ST_SWAPXY(p) from point_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Point{X: 2, Y: 1}}, }, }, { Query: `SELECT ST_SWAPXY(l) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.LineString{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}}}}, {types.LineString{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}, {X: 6, Y: 5}}}}, }, }, { Query: `SELECT ST_SWAPXY(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 1, Y: 0}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}, {types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 1, Y: 0}, {X: 1, Y: 1}, {X: 0, Y: 0}}}, {Points: []types.Point{{X: 0, Y: 0}, {X: 1, Y: 0}, {X: 1, Y: 1}, {X: 0, Y: 0}}}}}}, }, }, { Query: `SELECT ST_ASWKT(g) from geometry_table ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POINT(1 2)"}, {"POINT(2 1)"}, {"LINESTRING(1 2,3 4)"}, @@ -482,21 +482,21 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_SWAPXY(p) from mpoint_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MultiPoint{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}}}}, {types.MultiPoint{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}, {X: 6, Y: 5}}}}, }, }, { Query: `SELECT ST_SWAPXY(l) from mline_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MultiLineString{Lines: []types.LineString{{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}}}}}}, {types.MultiLineString{Lines: []types.LineString{{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}, {X: 6, Y: 5}}}}}}, }, }, { Query: `SELECT ST_SWAPXY(p) from mpoly_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MultiPolygon{Polygons: []types.Polygon{{Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 2, Y: 1}, {X: 4, Y: 3}, {X: 0, Y: 0}}}}}}}}, {types.MultiPolygon{Polygons: []types.Polygon{ {Lines: []types.LineString{{Points: []types.Point{{X: 0, Y: 0}, {X: 2, Y: 1}, {X: 4, Y: 3}, {X: 0, Y: 0}}}}}, @@ -506,7 +506,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT HEX(ST_ASWKB(g)) from geometry_table ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0101000000000000000000F03F0000000000000040"}, {"01010000000000000000000040000000000000F03F"}, {"010200000002000000000000000000F03F000000000000004000000000000008400000000000001040"}, @@ -525,7 +525,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_SRID(g) from geometry_table order by i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0)}, {uint64(4326)}, {uint64(0)}, @@ -544,7 +544,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_SRID(g, 0) from geometry_table order by i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Point{X: 1, Y: 2}}, {types.Point{X: 1, Y: 2}}, {types.LineString{Points: []types.Point{{X: 1, Y: 2}, {X: 3, Y: 4}}}}, @@ -563,7 +563,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_DIMENSION(g) from geometry_table order by i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {0}, {1}, @@ -582,7 +582,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_SWAPXY(g) from geometry_table order by i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.Point{X: 2, Y: 1}}, {types.Point{SRID: 4326, X: 2, Y: 1}}, {types.LineString{Points: []types.Point{{X: 2, Y: 1}, {X: 4, Y: 3}}}}, @@ -601,58 +601,58 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_AREA(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.5}, {0.0}, }, }, { Query: `SELECT ST_PERIMETER(p) from polygon_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3.414213562373095}, {6.82842712474619}, }, }, { Query: `SELECT ST_LENGTH(l) from line_table`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2.8284271247461903}, {5.656854249492381}, }, }, { Query: `SELECT ST_ASWKT(g) from geometry_table where g = point(1,2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POINT(1 2)"}, }, }, { Query: `SELECT ST_ASWKT(g) from geometry_table where g = st_srid(point(1,2),4326)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POINT(2 1)"}, }, }, { Query: `SELECT ST_ASWKT(g) from geometry_table where g = unhex(hex(point(1,2)))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POINT(1 2)"}, }, }, { Query: `SELECT unhex(hex(point(1,2))) < unhex(hex(point(3,4)))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: `SELECT ST_ASWKT(g) from geometry_table where g = st_geomfromtext('MultiPolygon(((0 0,1 2,3 4,0 0)))')`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"MULTIPOLYGON(((0 0,1 2,3 4,0 0)))"}, }, }, { Query: `SELECT ST_ASWKT(g) from geometry_table ORDER BY g`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"POINT(1 2)"}, {"LINESTRING(1 2,3 4)"}, {"POLYGON((0 0,0 1,1 1,0 0))"}, @@ -671,7 +671,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT ST_DISTANCE(st_srid(g, 0), point(0,0)) from geometry_table ORDER BY g`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {math.Sqrt(5)}, {math.Sqrt(5)}, {0.0}, @@ -690,7 +690,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT st_startpoint(g) from geometry_table ORDER BY g`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {types.Point{X: 1, Y: 2}}, {nil}, @@ -709,7 +709,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT st_endpoint(g) from geometry_table ORDER BY g`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {types.Point{X: 3, Y: 4}}, {nil}, @@ -728,7 +728,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT st_isclosed(g) from geometry_table ORDER BY g`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {false}, {nil}, @@ -747,7 +747,7 @@ var SpatialQueryTests = []QueryTest{ }, { Query: `SELECT st_intersects(st_srid(g, 0), point(1,2)) from geometry_table ORDER BY g`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, {true}, {false}, @@ -769,13 +769,13 @@ var SpatialQueryTests = []QueryTest{ var QueryTests = []QueryTest{ { Query: "select 0 as col1, 1 as col2, 2 as col2 group by col2 having col2 = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 2}, }, }, { Query: "select count(i) from mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, @@ -783,84 +783,84 @@ var QueryTests = []QueryTest{ // Assert that SYSDATE() returns different times on each call in a query (unlike NOW()) // Using the maximum precision for fractional seconds, lets us see a difference. Query: "select now() = sysdate(), sleep(0.1), now(6) < sysdate(6);", - Expected: []sql.Row{{true, 0, true}}, + Expected: []sql.UntypedSqlRow{{true, 0, true}}, }, { Query: "select 1 as x from xy having AVG(x) > 0", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select 1 as x, AVG(x) from xy group by (y) having AVG(x) > 0", - Expected: []sql.Row{{1, float64(1)}, {1, float64(2)}, {1, float64(3)}}, + Expected: []sql.UntypedSqlRow{{1, float64(1)}, {1, float64(2)}, {1, float64(3)}}, }, { Query: "select y as x from xy group by (y) having AVG(x) > 0", - Expected: []sql.Row{{0}, {1}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {3}}, }, //{ // Query: "select y as z from xy group by (y) having AVG(z) > 0", - // Expected: []sql.Row{{1}, {2}, {3}}, + // Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, //}, { Query: "SELECT * FROM mytable t0 INNER JOIN mytable t1 ON (t1.i IN (((true)%(''))));", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select x from xy where y in (select xy.x from xy join (select t2.y from xy t2 where exists (select t3.y from xy t3 where t3.y = xy.x)) t1) order by 1;", - Expected: []sql.Row{{0}, {1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { Query: "select x from xy where y in (select x from xy where x in (select y from xy)) order by 1;", - Expected: []sql.Row{{0}, {1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { Query: "SELECT 1 WHERE ((1 IN (NULL >= 1)) IS NULL);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 WHERE (1 IN (NULL NOT BETWEEN -1 AND 1)) IS NULL;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 WHERE ((1 IN (NULL * 1)) IS NULL);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT count(*) from mytable WHERE ((i IN (NULL >= 1)) IS NULL);", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT count(*) from mytable WHERE (i IN (NULL NOT BETWEEN -1 AND 1)) IS NULL;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT count(*) from mytable WHERE ((i IN (NULL * 1)) IS NULL);", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT count(*) from mytable WHERE (i IN (-''));", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT 1 % true", - Expected: []sql.Row{{"0"}}, + Expected: []sql.UntypedSqlRow{{"0"}}, }, { Query: "SELECT * from mytable where (0.000 and true)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * from mytable where (-0.000 and true)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 WHERE power(88.0447354000000000000000333333333,100) % 1;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { SkipServerEngine: true, Query: "show full processlist", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from (select i, i2 from niltable) a(x,y) union select * from (select 1, NULL) b(x,y) union select * from (select i, i2 from niltable) c(x,y)", @@ -874,7 +874,7 @@ var QueryTests = []QueryTest{ Type: types.Int64, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, 2}, {3, nil}, @@ -895,7 +895,7 @@ var QueryTests = []QueryTest{ Type: types.Int64, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {1, nil}, }, @@ -912,7 +912,7 @@ var QueryTests = []QueryTest{ Type: types.MustCreateStringWithDefaults(sqltypes.VarChar, 20), }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -920,7 +920,7 @@ var QueryTests = []QueryTest{ }, { Query: `SELECT s as i, i as i from mytable order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", 1}, {"second row", 2}, {"third row", 3}, @@ -928,91 +928,91 @@ var QueryTests = []QueryTest{ }, { Query: "SELECT SUM(i), i FROM mytable GROUP BY i ORDER BY 1+SUM(i) ASC", - Expected: []sql.Row{{float64(1), 1}, {float64(2), 2}, {float64(3), 3}}, + Expected: []sql.UntypedSqlRow{{float64(1), 1}, {float64(2), 2}, {float64(3), 3}}, }, { Query: "SELECT SUM(i) as sum, i FROM mytable GROUP BY i ORDER BY 1+SUM(i) ASC", - Expected: []sql.Row{{float64(1), 1}, {float64(2), 2}, {float64(3), 3}}, + Expected: []sql.UntypedSqlRow{{float64(1), 1}, {float64(2), 2}, {float64(3), 3}}, }, { Query: "select count(1)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select count(100)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select sum(1)", - Expected: []sql.Row{{float64(1)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}}, }, { Query: "select sum(100)", - Expected: []sql.Row{{float64(100)}}, + Expected: []sql.UntypedSqlRow{{float64(100)}}, }, { Query: "select count(*) from mytable", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: `select count(*) as cnt from mytable`, - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "select count(*) from keyless", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select count(*) from xy", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select count(*) from xy alias", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select count(1) from mytable", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "select count(1) from xy", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select count(1) from xy, uv", - Expected: []sql.Row{{16}}, + Expected: []sql.UntypedSqlRow{{16}}, }, { Query: "select count('abc') from xy, uv", - Expected: []sql.Row{{16}}, + Expected: []sql.UntypedSqlRow{{16}}, }, { Query: "select sum('abc') from mytable", - Expected: []sql.Row{{float64(0)}}, + Expected: []sql.UntypedSqlRow{{float64(0)}}, }, { Query: "select sum(10) from mytable", - Expected: []sql.Row{{float64(30)}}, + Expected: []sql.UntypedSqlRow{{float64(30)}}, }, { Query: "select sum(1) from emptytable", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select * from (select count(*) from xy) dt", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select (select count(*) from xy), (select count(*) from uv)", - Expected: []sql.Row{{4, 4}}, + Expected: []sql.UntypedSqlRow{{4, 4}}, }, { Query: "select (select count(*) from xy), (select count(*) from uv), count(*) from ab", - Expected: []sql.Row{{4, 4, 4}}, + Expected: []sql.UntypedSqlRow{{4, 4, 4}}, }, { Query: "select i from mytable alias where i = 1 and s = 'first row'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: ` @@ -1023,7 +1023,7 @@ select u from (select * from uv) sq2 limit 1 offset 1;`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: ` @@ -1033,69 +1033,69 @@ Select * from ( Union Select x from xy where x in (select * from cte) ) dt;`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // https://github.com/dolthub/dolt/issues/5642 Query: "SELECT count(*) FROM mytable WHERE i = 3720481604718463778705849469618542795;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT count(*) FROM mytable WHERE i <> 3720481604718463778705849469618542795;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT count(*) FROM mytable WHERE i < 3720481604718463778705849469618542795 AND i > 0;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT count(*) FROM mytable WHERE i < 3720481604718463778705849469618542795 OR i > 0;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { // https://github.com/dolthub/dolt/issues/4874 Query: "select * from information_schema.columns where column_key in ('invalid_enum_value') and table_name = 'does_not_exist';", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select 0 in ('hi', 'bye'), 1 in ('hi', 'bye');", - Expected: []sql.Row{{true, false}}, + Expected: []sql.UntypedSqlRow{{true, false}}, }, { Query: "select count(*) from typestable where e1 in ('hi', 'bye');", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "select count(*) from typestable where e1 in ('', 'bye');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select count(*) from typestable where s1 in ('hi', 'bye');", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "select count(*) from typestable where s1 in ('', 'bye');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select count(*) from mytable where s in ('', 'first row');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select count(*) from mytable where s in (1, 'first row');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select count(*) from mytable where s in (NULL, 'first row');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select count(*) from niltable where i2 in (NULL, 1);", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT * FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -1113,7 +1113,7 @@ Select * from ( }, { Query: "SELECT mytable.* FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -1131,7 +1131,7 @@ Select * from ( }, { Query: "SELECT `mytable`.* FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -1149,7 +1149,7 @@ Select * from ( }, { Query: "SELECT `i`, `s` FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -1167,7 +1167,7 @@ Select * from ( }, { Query: "SELECT * FROM mytable ORDER BY i DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), "third row"}, {int64(2), "second row"}, {int64(1), "first row"}, @@ -1175,7 +1175,7 @@ Select * from ( }, { Query: "SELECT * FROM mytable GROUP BY i,s;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -1183,43 +1183,43 @@ Select * from ( }, { Query: "SELECT count(*), i, concat(i, i), 123, 'abc', concat('abc', 'def') FROM emptytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil, 123, "abc", "abcdef"}, }, }, { Query: "SELECT count(*), i, concat(i, i), 123, 'abc', concat('abc', 'def') FROM mytable where false;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil, 123, "abc", "abcdef"}, }, }, { Query: "SELECT pk, u, v FROM one_pk JOIN (SELECT count(*) AS u, 123 AS v FROM emptytable) uv WHERE pk = u;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 123}, }, }, { Query: "SELECT pk, u, v FROM one_pk JOIN (SELECT count(*) AS u, 123 AS v FROM mytable WHERE false) uv WHERE pk = u;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 123}, }, }, { Query: "SELECT pk FROM one_pk WHERE (pk, 123) IN (SELECT count(*) AS u, 123 AS v FROM emptytable);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "SELECT pk FROM one_pk WHERE (pk, 123) IN (SELECT count(*) AS u, 123 AS v FROM mytable WHERE false);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "SELECT pk FROM one_pk WHERE (pk, 123) NOT IN (SELECT count(*) AS u, 123 AS v FROM emptytable);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -1227,7 +1227,7 @@ Select * from ( }, { Query: "SELECT pk FROM one_pk WHERE (pk, 123) NOT IN (SELECT count(*) AS u, 123 AS v FROM mytable WHERE false);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -1235,7 +1235,7 @@ Select * from ( }, { Query: "SELECT i FROM mytable WHERE EXISTS (SELECT * FROM (SELECT count(*) as u, 123 as v FROM emptytable) uv);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -1243,34 +1243,34 @@ Select * from ( }, { Query: "SELECT count(*), (SELECT i FROM mytable WHERE i = 1 group by i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, { Query: "SELECT pk DIV 2, SUM(c3) FROM one_pk GROUP BY 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), float64(14)}, {int64(1), float64(54)}, }, }, { Query: "SELECT pk DIV 2, SUM(c3) as sum FROM one_pk GROUP BY 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), float64(14)}, {int64(1), float64(54)}, }, }, { Query: "SELECT pk DIV 2, SUM(c3) + sum(c3) as sum FROM one_pk GROUP BY 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), float64(28)}, {int64(1), float64(108)}, }, }, { Query: "SELECT pk DIV 2, SUM(c3) + min(c3) as sum_and_min FROM one_pk GROUP BY 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), float64(16)}, {int64(1), float64(76)}, }, @@ -1287,7 +1287,7 @@ Select * from ( }, { Query: "SELECT pk DIV 2, SUM(`c3`) + min( c3 ) FROM one_pk GROUP BY 1 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), float64(16)}, {int64(1), float64(76)}, }, @@ -1304,30 +1304,30 @@ Select * from ( }, { Query: "SELECT pk1, SUM(c1) FROM two_pk GROUP BY pk1 ORDER BY pk1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 10.0}, {1, 50.0}, }, }, { Query: "select max(pk),c1+1 from one_pk group by c1 order by 1", - Expected: []sql.Row{{0, 1}, {1, 11}, {2, 21}, {3, 31}}, + Expected: []sql.UntypedSqlRow{{0, 1}, {1, 11}, {2, 21}, {3, 31}}, }, { Query: "SELECT pk1, SUM(c1) FROM two_pk WHERE pk1 = 0", - Expected: []sql.Row{{0, 10.0}}, + Expected: []sql.UntypedSqlRow{{0, 10.0}}, }, { Query: "SELECT i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i AS x FROM mytable ORDER BY i DESC", - Expected: []sql.Row{{3}, {2}, {1}}, + Expected: []sql.UntypedSqlRow{{3}, {2}, {1}}, }, { Query: "SELECT i AS s, mt.s FROM mytable mt ORDER BY i DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, {2, "second row"}, {1, "first row"}, @@ -1345,7 +1345,7 @@ Select * from ( }, { Query: "SELECT i AS s, s FROM mytable mt ORDER BY i DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, {2, "second row"}, {1, "first row"}, @@ -1353,7 +1353,7 @@ Select * from ( }, { Query: "SELECT floor(i), s FROM mytable mt ORDER BY floor(i) DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, {2, "second row"}, {1, "first row"}, @@ -1361,7 +1361,7 @@ Select * from ( }, { Query: "SELECT floor(i), avg(char_length(s)) FROM mytable mt group by 1 ORDER BY floor(i) DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 9.0}, {2, 10.0}, {1, 9.0}, @@ -1369,29 +1369,29 @@ Select * from ( }, { Query: "SELECT i AS x FROM mytable ORDER BY x DESC", - Expected: []sql.Row{{3}, {2}, {1}}, + Expected: []sql.UntypedSqlRow{{3}, {2}, {1}}, }, { Query: "SELECT i FROM mytable AS mt;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT s,i FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT mytable.s,i FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT t.s,i FROM mytable AS t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -1399,7 +1399,7 @@ Select * from ( }, { Query: "SELECT s,i FROM mytable order by i DESC;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third row", int64(3)}, {"second row", int64(2)}, {"first row", int64(1)}, @@ -1407,14 +1407,14 @@ Select * from ( }, { Query: "SELECT s,i FROM mytable as a order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT pk1, pk2 FROM two_pk order by pk1 asc, pk2 asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 1}, {1, 0}, @@ -1423,7 +1423,7 @@ Select * from ( }, { Query: "SELECT pk1, pk2 FROM two_pk order by pk1 asc, pk2 desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {0, 0}, {1, 1}, @@ -1432,7 +1432,7 @@ Select * from ( }, { Query: "SELECT pk1, pk2 FROM two_pk order by pk1 desc, pk2 desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {1, 0}, {0, 1}, @@ -1441,7 +1441,7 @@ Select * from ( }, { Query: "SELECT pk1, pk2 FROM two_pk group by pk1, pk2 order by pk1, pk2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 1}, {1, 0}, @@ -1450,7 +1450,7 @@ Select * from ( }, { Query: "SELECT pk1, pk2 FROM two_pk group by pk1, pk2 order by pk1 desc, pk2 desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {1, 0}, {0, 1}, @@ -1459,7 +1459,7 @@ Select * from ( }, { Query: "SELECT s,i FROM (select i,s FROM mytable) mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -1467,7 +1467,7 @@ Select * from ( }, { Query: "SELECT a,b FROM (select i,s FROM mytable) mt (a,b) order by 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -1475,7 +1475,7 @@ Select * from ( }, { Query: "SELECT a,b FROM (select i,s FROM mytable) mt (a,b) order by a desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, {2, "second row"}, {1, "first row"}, @@ -1483,7 +1483,7 @@ Select * from ( }, { Query: "SELECT a,b FROM (select i,s FROM mytable order by i desc) mt (a,b);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row"}, {2, "second row"}, {1, "first row"}, @@ -1501,7 +1501,7 @@ Select * from ( }, { Query: "SELECT a FROM (select i,s FROM mytable) mt (a,b) order by a desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, {2}, {1}, @@ -1509,7 +1509,7 @@ Select * from ( }, { Query: `SELECT * FROM (values row(1+1,2+2), row(floor(1.5),concat("a","b"))) a order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab"}, {2, "4"}, }, @@ -1526,7 +1526,7 @@ Select * from ( }, { Query: `SELECT * FROM (values row(1+1,2+2), row(floor(1.5),concat("a","b"))) a (c,d) order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab"}, {2, "4"}, }, @@ -1543,49 +1543,49 @@ Select * from ( }, { Query: `SELECT column_0 FROM (values row(1+1,2+2), row(floor(1.5),concat("a","b"))) a order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, { Query: `SELECT DISTINCT val FROM (values row(1), row(1.00), row(2), row(2)) a (val);`, - Expected: []sql.Row{{"1.00"}, {"2.00"}}, + Expected: []sql.UntypedSqlRow{{"1.00"}, {"2.00"}}, }, { Query: `SELECT DISTINCT val FROM (values row(1.00), row(1.000), row(2), row(2)) a (val);`, - Expected: []sql.Row{{"1.000"}, {"2.000"}}, + Expected: []sql.UntypedSqlRow{{"1.000"}, {"2.000"}}, }, { Query: `SELECT DISTINCT val FROM (values row(1.000), row(21.00), row(2), row(2)) a (val);`, - Expected: []sql.Row{{"1.000"}, {"21.000"}, {"2.000"}}, + Expected: []sql.UntypedSqlRow{{"1.000"}, {"21.000"}, {"2.000"}}, }, { Query: `SELECT DISTINCT val FROM (values row(1), row(1.00), row('2'), row(2)) a (val);`, - Expected: []sql.Row{{"1"}, {"1.00"}, {"2"}}, + Expected: []sql.UntypedSqlRow{{"1"}, {"1.00"}, {"2"}}, }, { Query: `SELECT DISTINCT val FROM (values row(null), row(1.00), row('2'), row(2)) a (val);`, - Expected: []sql.Row{{nil}, {"1.00"}, {"2"}}, + Expected: []sql.UntypedSqlRow{{nil}, {"1.00"}, {"2"}}, }, { Query: `SELECT column_0 FROM (values row(1+1.5,2+2), row(floor(1.5),concat("a","b"))) a order by 1;`, - Expected: []sql.Row{{"1.0"}, {"2.5"}}, + Expected: []sql.UntypedSqlRow{{"1.0"}, {"2.5"}}, }, { // The SortFields does not match between prepared and non-prepared nodes. SkipPrepared: true, Query: `SELECT column_0 FROM (values row('1.5',2+2), row(floor(1.5),concat("a","b"))) a order by 1;`, - Expected: []sql.Row{{"1"}, {"1.5"}}, + Expected: []sql.UntypedSqlRow{{"1"}, {"1.5"}}, }, { Query: `SELECT column_0 FROM (values row(1.5,2+2), row(floor(1.5),concat("a","b"))) a order by 1;`, - Expected: []sql.Row{{"1.0"}, {"1.5"}}, + Expected: []sql.UntypedSqlRow{{"1.0"}, {"1.5"}}, }, { Query: `SELECT FORMAT(val, 2) FROM (values row(4328904), row(432053.4853), row(5.93288775208e+08), row("5784029.372"), row(-4229842.122), row(-0.009)) a (val)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"4,328,904.00"}, {"432,053.49"}, {"593,288,775.21"}, @@ -1596,7 +1596,7 @@ Select * from ( }, { Query: "SELECT FORMAT(i, 3) FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1.000"}, {"2.000"}, {"3.000"}, @@ -1605,7 +1605,7 @@ Select * from ( { Query: `SELECT FORMAT(val, 2, 'da_DK') FROM (values row(4328904), row(432053.4853), row(5.93288775208e+08), row("5784029.372"), row(-4229842.122), row(-0.009)) a (val)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"4.328.904,00"}, {"432.053,49"}, {"593.288.775,21"}, @@ -1616,7 +1616,7 @@ Select * from ( }, { Query: "SELECT FORMAT(i, 3, 'da_DK') FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1,000"}, {"2,000"}, {"3,000"}, @@ -1624,14 +1624,14 @@ Select * from ( }, { Query: "SELECT DATEDIFF(date_col, '2019-12-28') FROM datetime_table where date_col = date('2019-12-31T12:00:00');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: `SELECT DATEDIFF(val, '2019/12/28') FROM (values row('2017-11-30 22:59:59'), row('2020/01/02'), row('2021-11-30'), row('2020-12-31T12:00:00')) a (val)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-758}, {5}, {703}, @@ -1640,14 +1640,14 @@ Select * from ( }, { Query: "SELECT TIMESTAMPDIFF(SECOND,'2007-12-31 23:59:58', '2007-12-31 00:00:00');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-86398}, }, }, { Query: `SELECT TIMESTAMPDIFF(MINUTE, val, '2019/12/28') FROM (values row('2017-11-30 22:59:59'), row('2020/01/02'), row('2019-12-27 23:15:55'), row('2019-12-31T12:00:00')) a (val);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1090140}, {-7200}, {44}, @@ -1656,7 +1656,7 @@ Select * from ( }, { Query: "values row(1, 3), row(2, 2), row(3, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}, @@ -1674,7 +1674,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}, @@ -1692,7 +1692,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1) order by 1 asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}, @@ -1710,7 +1710,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1) order by 1 desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, {2, 2}, {1, 3}, @@ -1728,7 +1728,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1) order by 2 asc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, {2, 2}, {1, 3}, @@ -1746,7 +1746,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1) order by 2 desc;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}, @@ -1764,7 +1764,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1) limit 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, }, @@ -1781,7 +1781,7 @@ Select * from ( }, { Query: "values (1, 3), (2, 2), (3, 1) order by 2 limit 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, {2, 2}, }, @@ -1799,19 +1799,19 @@ Select * from ( { Query: "SELECT TIMEDIFF(null, '2017-11-30 22:59:59');", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT DATEDIFF('2019/12/28', null);", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT TIMESTAMPDIFF(SECOND, null, '2007-12-31 00:00:00');", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c": 4 }','{ "a": 5, "d": 6 }')`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": [1, 3, 5], "b": 2, "c": 4, "d": 6}`)}, }, }, @@ -1824,7 +1824,7 @@ Select * from ( row('{ "a": 5, "d": 6 }','[true, true]'), row('{ "a": 5, "d": 6 }','{ "a": 3, "e": 2 }')) test (val1, val2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[{ "a": 1, "b": 2 }, null]`)}, {types.MustJSON(`[{ "a": 1, "b": 2 }, "row one"]`)}, {types.MustJSON(`[{ "a": 3, "c": 4 }, 4]`)}, @@ -1834,31 +1834,31 @@ Select * from ( }, { Query: `SELECT JSON_ARRAY()`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[]`)}, }, }, { Query: `SELECT JSON_ARRAY('{"b": 2, "a": [1, 8], "c": null}', null, 4, '[true, false]', "do")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`["{\"b\": 2, \"a\": [1, 8], \"c\": null}", null, 4, "[true, false]", "do"]`)}, }, }, { Query: `SELECT JSON_ARRAY(1, 'say, "hi"', JSON_OBJECT("abc", 22))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[1, "say, \"hi\"", {"abc": 22}]`)}, }, }, { Query: `SELECT JSON_ARRAY(JSON_OBJECT("a", JSON_ARRAY(1,2)), JSON_OBJECT("b", 22))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[{"a": [1, 2]}, {"b": 22}]`)}, }, }, { Query: `SELECT JSON_ARRAY(pk, c1, c2, c3) FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[1, "row one", [1, 2], {"a": 2}]`)}, {types.MustJSON(`[2, "row two", [3, 4], {"b": 2}]`)}, {types.MustJSON(`[3, "row three", [5, 6], {"c": 2}]`)}, @@ -1867,7 +1867,7 @@ Select * from ( }, { Query: `SELECT JSON_ARRAY(JSON_OBJECT("id", pk, "name", c1), c2, c3) FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[{"id": 1,"name": "row one"}, [1, 2], {"a": 2}]`)}, {types.MustJSON(`[{"id": 2,"name": "row two"}, [3, 4], {"b": 2}]`)}, {types.MustJSON(`[{"id": 3,"name": "row three"}, [5, 6], {"c": 2}]`)}, @@ -1876,7 +1876,7 @@ Select * from ( }, { Query: `SELECT JSON_KEYS(c3) FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`["a"]`)}, {types.MustJSON(`["b"]`)}, {types.MustJSON(`["c"]`)}, @@ -1885,7 +1885,7 @@ Select * from ( }, { Query: `SELECT JSON_OVERLAPS(c3, '{"a": 2, "d": 2}') FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, {false}, {false}, @@ -1894,7 +1894,7 @@ Select * from ( }, { Query: `SELECT JSON_MERGE(c3, '{"a": 1}') FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": [2, 1]}`)}, {types.MustJSON(`{"a": 1, "b": 2}`)}, {types.MustJSON(`{"a": 1, "c": 2}`)}, @@ -1903,7 +1903,7 @@ Select * from ( }, { Query: `SELECT JSON_MERGE_PRESERVE(c3, '{"a": 1}') FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": [2, 1]}`)}, {types.MustJSON(`{"a": 1, "b": 2}`)}, {types.MustJSON(`{"a": 1, "c": 2}`)}, @@ -1912,7 +1912,7 @@ Select * from ( }, { Query: `SELECT JSON_MERGE_PATCH(c3, '{"a": 1}') FROM jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": 1}`)}, {types.MustJSON(`{"a": 1, "b": 2}`)}, {types.MustJSON(`{"a": 1, "c": 2}`)}, @@ -1921,19 +1921,19 @@ Select * from ( }, { Query: `SELECT CONCAT(JSON_OBJECT('aa', JSON_OBJECT('bb', 123, 'y', 456), 'z', JSON_OBJECT('cc', 321, 'x', 654)), "")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {`{"z": {"x": 654, "cc": 321}, "aa": {"y": 456, "bb": 123}}`}, }, }, { Query: `SELECT CONCAT(JSON_ARRAY(JSON_OBJECT('aa', 123, 'z', 456), JSON_OBJECT('BB', 321, 'Y', 654)), "")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {`[{"z": 456, "aa": 123}, {"Y": 654, "BB": 321}]`}, }, }, { Query: `select json_pretty(c3) from jsontable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { `{ "a": 2 @@ -1958,7 +1958,7 @@ Select * from ( }, { Query: `select json_pretty(json_object("id", 1, "name", "test"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { `{ "id": 1, @@ -1971,7 +1971,7 @@ Select * from ( 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 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 4.0}, {2, 7.0}, {3, 9.0}, @@ -1981,7 +1981,7 @@ Select * from ( Query: `SELECT B, sum(C) FROM (values row(1,1), row(1,3), row(2,2), row(2,5), row(3,9)) a (b,c) group by 1 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 4.0}, {2, 7.0}, {3, 9.0}, @@ -1989,14 +1989,14 @@ Select * from ( }, { Query: `SELECT i, sum(i) FROM mytable group by 1 having avg(i) > 1 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2.0}, {3, 3.0}, }, }, { Query: `SELECT i, s, i2, s2 FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT (s2 <=> s)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -2004,7 +2004,7 @@ Select * from ( }, { Query: `SELECT i, s, i2, s2 FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT (s2 = s)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -2012,7 +2012,7 @@ Select * from ( }, { Query: `SELECT i, s, i2, s2 FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND CONCAT(s, s2) IS NOT NULL`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "third"}, {2, "second row", 2, "second"}, {3, "third row", 3, "first"}, @@ -2020,7 +2020,7 @@ Select * from ( }, { Query: `SELECT * FROM mytable mt JOIN othertable ot ON ot.i2 = (SELECT i2 FROM othertable WHERE s2 = "second") AND mt.i = ot.i2 JOIN mytable mt2 ON mt.i = mt2.i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row", "second", 2, 2, "second row"}, }, }, @@ -2028,7 +2028,7 @@ Select * from ( Query: `SELECT a.column_0, b.column_1 FROM (values row(1+1,2+2), row(floor(1.5),concat("a","b"))) a join (values row(2,4), row(1.0,"ab")) b on a.column_0 = b.column_0 and a.column_0 = b.column_0 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "ab"}, {2, "4"}, }, @@ -2037,7 +2037,7 @@ Select * from ( Query: `SELECT a.column_0, mt.s from (values row(1,"1"), row(2,"2"), row(4,"4")) a left join mytable mt on column_0 = mt.i order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {4, nil}, @@ -2047,7 +2047,7 @@ Select * from ( Query: `SELECT * FROM (select * from mytable) a join (select * from mytable) b on a.i = b.i order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row"}, {2, "second row", 2, "second row"}, {3, "third row", 3, "third row"}, @@ -2055,19 +2055,19 @@ Select * from ( }, { Query: "select * from mytable t1 join mytable t2 on t2.i = t1.i where t2.i > 10", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from mytable t1 join mytable T2 on t2.i = t1.i where T2.i > 10", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from tabletest t1 join tabletest t2 on t2.s = t1.s where t2.i > 10", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from one_pk where c1 in (select opk1.c1 from one_pk opk1 left join one_pk opk2 on opk1.c2 = opk2.c2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 1, 2, 3, 4}, {1, 10, 11, 12, 13, 14}, {2, 20, 21, 22, 23, 24}, @@ -2083,7 +2083,7 @@ Select * from ( ) )) as greater_count from mytable mt order by 1`, - Expected: []sql.Row{{1, 2}, {2, 1}, {3, 0}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {2, 1}, {3, 0}}, }, { Query: `select mt.i, @@ -2094,11 +2094,11 @@ Select * from ( ) )) as eq_count from mytable mt order by 1`, - Expected: []sql.Row{{1, 1}, {2, 1}, {3, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 1}, {3, 1}}, }, { Query: "WITH mt as (select i,s FROM mytable) SELECT s,i FROM mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2106,7 +2106,7 @@ Select * from ( }, { Query: "WITH mt as (select i,s FROM mytable) SELECT a.s,b.i FROM mt a join mt b on a.i = b.i order by 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2115,7 +2115,7 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable), mt2 as (select i, s from mt1) SELECT mt1.i, concat(mt2.s, '!') FROM mt1 join mt2 on mt1.i = mt2.i + 1 order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, }, @@ -2123,14 +2123,14 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable order by i limit 2), mt2 as (select i, s from mt1) SELECT mt1.i, concat(mt2.s, '!') FROM mt1 join mt2 on mt1.i = mt2.i + 1 order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, }, }, { Query: `WITH mt1 as (select i,s FROM mytable), mt2 as (select i+1 as i, concat(s, '!') as s from mt1) SELECT mt1.i, mt2.s FROM mt1 join mt2 on mt1.i = mt2.i order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, }, @@ -2138,7 +2138,7 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable), mt2 as (select i+1 as i, concat(s, '!') as s from mytable) SELECT mt1.i, mt2.s FROM mt1 join mt2 on mt1.i = mt2.i order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, }, @@ -2146,7 +2146,7 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable), mt2 (i,s) as (select i+1, concat(s, '!') from mytable) SELECT mt1.i, mt2.s FROM mt1 join mt2 on mt1.i = mt2.i order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, }, @@ -2154,14 +2154,14 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable), mt2 as (select concat(s, '!') as s, i+1 as i from mytable) SELECT mt1.i, mt2.s FROM mt1 join mt2 on mt1.i = mt2.i order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, }, }, { Query: "WITH mt (s,i) as (select i,s FROM mytable) SELECT s,i FROM mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -2169,7 +2169,7 @@ Select * from ( }, { Query: "WITH mt (s,i) as (select i+1, concat(s,'!') FROM mytable) SELECT s,i FROM mt order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, {4, "third row!"}, @@ -2177,7 +2177,7 @@ Select * from ( }, { Query: "WITH mt (s,i) as (select i+1 as x, concat(s,'!') as y FROM mytable) SELECT s,i FROM mt order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, {3, "second row!"}, {4, "third row!"}, @@ -2185,20 +2185,20 @@ Select * from ( }, { Query: "WITH mt (s,i) as (select i+1, concat(s,'!') FROM mytable order by 1 limit 1) SELECT s,i FROM mt order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "first row!"}, }, }, { Query: "WITH mt (s,i) as (select char_length(s), sum(i) FROM mytable group by 1) SELECT s,i FROM mt order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {9, 4.0}, {10, 2.0}, }, }, { Query: "WITH mt (s,i) as (select i, row_number() over (order by i desc) FROM mytable) SELECT s,i FROM mt order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}, @@ -2208,7 +2208,7 @@ Select * from ( // In this case, the parser and analyzer collaborate to place the filter below the WINDOW function, // and the window sees the filtered rows. Query: "SELECT ROW_NUMBER() OVER (ORDER BY s2 ASC) idx, i2, s2 FROM othertable WHERE s2 <> 'second' ORDER BY i2 ASC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, "third"}, {1, 3, "first"}, }, @@ -2216,7 +2216,7 @@ Select * from ( { // In this case, the analyzer should not push the filter below the window function. Query: "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY s2 ASC) idx, i2, s2 FROM othertable ORDER BY i2 ASC) a WHERE s2 <> 'second'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1, "third"}, {1, 3, "first"}, }, @@ -2224,7 +2224,7 @@ Select * from ( { // Same as above, but with an available index access on i2 Query: "SELECT ROW_NUMBER() OVER (ORDER BY s2 ASC) idx, i2, s2 FROM othertable WHERE i2 < 2 OR i2 > 2 ORDER BY i2 ASC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, "third"}, {1, 3, "first"}, }, @@ -2232,14 +2232,14 @@ Select * from ( { // Same as above, but with an available index access on i2 Query: "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY s2 ASC) idx, i2, s2 FROM othertable ORDER BY i2 ASC) a WHERE i2 < 2 OR i2 > 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1, "third"}, {1, 3, "first"}, }, }, { Query: "select i+0.0/(lag(i) over (order by s)) from mytable order by 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {"2.00000"}, {"3.00000"}, @@ -2247,7 +2247,7 @@ Select * from ( }, { Query: "select f64/f32, f32/(lag(i) over (order by f64)) from floattable order by 1,2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1.0, nil}, {1.0, -1.0}, {1.0, .5}, @@ -2259,7 +2259,7 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable) SELECT mtouter.i, (select s from mt1 where s = mtouter.s) FROM mt1 as mtouter where mtouter.i > 1 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {3, "third row"}, }, @@ -2273,7 +2273,7 @@ Select * from ( UNION ALL SELECT CAST(4 AS SIGNED) AS i2, "not found" AS s2 FROM DUAL) othertable ON i2 = i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third", 1, 1}, {"second", 2, 2}, {"first", 3, 3}, @@ -2283,7 +2283,7 @@ Select * from ( { Query: `WITH mt1 as (select i,s FROM mytable) SELECT mtouter.i, (select s from mt1 where i = mtouter.i+1) FROM mt1 as mtouter where mtouter.i > 1 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "third row"}, {3, nil}, }, @@ -2293,32 +2293,32 @@ Select * from ( SELECT mtouter.i, (with mt2 as (select i,s FROM mt1) select s from mt2 where i = mtouter.i+1) FROM mt1 as mtouter where mtouter.i > 1 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "third row"}, {3, nil}, }, }, { Query: `WITH common_table AS (SELECT cec.id, cec.strength FROM (SELECT 1 as id, 12 as strength) cec) SELECT strength FROM common_table cte`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {12}, }, }, { Query: `WITH common_table AS (SELECT cec.id id, cec.strength FROM (SELECT 1 as id, 12 as strength) cec) SELECT strength FROM common_table cte`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {12}, }, }, { Query: `WITH common_table AS (SELECT cec.id AS id, cec.strength FROM (SELECT 1 as id, 12 as strength) cec) SELECT strength FROM common_table cte`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {12}, }, }, { Query: "WITH mt as (select i,s FROM mytable) SELECT s,i FROM mt UNION SELECT s, i FROM mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2326,7 +2326,7 @@ Select * from ( }, { Query: "WITH mt as (select i,s FROM mytable) SELECT s,i FROM mt UNION SELECT s, i FROM mt UNION SELECT s, i FROM mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2334,7 +2334,7 @@ Select * from ( }, { Query: "WITH mt as (select i,s FROM mytable) SELECT s,i FROM mt UNION ALL SELECT s, i FROM mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2345,13 +2345,13 @@ Select * from ( }, { Query: "with a as (select * from mytable where i = 2), b as (select * from a), c as (select * from b) select * from c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2), "second row"}, }, }, { Query: "WITH mt as (select i,s FROM mytable) SELECT s,i FROM mt UNION ALL SELECT s, i FROM mt UNION ALL SELECT s, i FROM mt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2365,7 +2365,7 @@ Select * from ( }, { Query: "WITH mytable as (select * FROM mytable) SELECT s,i FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}, @@ -2373,25 +2373,25 @@ Select * from ( }, { Query: "WITH mytable as (select * FROM mytable where i > 2) SELECT * FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), "third row"}, }, }, { Query: "WITH mytable as (select * FROM mytable where i > 2) SELECT * FROM mytable union SELECT * from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), "third row"}, }, }, { Query: "with recursive t (n) as (select (1) from dual union all select n + 1 from t where n < 10) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(55)}, }, }, { Query: "with recursive a as (select 1 union all select 2) select * from a union select 10 from dual;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {10}, @@ -2399,7 +2399,7 @@ Select * from ( }, { Query: "with recursive a as (select 1 union all select 2) select 10 from dual union select * from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, {1}, {2}, @@ -2407,46 +2407,46 @@ Select * from ( }, { Query: "with recursive a as (select 1 union all select 2) select * from a union select * from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, { Query: "with recursive a as (select 1) select * from a union select * from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "with cte(x) as (select 0) select x from cte where cte.x in (with cte(x) as (select 42) select x from cte);", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "with cte(x) as (with cte(x) as (select 0) select x from cte) select x from cte where cte.x in (with cte(x) as (select 42) select x from cte);", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "with a as (select 1), b as (select * from a) select * from b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "with a as (select 1) select * from (with b as (select * from a) select * from b) as c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "with a as (select 1) select 3, 2, (select * from a);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2, 1}, }, }, { Query: "WITH a AS ( WITH b AS ( WITH recursive c AS ( SELECT 1 UNION SELECT 2 ) SELECT * from c UNION SELECT 3 ) SELECT * from b UNION SELECT 4) SELECT * from a UNION SELECT 10;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2456,7 +2456,7 @@ Select * from ( }, { Query: "WITH a AS ( WITH b AS ( SELECT 1 UNION SELECT 2 ), c AS ( SELECT 3 UNION SELECT 4 ) SELECT * from b UNION SELECT * from c), x AS ( WITH y AS ( SELECT 5 UNION SELECT 6 ), z AS ( SELECT 7 UNION SELECT 8 ) SELECT * from y UNION SELECT * from z) SELECT * from a UNION SELECT * from x;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2469,13 +2469,13 @@ Select * from ( }, { Query: "with recursive t (n) as (select (1) from dual union all select n + 1 from t where n < 10) select count(*) from t as t1 join t as t2 on t1.n = t2.n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(10)}, }, }, { Query: "with recursive t (n) as (select (1) from dual union all select (2) from dual) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(3)}, }, }, @@ -2491,7 +2491,7 @@ Select * from ( SELECT sub_part, sum(quantity) as total_quantity FROM included_parts GROUP BY sub_part`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"crust", float64(1)}, {"filling", float64(2)}, {"flour", float64(20)}, @@ -2513,7 +2513,7 @@ Select * from ( SELECT sub_part, sum(quantity) as total_quantity FROM included_parts GROUP BY sub_part`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"crust", float64(1)}, {"filling", float64(2)}, {"flour", float64(20)}, @@ -2535,7 +2535,7 @@ Select * from ( SELECT sub_part, sum(quantity) as total_quantity FROM included_parts GROUP BY sub_part`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"crust", float64(1)}, {"filling", float64(2)}, {"flour", float64(20)}, @@ -2547,25 +2547,25 @@ Select * from ( }, { Query: "with recursive t (n) as (select sum(1) from dual union all select ('2.00') from dual) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(3)}, }, }, { Query: "with recursive t (n) as (select sum(1) from dual union all select (2.00) from dual) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"3.00"}, }, }, { Query: "with recursive t (n) as (select sum(1) from dual union all select (2.00/3.0) from dual) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1.666667"}, }, }, { Query: "with recursive t (n) as (select sum(1) from dual union all select n+1 from t where n < 10) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(55)}, }, }, @@ -2578,7 +2578,7 @@ Select * from ( ) SELECT * FROM bus_dst ORDER BY dst`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Boston"}, {"New York"}, {"Raleigh"}, @@ -2594,7 +2594,7 @@ Select * from ( ) SELECT * FROM bus_dst ORDER BY dst`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Boston"}, {"New York"}, {"Raleigh"}, @@ -2603,37 +2603,37 @@ Select * from ( }, { Query: "SELECT s, (select i from mytable mt where sub.i = mt.i) as subi FROM (select i,s,'hello' FROM mytable where s = 'first row') as sub;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, }, }, { Query: "SELECT (select s from mytable mt where sub.i = mt.i) as subi FROM (select i,s,'hello' FROM mytable where i = 1) as sub;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, }, }, { Query: "SELECT (select s from mytable mt where sub.i = mt.i) as subi FROM (select s,i,'hello' FROM mytable where i = 1) as sub;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, }, }, { Query: "SELECT s, (select i from mytable mt where sub.i = mt.i) as subi FROM (select 'hello',i,s FROM mytable where s = 'first row') as sub;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, }, }, { Query: "SELECT (select s from mytable mt where sub.i = mt.i) as subi FROM (select 'hello',i,s FROM mytable where i = 1) as sub;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, }, }, { Query: "SELECT mytable.s FROM mytable WHERE mytable.i IN (SELECT othertable.i2 FROM othertable) ORDER BY mytable.i ASC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, {"second row"}, {"third row"}, @@ -2641,19 +2641,19 @@ Select * from ( }, { Query: "SELECT mytable.s FROM mytable WHERE mytable.i = (SELECT othertable.i2 FROM othertable WHERE othertable.s2 = 'second')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"second row"}, }, }, { Query: "SELECT mytable.s FROM mytable WHERE mytable.i IN (SELECT othertable.i2 FROM othertable WHERE CONCAT(othertable.s2, ' row') = mytable.s)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"second row"}, }, }, { Query: "SELECT mytable.i, selfjoined.s FROM mytable LEFT JOIN (SELECT * FROM mytable) selfjoined ON mytable.i = selfjoined.i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -2661,49 +2661,49 @@ Select * from ( }, { Query: "SELECT s,i FROM MyTable ORDER BY 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT S,I FROM MyTable ORDER BY 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT mt.s,mt.i FROM MyTable MT ORDER BY 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT mT.S,Mt.I FROM MyTable MT ORDER BY 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT mt.* FROM MyTable MT ORDER BY mT.I;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, }, { Query: "SELECT MyTABLE.s,myTable.i FROM MyTable ORDER BY 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: `SELECT "Hello!", CONcat(s, "!") FROM MyTable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Hello!", "first row!"}, {"Hello!", "second row!"}, {"Hello!", "third row!"}, @@ -2721,7 +2721,7 @@ Select * from ( }, { Query: `SELECT "1" + '1'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(2)}, }, ExpectedColumns: sql.Schema{ @@ -2733,578 +2733,578 @@ Select * from ( }, { Query: "SELECT myTable.* FROM MYTABLE ORDER BY myTable.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, }, { Query: "SELECT MyTABLE.S,myTable.I FROM MyTable ORDER BY mytable.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT MyTABLE.S as S, myTable.I as I FROM MyTable ORDER BY mytable.i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(2)}, {"third row", int64(3)}}, }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM MyTable HAVING bar = 2 ORDER BY foo, i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 2}, {2, 1, 2}, {3, 1, 2}}, }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM (SELECT i FROM mYtABLE WHERE i = 2) AS a ORDER BY foo, i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1, 2}}, }, { Query: "SELECT i, 1 AS foo, 2 AS bar FROM MyTable HAVING bar = 1 ORDER BY foo, i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT timestamp FROM reservedWordsTable;", - Expected: []sql.Row{{"1"}}, + Expected: []sql.UntypedSqlRow{{"1"}}, }, { Query: "SELECT RW.TIMESTAMP FROM reservedWordsTable rw;", - Expected: []sql.Row{{"1"}}, + Expected: []sql.UntypedSqlRow{{"1"}}, }, { Query: "SELECT `AND`, RW.`Or`, `SEleCT` FROM reservedWordsTable rw;", - Expected: []sql.Row{{"1.1", "aaa", "create"}}, + Expected: []sql.UntypedSqlRow{{"1.1", "aaa", "create"}}, }, { Query: "SELECT reservedWordsTable.AND, reservedWordsTABLE.Or, reservedwordstable.SEleCT FROM reservedWordsTable;", - Expected: []sql.Row{{"1.1", "aaa", "create"}}, + Expected: []sql.UntypedSqlRow{{"1.1", "aaa", "create"}}, }, { Query: "SELECT i + 1 FROM mytable;", - Expected: []sql.Row{{int64(2)}, {int64(3)}, {int64(4)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}, {int64(3)}, {int64(4)}}, }, { Query: `select (1 / 3) * (1 / 3);`, - Expected: []sql.Row{{"0.11111111"}}, + Expected: []sql.UntypedSqlRow{{"0.11111111"}}, }, { Query: "SELECT i div 2 FROM mytable order by 1;", - Expected: []sql.Row{{int64(0)}, {int64(1)}, {int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(0)}, {int64(1)}, {int64(1)}}, }, { Query: "SELECT i DIV 2 FROM mytable order by 1;", - Expected: []sql.Row{{int64(0)}, {int64(1)}, {int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(0)}, {int64(1)}, {int64(1)}}, }, { Query: "SELECT -i FROM mytable;", - Expected: []sql.Row{{int64(-1)}, {int64(-2)}, {int64(-3)}}, + Expected: []sql.UntypedSqlRow{{int64(-1)}, {int64(-2)}, {int64(-3)}}, }, { Query: "SELECT +i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT + - i FROM mytable;", - Expected: []sql.Row{{int64(-1)}, {int64(-2)}, {int64(-3)}}, + Expected: []sql.UntypedSqlRow{{int64(-1)}, {int64(-2)}, {int64(-3)}}, }, { Query: "SELECT i FROM mytable WHERE -i = -2;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE -i <=> -2;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE i = 2;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE 2 = i;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE 2 <=> i;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE i > 2;", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE 2 < i;", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE i < 2;", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT i FROM mytable WHERE 2 > i;", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT i FROM mytable WHERE i <> 2;", - Expected: []sql.Row{{int64(1)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(3)}}, }, { Query: "SELECT NULL IN (SELECT i FROM emptytable)", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT NULL NOT IN (SELECT i FROM emptytable)", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT NULL IN (SELECT i FROM mytable)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NULL NOT IN (SELECT i FROM mytable)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NULL IN (SELECT i2 FROM niltable)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NULL NOT IN (SELECT i2 FROM niltable)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 2 IN (SELECT i2 FROM niltable)", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT 2 NOT IN (SELECT i2 FROM niltable)", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT 100 IN (SELECT i2 FROM niltable)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 100 NOT IN (SELECT i2 FROM niltable)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 1 IN (2,3,4,null)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 1 IN (2,3,4,null,1)", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT 1 IN (1,2,3)", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT 1 IN (2,3,4)", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT * FROM stringandtable WHERE v IN (NULL)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM stringandtable WHERE v IS NULL", - Expected: []sql.Row{{int64(5), int64(5), nil}}, + Expected: []sql.UntypedSqlRow{{int64(5), int64(5), nil}}, }, { Query: "SELECT * FROM stringandtable WHERE v IN ('')", - Expected: []sql.Row{{int64(2), int64(2), ""}}, + Expected: []sql.UntypedSqlRow{{int64(2), int64(2), ""}}, }, { Query: "SELECT 1 FROM DUAL WHERE 1 IN (SELECT '1' FROM DUAL)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE '1' IN (SELECT '1' FROM DUAL)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT NULL IN (2,3,4)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NULL IN (2,3,4,null)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT 'a' IN ('b','c',null,'d')`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT 'a' IN ('a','b','c','d')`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT 'a' IN ('b','c','d')`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT 1 NOT IN (2,3,4,null)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 1 NOT IN (2,3,4,null,1)", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT 1 NOT IN (1,2,3)", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT 1 NOT IN (2,3,4)", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT NULL NOT IN (2,3,4)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NULL NOT IN (2,3,4,null)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 'HOMER' IN (1.0)", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "select 1 / 3 * 3 in (0.999999999);", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT 99 NOT IN ( 98 + 97 / 99 );", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT 1 NOT IN ( 97 / 99 );", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT 1 NOT IN (1 / 9 * 5);`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT 1 / 9 * 5 NOT IN (1);`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT 1 / 9 * 5 IN (1 / 9 * 5);`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "select 0 in (1/100000);", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT * FROM mytable WHERE i in (CAST(NULL AS SIGNED), 2, 3, 4)`, - Expected: []sql.Row{{3, "third row"}, {2, "second row"}}, + Expected: []sql.UntypedSqlRow{{3, "third row"}, {2, "second row"}}, }, { Query: `SELECT * FROM mytable WHERE i in (1+2)`, - Expected: []sql.Row{{3, "third row"}}, + Expected: []sql.UntypedSqlRow{{3, "third row"}}, }, { Query: "SELECT * from mytable where upper(s) IN ('FIRST ROW', 'SECOND ROW')", - Expected: []sql.Row{{1, "first row"}, {2, "second row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}}, }, { Query: "SELECT * from mytable where cast(i as CHAR) IN ('a', 'b')", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * from mytable where cast(i as CHAR) IN ('1', '2')", - Expected: []sql.Row{{1, "first row"}, {2, "second row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}}, }, { Query: "SELECT * from mytable where (i > 2) IN (true)", - Expected: []sql.Row{{3, "third row"}}, + Expected: []sql.UntypedSqlRow{{3, "third row"}}, }, { Query: "SELECT * from mytable where (i + 6) IN (7, 8)", - Expected: []sql.Row{{1, "first row"}, {2, "second row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}}, }, { Query: "SELECT * from mytable where (i + 40) IN (7, 8)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * from mytable where (i = 1 | false) IN (true)", - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, { Query: "SELECT * from mytable where (i = 1 & false) IN (true)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM mytable WHERE i in (2*i)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT * FROM mytable WHERE i in (i)`, - Expected: []sql.Row{{1, "first row"}, {2, "second row"}, {3, "third row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}, {3, "third row"}}, }, { Query: `SELECT * FROM mytable WHERE i in (1, 1, 1, 1, 1)`, - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, { Query: `SELECT * FROM mytable WHERE i NOT in (1, 1)`, - Expected: []sql.Row{{2, "second row"}, {3, "third row"}}, + Expected: []sql.UntypedSqlRow{{2, "second row"}, {3, "third row"}}, }, { Query: `SELECT * FROM mytable WHERE i in (i, i)`, - Expected: []sql.Row{{1, "first row"}, {2, "second row"}, {3, "third row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}, {3, "third row"}}, }, { Query: `SELECT * FROM (select * from mytable) sq WHERE sq.i in (1, 1)`, - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, { Query: `SELECT * FROM (select a.i from mytable a cross join mytable b) sq WHERE sq.i in (1, 1)`, - Expected: []sql.Row{{1}, {1}, {1}}, + Expected: []sql.UntypedSqlRow{{1}, {1}, {1}}, }, { Query: `SELECT * FROM mytable WHERE i in (1, 1, 1, 1, 1) and s = 'first row'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, }, }, { Query: `SELECT * FROM mytable WHERE i in (1, 1, 1, 1, 1) or s in ('first row', 'first row', 'first row');`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, }, }, { Query: `SELECT * FROM mytable WHERE (i in (1, 1, 1, 1, 1) and s = 'first row') or s in ('first row', 'first row', 'first row');`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, }, }, { Query: `SELECT * FROM mytable WHERE i in (1, 1, 1, 1, 1) and s in ('first row', 'first row', 'first row');`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, }, }, { Query: `SELECT * FROM mytable WHERE i NOT in (1, 1, 1, 1, 1) and s != 'first row';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {3, "third row"}, }, }, { Query: `SELECT * FROM mytable WHERE i NOT in (1, 1, 1, 1, 1) and s NOT in ('first row', 'first row', 'first row');`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row"}, {3, "third row"}, }, }, { Query: "SELECT * from mytable WHERE 4 IN (i + 2)", - Expected: []sql.Row{{2, "second row"}}, + Expected: []sql.UntypedSqlRow{{2, "second row"}}, }, { Query: "SELECT * from mytable WHERE s IN (cast('first row' AS CHAR))", - Expected: []sql.Row{{1, "first row"}}, + Expected: []sql.UntypedSqlRow{{1, "first row"}}, }, { Query: "SELECT * from mytable WHERE s IN (lower('SECOND ROW'), 'FIRST ROW')", - Expected: []sql.Row{{2, "second row"}}, + Expected: []sql.UntypedSqlRow{{2, "second row"}}, }, { Query: "SELECT * from mytable where true IN (i > 2)", - Expected: []sql.Row{{3, "third row"}}, + Expected: []sql.UntypedSqlRow{{3, "third row"}}, }, { Query: "SELECT (1,2) in ((0,1), (1,0), (1,2))", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT (1,'i') in ((0,'a'), (1,'b'), (1,'i'))", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT 1 FROM DUAL WHERE 1 in (1)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) in ((1, 2))", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) in ((3, 4), (5, 6), (1, 2))", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) in ((3, 4), (5, 6))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM one_pk where pk in (1) and c1 = 10", - Expected: []sql.Row{{1, 10, 11, 12, 13, 14}}, + Expected: []sql.UntypedSqlRow{{1, 10, 11, 12, 13, 14}}, }, { Query: "SELECT * FROM one_pk where pk in (1)", - Expected: []sql.Row{{1, 10, 11, 12, 13, 14}}, + Expected: []sql.UntypedSqlRow{{1, 10, 11, 12, 13, 14}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) not in ((3, 4), (5, 6))", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) not in ((3, 4), (5, 6), (1, 2))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) not in ((1, 2))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (true)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) > (0, 1)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) >= (0, 1)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) <= (0, 1)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) < (0, 1)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) != (0, 1)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) <=> (0, 1)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, null) <=> (1, null)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 1, 2 from dual) in ((1, 2))", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 3, 4 from dual) in ((1, 2), (2, 3), (3, 4))", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) = (select 3, 4 from dual where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 3, 4 from dual where false) = ((1, 2))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 3, 4 from dual where false) in ((1, 2))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) in (select 3, 4 from dual where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE null = (select 4 from dual where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE null <=> (select 4 from dual where false)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (null, null) <=> (select 1, 4 from dual where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (null, null) <=> (select null, null from dual)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 1, 2 from dual) in (select 1, 2 from dual)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 1, 2 from dual where false) in (select 1, 2 from dual)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 1, 2 from dual where false) in (select 1, 2 from dual where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 1, 2 from dual) in (select 1, 2 from dual where false)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (select 5, 6 from dual) in ((1, 2), (2, 3), (3, 4))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) in (select 5, 6 from dual)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (1, 2) in (select 5, 6 from dual union select 1, 2 from dual)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT (((1,2),3)) = (((1,2),3)) from dual", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT (((1,3),2)) = (((1,2),3)) from dual", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT (((1,3),2)) in (((1,2),6), ((1,2),4)) from dual", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT (((1,3),2)) in (((1,2),6), ((1,3),2)) from dual", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT (1, 2) in (select 1, 2 from dual) from dual", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT (1, 2) in (select 2, 3 from dual) from dual", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT (select 1, 2 from dual) in ((1, 2)) from dual", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT (select 2, 3 from dual) in ((1, 2)) from dual", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT 'a' NOT IN ('b','c',null,'d')`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, ExpectedColumns: sql.Schema{ { Name: "'a' NOT IN ('b','c',null,'d')", @@ -3314,19 +3314,19 @@ Select * from ( }, { Query: `SELECT 'a' NOT IN ('a','b','c','d')`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT 'a' NOT IN ('b','c','d')`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT i FROM mytable WHERE i IN (1, 3)", - Expected: []sql.Row{{int64(1)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE i = 1 OR i = 3", - Expected: []sql.Row{{int64(1)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(3)}}, }, { Query: "SELECT * FROM mytable WHERE i = 1 AND i = 2", @@ -3334,83 +3334,83 @@ Select * from ( }, { Query: "SELECT i FROM mytable WHERE i >= 2 ORDER BY 1", - Expected: []sql.Row{{int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE 2 <= i ORDER BY 1", - Expected: []sql.Row{{int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE i <= 2 ORDER BY 1", - Expected: []sql.Row{{int64(1)}, {int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE 2 >= i ORDER BY 1", - Expected: []sql.Row{{int64(1)}, {int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE i > 2", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE i+1 > 3", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE i < 2", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT i FROM mytable WHERE i >= 2 OR i = 1 ORDER BY 1", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT f32 FROM floattable WHERE f64 = 2.0;", - Expected: []sql.Row{{float32(2.0)}}, + Expected: []sql.UntypedSqlRow{{float32(2.0)}}, }, { Query: "SELECT f32 FROM floattable WHERE f64 < 2.0;", - Expected: []sql.Row{{float32(-1.0)}, {float32(-1.5)}, {float32(1.0)}, {float32(1.5)}}, + Expected: []sql.UntypedSqlRow{{float32(-1.0)}, {float32(-1.5)}, {float32(1.0)}, {float32(1.5)}}, }, { Query: "SELECT f32 FROM floattable WHERE f64 > 2.0;", - Expected: []sql.Row{{float32(2.5)}}, + Expected: []sql.UntypedSqlRow{{float32(2.5)}}, }, { Query: "SELECT f32 FROM floattable WHERE f64 <> 2.0;", - Expected: []sql.Row{{float32(-1.0)}, {float32(-1.5)}, {float32(1.0)}, {float32(1.5)}, {float32(2.5)}}, + Expected: []sql.UntypedSqlRow{{float32(-1.0)}, {float32(-1.5)}, {float32(1.0)}, {float32(1.5)}, {float32(2.5)}}, }, { Query: "SELECT f64 FROM floattable WHERE f32 = 2.0;", - Expected: []sql.Row{{float64(2.0)}}, + Expected: []sql.UntypedSqlRow{{float64(2.0)}}, }, { Query: "SELECT f64 FROM floattable WHERE f32 = -1.5;", - Expected: []sql.Row{{float64(-1.5)}}, + Expected: []sql.UntypedSqlRow{{float64(-1.5)}}, }, { Query: "SELECT f64 FROM floattable WHERE -f32 = -2.0;", - Expected: []sql.Row{{float64(2.0)}}, + Expected: []sql.UntypedSqlRow{{float64(2.0)}}, }, { Query: "SELECT f64 FROM floattable WHERE f32 < 2.0;", - Expected: []sql.Row{{float64(-1.0)}, {float64(-1.5)}, {float64(1.0)}, {float64(1.5)}}, + Expected: []sql.UntypedSqlRow{{float64(-1.0)}, {float64(-1.5)}, {float64(1.0)}, {float64(1.5)}}, }, { Query: "SELECT f64 FROM floattable WHERE f32 > 2.0;", - Expected: []sql.Row{{float64(2.5)}}, + Expected: []sql.UntypedSqlRow{{float64(2.5)}}, }, { Query: "SELECT f64 FROM floattable WHERE f32 <> 2.0;", - Expected: []sql.Row{{float64(-1.0)}, {float64(-1.5)}, {float64(1.0)}, {float64(1.5)}, {float64(2.5)}}, + Expected: []sql.UntypedSqlRow{{float64(-1.0)}, {float64(-1.5)}, {float64(1.0)}, {float64(1.5)}, {float64(2.5)}}, }, { Query: "SELECT f32 FROM floattable ORDER BY f64;", - Expected: []sql.Row{{float32(-1.5)}, {float32(-1.0)}, {float32(1.0)}, {float32(1.5)}, {float32(2.0)}, {float32(2.5)}}, + Expected: []sql.UntypedSqlRow{{float32(-1.5)}, {float32(-1.0)}, {float32(1.0)}, {float32(1.5)}, {float32(2.0)}, {float32(2.5)}}, }, { Query: "SELECT i FROM mytable ORDER BY i DESC;", - Expected: []sql.Row{{int64(3)}, {int64(2)}, {int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}, {int64(2)}, {int64(1)}}, }, { Query: "SELECT i FROM mytable WHERE 'hello';", @@ -3418,11 +3418,11 @@ Select * from ( }, { Query: "SELECT i FROM mytable WHERE NOT 'hello';", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable WHERE s = 'first row' ORDER BY i DESC;", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT * FROM mytable WHERE i = 2 AND s = 'third row'", @@ -3430,107 +3430,107 @@ Select * from ( }, { Query: "SELECT i FROM mytable WHERE i = 1 and i = 2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE I = 1 and i = 2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE i = 1 and i = '1'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT i FROM mytable WHERE i = 1 and i = '2'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE i = 1 and s = 'first row' and i = 2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE s = 'first row' and s = 'second row'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE i = 1 and i between 2 and 2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE i between 1 and 1 and i between 2 and 2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE s = 'first row' ORDER BY i DESC LIMIT 1;", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT i FROM mytable WHERE s = 'first row' ORDER BY i DESC LIMIT 0;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable ORDER BY i LIMIT 1 OFFSET 1;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM (SELECT i FROM mytable LIMIT 1) sq WHERE i = 3;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM (SELECT i FROM (SELECT i FROM mytable LIMIT 1) sq1) sq2 WHERE i = 3;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM (SELECT i FROM mytable ORDER BY i DESC LIMIT 1) sq WHERE i = 3;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT i FROM (SELECT i FROM (SELECT i FROM mytable ORDER BY i DESC LIMIT 1) sq1) sq2 WHERE i = 3;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT i FROM (SELECT i FROM mytable WHERE i > 1) sq LIMIT 1;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "SELECT i FROM (SELECT i FROM (SELECT i FROM mytable WHERE i > 1) sq1) sq2 LIMIT 1;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "SELECT i FROM (SELECT i FROM (SELECT i FROM mytable) sq1 WHERE i > 1) sq2 LIMIT 1;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "SELECT i FROM (SELECT i FROM (SELECT i FROM mytable LIMIT 1) sq1 WHERE i > 1) sq2 LIMIT 10;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM mytable WHERE i NOT IN (SELECT i FROM (SELECT * FROM (SELECT i as i, s as s FROM mytable) f) s)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT * FROM (SELECT a.pk, b.i FROM one_pk a JOIN mytable b ORDER BY a.pk ASC, b.i ASC LIMIT 1) sq WHERE i != 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, }, }, { Query: "SELECT * FROM (SELECT a.pk, b.i FROM one_pk a JOIN mytable b ORDER BY a.pk DESC, b.i DESC LIMIT 1) sq WHERE i != 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 3}, }, }, { Query: "SELECT * FROM (SELECT pk FROM one_pk WHERE pk < 2 LIMIT 1) a JOIN (SELECT i FROM mytable WHERE i > 1 LIMIT 1) b WHERE pk >= 2;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i FROM (SELECT 1 AS i FROM DUAL UNION SELECT 2 AS i FROM DUAL) some_is WHERE i NOT IN (SELECT i FROM (SELECT 1 as i FROM DUAL) different_is);", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable ORDER BY i LIMIT 1,1;", - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: "SELECT i FROM mytable ORDER BY i LIMIT 3,1;", @@ -3538,1114 +3538,1114 @@ Select * from ( }, { Query: "SELECT i FROM mytable ORDER BY i LIMIT 2,100;", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT i FROM niltable WHERE b IS NULL", - Expected: []sql.Row{{int64(1)}, {int64(4)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(4)}}, }, { Query: "SELECT i FROM niltable WHERE b <=> NULL", - Expected: []sql.Row{{int64(1)}, {int64(4)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(4)}}, }, { Query: "SELECT i FROM niltable WHERE NULL <=> b", - Expected: []sql.Row{{int64(1)}, {int64(4)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(4)}}, }, { Query: "SELECT i FROM niltable WHERE b IS NOT NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, {int64(3)}, {int64(5)}, {int64(6)}, }, }, { Query: "SELECT i FROM niltable WHERE b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(2)}, {int64(5)}, }, }, { Query: "SELECT i FROM niltable WHERE NOT b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, {int64(6)}, }, }, { Query: "SELECT i FROM niltable WHERE b IS TRUE", - Expected: []sql.Row{{int64(2)}, {int64(5)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}, {int64(5)}}, }, { Query: "SELECT i FROM niltable WHERE b IS NOT TRUE", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(3)}, {int64(4)}, {int64(6)}, }, }, { Query: "SELECT f FROM niltable WHERE b IS FALSE", - Expected: []sql.Row{{nil}, {6.0}}, + Expected: []sql.UntypedSqlRow{{nil}, {6.0}}, }, { Query: "SELECT i FROM niltable WHERE f < 5", - Expected: []sql.Row{{int64(4)}}, + Expected: []sql.UntypedSqlRow{{int64(4)}}, }, { Query: "SELECT i FROM niltable WHERE f > 5", - Expected: []sql.Row{{int64(6)}}, + Expected: []sql.UntypedSqlRow{{int64(6)}}, }, { Query: "SELECT i FROM niltable WHERE b IS NOT FALSE", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(4)}, {int64(5)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(4)}, {int64(5)}}, }, { Query: "SELECT i FROM niltable WHERE i2 IS NULL ORDER BY 1", - Expected: []sql.Row{{int64(1)}, {int64(3)}, {int64(5)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(3)}, {int64(5)}}, }, { Query: "SELECT i FROM niltable WHERE i2 IS NOT NULL ORDER BY 1", - Expected: []sql.Row{{int64(2)}, {int64(4)}, {int64(6)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}, {int64(4)}, {int64(6)}}, }, { Query: "SELECT * FROM niltable WHERE i2 = NULL", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i2 FROM niltable WHERE i2 <=> NULL", - Expected: []sql.Row{{nil}, {nil}, {nil}}, + Expected: []sql.UntypedSqlRow{{nil}, {nil}, {nil}}, }, { Query: "select i from datetime_table where date_col = date('2019-12-31T12:00:00')", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where date_col = '2019-12-31T00:00:00'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where date_col = '2019-12-31T00:00:01'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select i from datetime_table where date_col = '2019-12-31'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where date_col = '2019/12/31'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where date_col > '2019-12-31' order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "select i from datetime_table where date_col >= '2019-12-31' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where date_col > '2019/12/31' order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "select i from datetime_table where date_col > '2019-12-31T00:00:01' order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "select i from datetime_table where datetime_col = date('2020-01-01T12:00:00')", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select i from datetime_table where datetime_col = '2020-01-01T12:00:00'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where datetime_col = datetime('2020-01-01T12:00:00')", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where datetime_col = '2020-01-01T12:00:01'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select i from datetime_table where datetime_col > '2020-01-01T12:00:00' order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "select i from datetime_table where datetime_col > '2020-01-01' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where datetime_col >= '2020-01-01' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where datetime_col >= '2020-01-01 00:00' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where datetime_col >= '2020-01-01 00:00:00' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where datetime_col > '2020/01/01' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where datetime_col > datetime('2020-01-01T12:00:00') order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "select i from datetime_table where timestamp_col = date('2020-01-02T12:00:00')", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select i from datetime_table where timestamp_col = '2020-01-02T12:00:00'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where timestamp_col = datetime('2020-01-02T12:00:00')", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select i from datetime_table where timestamp_col = timestamp('2020-01-02T12:00:00')", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // The timestamp function actually converts to a datetime type, so check that we can convert values // outside of the timestamp range, but inside the datetime range. // https://github.com/dolthub/dolt/issues/8236 Query: "SELECT timestamp('1001-01-01 00:00:00');", - Expected: []sql.Row{{time.Date(1001, time.January, 1, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(1001, time.January, 1, 0, 0, 0, 0, time.UTC)}}, }, { Query: "select i from datetime_table where timestamp_col = '2020-01-02T12:00:01'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select i from datetime_table where timestamp_col > '2020-01-02T12:00:00' order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "select i from datetime_table where timestamp_col > '2020-01-02' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where timestamp_col >= '2020-01-02' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where timestamp_col > '2020/01/02' order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select i from datetime_table where timestamp_col > datetime('2020-01-02T12:00:00') order by 1", - Expected: []sql.Row{{2}, {3}}, + Expected: []sql.UntypedSqlRow{{2}, {3}}, }, { Query: "SELECT dt1.i FROM datetime_table dt1 join datetime_table dt2 on dt1.timestamp_col = dt2.timestamp_col order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "SELECT dt1.i FROM datetime_table dt1 join datetime_table dt2 on dt1.date_col = date(date_sub(dt2.timestamp_col, interval 2 day)) order by 1", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "SELECT COUNT(*) FROM mytable;", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT COUNT(*) FROM mytable LIMIT 1;", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT COUNT(*) AS c FROM mytable;", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT substring(s, 2, 3) FROM mytable", - Expected: []sql.Row{{"irs"}, {"eco"}, {"hir"}}, + Expected: []sql.UntypedSqlRow{{"irs"}, {"eco"}, {"hir"}}, }, { Query: `SELECT substring("foo", 2, 2)`, - Expected: []sql.Row{{"oo"}}, + Expected: []sql.UntypedSqlRow{{"oo"}}, }, { Query: `SELECT SUBSTRING_INDEX('a.b.c.d.e.f', '.', 2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a.b"}, }, }, { Query: `SELECT SUBSTRING_INDEX('a.b.c.d.e.f', '.', -2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"e.f"}, }, }, { Query: `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('source{d}', '{d}', 1), 'r', -1)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ce"}, }, }, { Query: `SELECT SUBSTRING_INDEX(mytable.s, "d", 1) AS s FROM mytable INNER JOIN othertable ON (SUBSTRING_INDEX(mytable.s, "d", 1) = SUBSTRING_INDEX(othertable.s2, "d", 1)) GROUP BY 1 HAVING s = 'secon';`, - Expected: []sql.Row{{"secon"}}, + Expected: []sql.UntypedSqlRow{{"secon"}}, }, { Query: `SELECT SUBSTRING_INDEX(mytable.s, "d", 1) AS s FROM mytable INNER JOIN othertable ON (SUBSTRING_INDEX(mytable.s, "d", 1) = SUBSTRING_INDEX(othertable.s2, "d", 1)) GROUP BY s HAVING s = 'secon';`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT SUBSTRING_INDEX(mytable.s, "d", 1) AS ss FROM mytable INNER JOIN othertable ON (SUBSTRING_INDEX(mytable.s, "d", 1) = SUBSTRING_INDEX(othertable.s2, "d", 1)) GROUP BY s HAVING s = 'secon';`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT SUBSTRING_INDEX(mytable.s, "d", 1) AS ss FROM mytable INNER JOIN othertable ON (SUBSTRING_INDEX(mytable.s, "d", 1) = SUBSTRING_INDEX(othertable.s2, "d", 1)) GROUP BY ss HAVING ss = 'secon';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"secon"}, }, }, { Query: `SELECT TRIM(mytable.s) AS s FROM mytable`, - Expected: []sql.Row{{"first row"}, {"second row"}, {"third row"}}, + Expected: []sql.UntypedSqlRow{{"first row"}, {"second row"}, {"third row"}}, }, { Query: `SELECT TRIM("row" from mytable.s) AS s FROM mytable`, - Expected: []sql.Row{{"first "}, {"second "}, {"third "}}, + Expected: []sql.UntypedSqlRow{{"first "}, {"second "}, {"third "}}, }, { Query: `SELECT TRIM(mytable.s from "first row") AS s FROM mytable`, - Expected: []sql.Row{{""}, {"first row"}, {"first row"}}, + Expected: []sql.UntypedSqlRow{{""}, {"first row"}, {"first row"}}, }, { Query: `SELECT TRIM(mytable.s from mytable.s) AS s FROM mytable`, - Expected: []sql.Row{{""}, {""}, {""}}, + Expected: []sql.UntypedSqlRow{{""}, {""}, {""}}, }, { Query: `SELECT TRIM(" foo ")`, - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Query: `SELECT TRIM(" " FROM " foo ")`, - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Query: `SELECT TRIM(LEADING " " FROM " foo ")`, - Expected: []sql.Row{{"foo "}}, + Expected: []sql.UntypedSqlRow{{"foo "}}, }, { Query: `SELECT TRIM(TRAILING " " FROM " foo ")`, - Expected: []sql.Row{{" foo"}}, + Expected: []sql.UntypedSqlRow{{" foo"}}, }, { Query: `SELECT TRIM(BOTH " " FROM " foo ")`, - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Query: `SELECT TRIM("" FROM " foo")`, - Expected: []sql.Row{{" foo"}}, + Expected: []sql.UntypedSqlRow{{" foo"}}, }, { Query: `SELECT TRIM("bar" FROM "barfoobar")`, - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Query: `SELECT TRIM(TRAILING "bar" FROM "barfoobar")`, - Expected: []sql.Row{{"barfoo"}}, + Expected: []sql.UntypedSqlRow{{"barfoo"}}, }, { Query: `SELECT TRIM(TRAILING "foo" FROM "foo")`, - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, { Query: `SELECT TRIM(LEADING "ooo" FROM TRIM("oooo"))`, - Expected: []sql.Row{{"o"}}, + Expected: []sql.UntypedSqlRow{{"o"}}, }, { Query: `SELECT TRIM(BOTH "foo" FROM TRIM("barfoobar"))`, - Expected: []sql.Row{{"barfoobar"}}, + Expected: []sql.UntypedSqlRow{{"barfoobar"}}, }, { Query: `SELECT TRIM(LEADING "bar" FROM TRIM("foobar"))`, - Expected: []sql.Row{{"foobar"}}, + Expected: []sql.UntypedSqlRow{{"foobar"}}, }, { Query: `SELECT TRIM(TRAILING "oo" FROM TRIM("oof"))`, - Expected: []sql.Row{{"oof"}}, + Expected: []sql.UntypedSqlRow{{"oof"}}, }, { Query: `SELECT TRIM(LEADING "test" FROM TRIM(" test "))`, - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, { Query: `SELECT TRIM(LEADING CONCAT("a", "b") FROM TRIM("ababab"))`, - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, { Query: `SELECT TRIM(TRAILING CONCAT("a", "b") FROM CONCAT("test","ab"))`, - Expected: []sql.Row{{"test"}}, + Expected: []sql.UntypedSqlRow{{"test"}}, }, { Query: `SELECT TRIM(LEADING 1 FROM "11111112")`, - Expected: []sql.Row{{"2"}}, + Expected: []sql.UntypedSqlRow{{"2"}}, }, { Query: `SELECT TRIM(LEADING 1 FROM 11111112)`, - Expected: []sql.Row{{"2"}}, + Expected: []sql.UntypedSqlRow{{"2"}}, }, { Query: `SELECT INET_ATON("10.0.5.10")`, - Expected: []sql.Row{{uint64(167773450)}}, + Expected: []sql.UntypedSqlRow{{uint64(167773450)}}, }, { Query: `SELECT INET_NTOA(167773450)`, - Expected: []sql.Row{{"10.0.5.10"}}, + Expected: []sql.UntypedSqlRow{{"10.0.5.10"}}, }, { Query: `SELECT INET_ATON("10.0.5.11")`, - Expected: []sql.Row{{uint64(167773451)}}, + Expected: []sql.UntypedSqlRow{{uint64(167773451)}}, }, { Query: `SELECT INET_NTOA(167773451)`, - Expected: []sql.Row{{"10.0.5.11"}}, + Expected: []sql.UntypedSqlRow{{"10.0.5.11"}}, }, { Query: `SELECT INET_NTOA(INET_ATON("12.34.56.78"))`, - Expected: []sql.Row{{"12.34.56.78"}}, + Expected: []sql.UntypedSqlRow{{"12.34.56.78"}}, }, { Query: `SELECT INET_ATON(INET_NTOA("12345678"))`, - Expected: []sql.Row{{uint64(12345678)}}, + Expected: []sql.UntypedSqlRow{{uint64(12345678)}}, }, { Query: `SELECT INET_ATON("notanipaddress")`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT INET_NTOA("spaghetti")`, - Expected: []sql.Row{{"0.0.0.0"}}, + Expected: []sql.UntypedSqlRow{{"0.0.0.0"}}, }, { Query: `SELECT HEX(INET6_ATON("10.0.5.9"))`, - Expected: []sql.Row{{"0A000509"}}, + Expected: []sql.UntypedSqlRow{{"0A000509"}}, }, { Query: `SELECT HEX(INET6_ATON("::10.0.5.9"))`, - Expected: []sql.Row{{"0000000000000000000000000A000509"}}, + Expected: []sql.UntypedSqlRow{{"0000000000000000000000000A000509"}}, }, { Query: `SELECT HEX(INET6_ATON("1.2.3.4"))`, - Expected: []sql.Row{{"01020304"}}, + Expected: []sql.UntypedSqlRow{{"01020304"}}, }, { Query: `SELECT HEX(INET6_ATON("fdfe::5455:caff:fefa:9098"))`, - Expected: []sql.Row{{"FDFE0000000000005455CAFFFEFA9098"}}, + Expected: []sql.UntypedSqlRow{{"FDFE0000000000005455CAFFFEFA9098"}}, }, { Query: `SELECT HEX(INET6_ATON("1111:2222:3333:4444:5555:6666:7777:8888"))`, - Expected: []sql.Row{{"11112222333344445555666677778888"}}, + Expected: []sql.UntypedSqlRow{{"11112222333344445555666677778888"}}, }, { Query: `SELECT INET6_ATON("notanipaddress")`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT INET6_NTOA(UNHEX("1234ffff5678ffff1234ffff5678ffff"))`, - Expected: []sql.Row{{"1234:ffff:5678:ffff:1234:ffff:5678:ffff"}}, + Expected: []sql.UntypedSqlRow{{"1234:ffff:5678:ffff:1234:ffff:5678:ffff"}}, }, { Query: `SELECT INET6_NTOA(UNHEX("ffffffff"))`, - Expected: []sql.Row{{"255.255.255.255"}}, + Expected: []sql.UntypedSqlRow{{"255.255.255.255"}}, }, { Query: `SELECT INET6_NTOA(UNHEX("000000000000000000000000ffffffff"))`, - Expected: []sql.Row{{"::255.255.255.255"}}, + Expected: []sql.UntypedSqlRow{{"::255.255.255.255"}}, }, { Query: `SELECT INET6_NTOA(UNHEX("00000000000000000000ffffffffffff"))`, - Expected: []sql.Row{{"::ffff:255.255.255.255"}}, + Expected: []sql.UntypedSqlRow{{"::ffff:255.255.255.255"}}, }, { Query: `SELECT INET6_NTOA(UNHEX("0000000000000000000000000000ffff"))`, - Expected: []sql.Row{{"::ffff"}}, + Expected: []sql.UntypedSqlRow{{"::ffff"}}, }, { Query: `SELECT INET6_NTOA(UNHEX("00000000000000000000000000000000"))`, - Expected: []sql.Row{{"::"}}, + Expected: []sql.UntypedSqlRow{{"::"}}, }, { Query: `SELECT INET6_NTOA("notanipaddress")`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT IS_IPV4("10.0.1.10")`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT IS_IPV4("::10.0.1.10")`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV4("notanipaddress")`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV6("10.0.1.10")`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV6("::10.0.1.10")`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT IS_IPV6("notanipaddress")`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV4_COMPAT(INET6_ATON("10.0.1.10"))`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV4_COMPAT(INET6_ATON("::10.0.1.10"))`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT IS_IPV4_COMPAT(INET6_ATON("::ffff:10.0.1.10"))`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV4_COMPAT(INET6_ATON("notanipaddress"))`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT IS_IPV4_MAPPED(INET6_ATON("10.0.1.10"))`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV4_MAPPED(INET6_ATON("::10.0.1.10"))`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT IS_IPV4_MAPPED(INET6_ATON("::ffff:10.0.1.10"))`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT IS_IPV4_COMPAT(INET6_ATON("notanipaddress"))`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT YEAR('2007-12-11') FROM mytable", - Expected: []sql.Row{{int32(2007)}, {int32(2007)}, {int32(2007)}}, + Expected: []sql.UntypedSqlRow{{int32(2007)}, {int32(2007)}, {int32(2007)}}, }, { Query: "SELECT MONTH('2007-12-11') FROM mytable", - Expected: []sql.Row{{int32(12)}, {int32(12)}, {int32(12)}}, + Expected: []sql.UntypedSqlRow{{int32(12)}, {int32(12)}, {int32(12)}}, }, { Query: "SELECT DAY('2007-12-11') FROM mytable", - Expected: []sql.Row{{int32(11)}, {int32(11)}, {int32(11)}}, + Expected: []sql.UntypedSqlRow{{int32(11)}, {int32(11)}, {int32(11)}}, }, { Query: "SELECT HOUR('2007-12-11 20:21:22') FROM mytable", - Expected: []sql.Row{{int32(20)}, {int32(20)}, {int32(20)}}, + Expected: []sql.UntypedSqlRow{{int32(20)}, {int32(20)}, {int32(20)}}, }, { Query: "SELECT MINUTE('2007-12-11 20:21:22') FROM mytable", - Expected: []sql.Row{{int32(21)}, {int32(21)}, {int32(21)}}, + Expected: []sql.UntypedSqlRow{{int32(21)}, {int32(21)}, {int32(21)}}, }, { Query: "SELECT SECOND('2007-12-11 20:21:22') FROM mytable", - Expected: []sql.Row{{int32(22)}, {int32(22)}, {int32(22)}}, + Expected: []sql.UntypedSqlRow{{int32(22)}, {int32(22)}, {int32(22)}}, }, { Query: "SELECT DAYOFYEAR('2007-12-11 20:21:22') FROM mytable", - Expected: []sql.Row{{int32(345)}, {int32(345)}, {int32(345)}}, + Expected: []sql.UntypedSqlRow{{int32(345)}, {int32(345)}, {int32(345)}}, }, { Query: "SELECT SECOND('2007-12-11T20:21:22Z') FROM mytable", - Expected: []sql.Row{{int32(22)}, {int32(22)}, {int32(22)}}, + Expected: []sql.UntypedSqlRow{{int32(22)}, {int32(22)}, {int32(22)}}, }, { Query: "SELECT DAYOFYEAR('2007-12-11') FROM mytable", - Expected: []sql.Row{{int32(345)}, {int32(345)}, {int32(345)}}, + Expected: []sql.UntypedSqlRow{{int32(345)}, {int32(345)}, {int32(345)}}, }, { Query: "SELECT DAYOFYEAR('20071211') FROM mytable", - Expected: []sql.Row{{int32(345)}, {int32(345)}, {int32(345)}}, + Expected: []sql.UntypedSqlRow{{int32(345)}, {int32(345)}, {int32(345)}}, }, { Query: "SELECT YEARWEEK('0000-01-01')", - Expected: []sql.Row{{int32(1)}}, + Expected: []sql.UntypedSqlRow{{int32(1)}}, }, { Query: "SELECT YEARWEEK('9999-12-31')", - Expected: []sql.Row{{int32(999952)}}, + Expected: []sql.UntypedSqlRow{{int32(999952)}}, }, { Query: "SELECT YEARWEEK('2008-02-20', 1)", - Expected: []sql.Row{{int32(200808)}}, + Expected: []sql.UntypedSqlRow{{int32(200808)}}, }, { Query: "SELECT YEARWEEK('1987-01-01')", - Expected: []sql.Row{{int32(198652)}}, + Expected: []sql.UntypedSqlRow{{int32(198652)}}, }, { Query: "SELECT YEARWEEK('1987-01-01', 20), YEARWEEK('1987-01-01', 1), YEARWEEK('1987-01-01', 2), YEARWEEK('1987-01-01', 3), YEARWEEK('1987-01-01', 4), YEARWEEK('1987-01-01', 5), YEARWEEK('1987-01-01', 6), YEARWEEK('1987-01-01', 7)", - Expected: []sql.Row{{int32(198653), int32(198701), int32(198652), int32(198701), int32(198653), int32(198652), int32(198653), int32(198652)}}, + Expected: []sql.UntypedSqlRow{{int32(198653), int32(198701), int32(198652), int32(198701), int32(198653), int32(198652), int32(198653), int32(198652)}}, }, { Query: `select 'a'+4;`, - Expected: []sql.Row{{4.0}}, + Expected: []sql.UntypedSqlRow{{4.0}}, }, { Query: `select '20a'+4;`, - Expected: []sql.Row{{24.0}}, + Expected: []sql.UntypedSqlRow{{24.0}}, }, { Query: `select '10.a'+4;`, - Expected: []sql.Row{{14.0}}, + Expected: []sql.UntypedSqlRow{{14.0}}, }, { Query: `select '.20a'+4;`, - Expected: []sql.Row{{4.2}}, + Expected: []sql.UntypedSqlRow{{4.2}}, }, { Query: `select 4+'a';`, - Expected: []sql.Row{{4.0}}, + Expected: []sql.UntypedSqlRow{{4.0}}, }, { Query: `select 'a'+'a';`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { Query: "SELECT STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') + STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s');", - Expected: []sql.Row{{40261002186034}}, + Expected: []sql.UntypedSqlRow{{40261002186034}}, }, { Query: `select 'a'-4;`, - Expected: []sql.Row{{-4.0}}, + Expected: []sql.UntypedSqlRow{{-4.0}}, }, { Query: `select 4-'a';`, - Expected: []sql.Row{{4.0}}, + Expected: []sql.UntypedSqlRow{{4.0}}, }, { Query: `select 4-'2a';`, - Expected: []sql.Row{{2.0}}, + Expected: []sql.UntypedSqlRow{{2.0}}, }, { Query: `select 'a'-'a';`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { Query: `select 'a'*4;`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { Query: `select 4*'a';`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { Query: `select 'a'*'a';`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { Query: "select 1 * '2.50a';", - Expected: []sql.Row{{2.5}}, + Expected: []sql.UntypedSqlRow{{2.5}}, }, { Query: "select 1 * '2.a50a';", - Expected: []sql.Row{{2.0}}, + Expected: []sql.UntypedSqlRow{{2.0}}, }, { Query: `select 'a'/4;`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { Query: `select 4/'a';`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `select 'a'/'a';`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select 1 / '2.50a';", - Expected: []sql.Row{{0.4}}, + Expected: []sql.UntypedSqlRow{{0.4}}, }, { Query: "select 1 / '2.a50a';", - Expected: []sql.Row{{0.5}}, + Expected: []sql.UntypedSqlRow{{0.5}}, }, { Query: `select STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') / 1;`, - Expected: []sql.Row{{"20130501093017.0000"}}, + Expected: []sql.UntypedSqlRow{{"20130501093017.0000"}}, }, { Query: "select 'a'&'a';", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 'a'&4;", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 4&'a';", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select date('2022-11-19 11:53:45') & date('2022-11-11 11:53:45');", - Expected: []sql.Row{{uint64(20221111)}}, + Expected: []sql.UntypedSqlRow{{uint64(20221111)}}, }, { Query: "select '2022-11-19 11:53:45' & '2023-11-11 11:53:45';", - Expected: []sql.Row{{uint64(2022)}}, + Expected: []sql.UntypedSqlRow{{uint64(2022)}}, }, { Query: "SELECT STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') & STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s');", - Expected: []sql.Row{{uint64(20130501093017)}}, + Expected: []sql.UntypedSqlRow{{uint64(20130501093017)}}, }, { Query: "select 'a'|'a';", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 'a'|4;", - Expected: []sql.Row{{uint64(4)}}, + Expected: []sql.UntypedSqlRow{{uint64(4)}}, }, { Query: "select 'a'|-1;", - Expected: []sql.Row{{uint64(18446744073709551615)}}, + Expected: []sql.UntypedSqlRow{{uint64(18446744073709551615)}}, }, { Query: "select 4|'a';", - Expected: []sql.Row{{uint64(4)}}, + Expected: []sql.UntypedSqlRow{{uint64(4)}}, }, { Query: "select 'a'^'a';", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 'a'^4;", - Expected: []sql.Row{{uint64(4)}}, + Expected: []sql.UntypedSqlRow{{uint64(4)}}, }, { Query: "select 'a'^-1;", - Expected: []sql.Row{{uint64(18446744073709551615)}}, + Expected: []sql.UntypedSqlRow{{uint64(18446744073709551615)}}, }, { Query: "select 4^'a';", - Expected: []sql.Row{{uint64(4)}}, + Expected: []sql.UntypedSqlRow{{uint64(4)}}, }, { Query: "select now() ^ now();", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 'a'>>'a';", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 'a'>>4;", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 4>>'a';", - Expected: []sql.Row{{uint64(4)}}, + Expected: []sql.UntypedSqlRow{{uint64(4)}}, }, { Query: "select -1>>'a';", - Expected: []sql.Row{{uint64(18446744073709551615)}}, + Expected: []sql.UntypedSqlRow{{uint64(18446744073709551615)}}, }, { Query: "select 'a'<<'a';", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select 'a'<<4;", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select '2a'<<4;", - Expected: []sql.Row{{uint64(32)}}, + Expected: []sql.UntypedSqlRow{{uint64(32)}}, }, { Query: "select 4<<'a';", - Expected: []sql.Row{{uint64(4)}}, + Expected: []sql.UntypedSqlRow{{uint64(4)}}, }, { Query: "select -1<<'a';", - Expected: []sql.Row{{uint64(18446744073709551615)}}, + Expected: []sql.UntypedSqlRow{{uint64(18446744073709551615)}}, }, { Query: "select -1.00 div 2;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "select 'a' div 'a';", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select 'a' div 4;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "select 4 div 'a';", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select 1.2 div 0.2;", - Expected: []sql.Row{{6}}, + Expected: []sql.UntypedSqlRow{{6}}, }, { Query: "select 1.2 div 0.4;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "select 1.2 div '1' ;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select 1.2 div 'a1' ;", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select '12a' div '3' ;", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select 'a' mod 'a';", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select 'a' mod 4;", - Expected: []sql.Row{{float64(0)}}, + Expected: []sql.UntypedSqlRow{{float64(0)}}, }, { Query: "select 4 mod 'a';", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `select STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') % 12345;`, - Expected: []sql.Row{{"10487"}}, + Expected: []sql.UntypedSqlRow{{"10487"}}, }, { Query: "select 0.0015 / 0.0026;", - Expected: []sql.Row{{"0.57692308"}}, + Expected: []sql.UntypedSqlRow{{"0.57692308"}}, }, { Query: "select (14620 / 9432456);", - Expected: []sql.Row{{"0.0015"}}, + Expected: []sql.UntypedSqlRow{{"0.0015"}}, }, { Query: "select (24250 / 9432456);", - Expected: []sql.Row{{"0.0026"}}, + Expected: []sql.UntypedSqlRow{{"0.0026"}}, }, { Query: "select 5.2/3.1/1.7/1/1/1/1/1;", - Expected: []sql.Row{{"0.98671726755218216294117647000"}}, + Expected: []sql.UntypedSqlRow{{"0.98671726755218216294117647000"}}, }, { Query: "select 5.2/3.1/1.9/1/1/1/1/1;", - Expected: []sql.Row{{"0.88285229202037351421052631500"}}, + Expected: []sql.UntypedSqlRow{{"0.88285229202037351421052631500"}}, }, { Query: "select 1.677419354838709677/1.9;", - Expected: []sql.Row{{"0.8828522920203735142105"}}, + Expected: []sql.UntypedSqlRow{{"0.8828522920203735142105"}}, }, { Query: "select 1.9/1.677419354838709677;", - Expected: []sql.Row{{"1.13269"}}, + Expected: []sql.UntypedSqlRow{{"1.13269"}}, }, { Query: "select 1.677419354838709677/1.9/1/1/1/1/1;", - Expected: []sql.Row{{"0.882852292020373514210526315000"}}, + Expected: []sql.UntypedSqlRow{{"0.882852292020373514210526315000"}}, }, { Query: "select (14620 / 9432456) / (24250 / 9432456);", - Expected: []sql.Row{{"0.60288653"}}, + Expected: []sql.UntypedSqlRow{{"0.60288653"}}, }, { Query: "select (14620.0 / 9432456) / (24250 / 9432456);", - Expected: []sql.Row{{"0.602886527"}}, + Expected: []sql.UntypedSqlRow{{"0.602886527"}}, }, { Query: "select (14620 / 9432456), (24250 / 9432456), (14620 / 9432456) / (24250 / 9432456);", - Expected: []sql.Row{{"0.0015", "0.0026", "0.60288653"}}, + Expected: []sql.UntypedSqlRow{{"0.0015", "0.0026", "0.60288653"}}, }, { Query: "select 1000.0 / 20.00;", - Expected: []sql.Row{{"50.00000"}}, + Expected: []sql.UntypedSqlRow{{"50.00000"}}, }, { Query: "select 2000.0 * (24.0 * 6.0 * 6.25 * 10.0) / 250000000.0;", - Expected: []sql.Row{{"0.0720000000"}}, + Expected: []sql.UntypedSqlRow{{"0.0720000000"}}, }, { Query: "select 2000.0 / 250000000.0 * (24.0 * 6.0 * 6.25 * 10.0);", - Expected: []sql.Row{{"0.0720000000"}}, + Expected: []sql.UntypedSqlRow{{"0.0720000000"}}, }, { Query: `select 100 / 35600.00 * 35600.00;`, - Expected: []sql.Row{{"99.999973"}}, + Expected: []sql.UntypedSqlRow{{"99.999973"}}, }, { Query: `select 64 / 77 * 77;`, - Expected: []sql.Row{{"64.0000"}}, + Expected: []sql.UntypedSqlRow{{"64.0000"}}, }, { Query: `select (1 / 3) * (1 / 3);`, - Expected: []sql.Row{{"0.11111111"}}, + Expected: []sql.UntypedSqlRow{{"0.11111111"}}, }, { Query: "select 1/2/3/4/5/6;", - Expected: []sql.Row{{"0.00138888888888888888"}}, + Expected: []sql.UntypedSqlRow{{"0.00138888888888888888"}}, }, { Query: "select 24/3/2*1/2/3;", - Expected: []sql.Row{{"0.6666666666666667"}}, + Expected: []sql.UntypedSqlRow{{"0.6666666666666667"}}, }, { Query: "select 1/2/3%4/5/6;", - Expected: []sql.Row{{"0.0055555555555556"}}, + Expected: []sql.UntypedSqlRow{{"0.0055555555555556"}}, }, // check that internal precision is preserved in comparisons { // 0 scale + 0 scale = 9 scale Query: "select 1 / 3 = 0.333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 0 scale + 1 scale = 9 scale Query: "select 1 / 3.0 = 0.333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 0 scale + 6 scale = 18 scale Query: "select 1 / 3.000000 = 0.333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 0 scale + 15 scale = 27 scale Query: "select 1 / 3.000000000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 0 scale + 24 scale = 36 scale Query: "select 1 / 3.000000000000000000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 1 scale + 0 scale = 9 scale Query: "select 1.0 / 3 = 0.333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 1 scale + 1 scale = 18 scale Query: "select 1.0 / 3.0 = 0.333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 1 scale + 10 scale = 27 scale Query: "select 1.0 / 3.0000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 1 scale + 19 scale = 36 scale Query: "select 1.0 / 3.0000000000000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 6 scale + 8 scale = 18 scale Query: "select 1.000000 / 3.00000000 = 0.333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 6 scale + 9 scale = 27 scale Query: "select 1.000000 / 3.000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 6 scale + 17 scale = 27 scale Query: "select 1.000000 / 3.00000000000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 6 scale + 18 scale = 36 scale Query: "select 1.000000 / 3.000000000000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 7 scale + 7 scale = 18 scale Query: "select 1.0000000 / 3.0000000 = 0.333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 7 scale + 8 scale = 27 scale Query: "select 1.0000000 / 3.00000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 7 scale + 16 scale = 27 scale Query: "select 1.0000000 / 3.0000000000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 7 scale + 15 scale = 36 scale Query: "select 1.0000000 / 3.00000000000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 8 scale + 6 scale = 18 scale Query: "select 1.00000000 / 3.000000 = 0.333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 8 scale + 7 scale = 27 scale Query: "select 1.00000000 / 3.0000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 8 scale + 15 scale = 27 scale Query: "select 1.00000000 / 3.000000000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 8 scale + 14 scale = 36 scale Query: "select 1.00000000 / 3.0000000000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 9 scale + 5 scale = 18 scale Query: "select 1.000000000 / 3.00000 = 0.333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 9 scale + 6 scale = 27 scale Query: "select 1.000000000 / 3.000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 9 scale + 14 scale = 27 scale Query: "select 1.000000000 / 3.00000000000000 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 9 scale + 13 scale = 36 scale Query: "select 1.000000000 / 3.000000000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 10 scale + 1 scale = 27 scale Query: "select 1.0000000000 / 3.0 = 0.333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // 10 scale + 10 scale = 36 scale Query: "select 1.0000000000 / 3.0000000000 = 0.333333333333333333333333333333333333;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, // check that decimal internal precision is preserved in casts { // 0 scale + 0 scale = 9 scale Query: "select cast(1 / 3 as decimal(65,30));", - Expected: []sql.Row{{"0.333333333000000000000000000000"}}, + Expected: []sql.UntypedSqlRow{{"0.333333333000000000000000000000"}}, }, { // 0 scale + 1 scale = 9 scale Query: "select cast(1 / 3.0 as decimal(65,30));", - Expected: []sql.Row{{"0.333333333000000000000000000000"}}, + Expected: []sql.UntypedSqlRow{{"0.333333333000000000000000000000"}}, }, { // 0 scale + 6 scale = 18 scale Query: "select cast(1 / 3.000000 as decimal(65,30));", - Expected: []sql.Row{{"0.333333333333333333000000000000"}}, + Expected: []sql.UntypedSqlRow{{"0.333333333333333333000000000000"}}, }, { // 0 scale + 15 scale = 27 scale Query: "select cast(1 / 3.000000000000000 as decimal(65,30));", - Expected: []sql.Row{{"0.333333333333333333333333333000"}}, + Expected: []sql.UntypedSqlRow{{"0.333333333333333333333333333000"}}, }, { // 0 scale + 24 scale = 36 scale Query: "select cast(1 / 3.000000000000000000000000 as decimal(65,30));", - Expected: []sql.Row{{"0.333333333333333333333333333333"}}, + Expected: []sql.UntypedSqlRow{{"0.333333333333333333333333333333"}}, }, { Query: "select 0.05 % 0.024;", - Expected: []sql.Row{{"0.002"}}, + Expected: []sql.UntypedSqlRow{{"0.002"}}, }, { Query: "select 0.0500 % 0.05;", - Expected: []sql.Row{{"0.0000"}}, + Expected: []sql.UntypedSqlRow{{"0.0000"}}, }, { Query: "select 0.05 % 4;", - Expected: []sql.Row{{"0.05"}}, + Expected: []sql.UntypedSqlRow{{"0.05"}}, }, { Query: "select 2.6 & -1.3;", - Expected: []sql.Row{{uint64(3)}}, + Expected: []sql.UntypedSqlRow{{uint64(3)}}, }, { Query: "select -1.5 & -3.3;", - Expected: []sql.Row{{uint64(18446744073709551612)}}, + Expected: []sql.UntypedSqlRow{{uint64(18446744073709551612)}}, }, { Query: "select -1.7 & 0.5;", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "select -1.7 & 1.5;", - Expected: []sql.Row{{uint64(2)}}, + Expected: []sql.UntypedSqlRow{{uint64(2)}}, }, { Query: "SELECT '127' | '128', '128' << 2;", - Expected: []sql.Row{{uint64(255), uint64(512)}}, + Expected: []sql.UntypedSqlRow{{uint64(255), uint64(512)}}, }, { Query: "SELECT X'7F' | X'80', X'80' << 2;", - Expected: []sql.Row{{uint64(255), uint64(512)}}, + Expected: []sql.UntypedSqlRow{{uint64(255), uint64(512)}}, }, { Query: "SELECT X'40' | X'01', b'11110001' & b'01001111';", - Expected: []sql.Row{{uint64(65), uint64(65)}}, + Expected: []sql.UntypedSqlRow{{uint64(65), uint64(65)}}, }, { Query: "SELECT 0x12345;", - Expected: []sql.Row{{[]uint8{0x1, 0x23, 0x45}}}, + Expected: []sql.UntypedSqlRow{{[]uint8{0x1, 0x23, 0x45}}}, }, { Query: "SELECT i FROM mytable WHERE i BETWEEN 1 AND 2", - Expected: []sql.Row{{int64(1)}, {int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}}, }, { Query: "SELECT i FROM mytable WHERE i NOT BETWEEN 1 AND 2", - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: "SELECT 2 BETWEEN NULL AND 2", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NOT 2 BETWEEN NULL AND 2", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT DISTINCT CAST(i AS DECIMAL) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"3"}, @@ -4653,28 +4653,28 @@ Select * from ( }, { Query: "SELECT SUM( DISTINCT CAST(i AS DECIMAL)) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"6"}, }, }, { Query: "SELECT DISTINCT * FROM (values row(7,31,27), row(79,17,38), row(78,59,26)) a (col0, col1, col2) WHERE ( + col1 + + col2 ) NOT BETWEEN NULL AND col1", - Expected: []sql.Row{{7, 31, 27}, + Expected: []sql.UntypedSqlRow{{7, 31, 27}, {79, 17, 38}, {78, 59, 26}}, }, { Query: "SELECT + tab0.col2 * - tab0.col1 FROM (values row(89,91,82), row(35,97,1), row(24,86,33)) tab0 (col0, col1, col2) " + "WHERE NOT ( + col2 * + col2 * col1 ) BETWEEN col1 * tab0.col0 AND NULL", - Expected: []sql.Row{{-97}}, + Expected: []sql.UntypedSqlRow{{-97}}, }, { Query: "SELECT id FROM typestable WHERE ti > '2019-12-31'", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE da = '2019-12-31'", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE ti < '2019-12-31'", @@ -4686,7 +4686,7 @@ Select * from ( }, { Query: "SELECT id FROM typestable WHERE ti > date_add('2019-12-30', INTERVAL 1 day)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE da > date_add('2019-12-30', INTERVAL 1 DAY)", @@ -4694,7 +4694,7 @@ Select * from ( }, { Query: "SELECT id FROM typestable WHERE da >= date_add('2019-12-30', INTERVAL 1 DAY)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE ti < date_add('2019-12-30', INTERVAL 1 DAY)", @@ -4706,15 +4706,15 @@ Select * from ( }, { Query: "SELECT id FROM typestable WHERE da < adddate('2020-01-01', INTERVAL 1 DAY)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE da < adddate('2020-01-01', 1)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE ti > date_sub('2020-01-01', INTERVAL 1 DAY)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE da > date_sub('2020-01-01', INTERVAL 1 DAY)", @@ -4722,7 +4722,7 @@ Select * from ( }, { Query: "SELECT id FROM typestable WHERE da >= date_sub('2020-01-01', INTERVAL 1 DAY)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE ti < date_sub('2020-01-01', INTERVAL 1 DAY)", @@ -4734,51 +4734,51 @@ Select * from ( }, { Query: "SELECT id FROM typestable WHERE da >= subdate('2020-01-01', INTERVAL 1 DAY)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT id FROM typestable WHERE da >= subdate('2020-01-01', 1)", - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: "SELECT adddate(da, i32) from typestable;", - Expected: []sql.Row{{time.Date(2020, time.January, 4, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2020, time.January, 4, 0, 0, 0, 0, time.UTC)}}, }, { Query: "SELECT adddate(da, concat(u32)) from typestable;", - Expected: []sql.Row{{time.Date(2020, time.January, 8, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2020, time.January, 8, 0, 0, 0, 0, time.UTC)}}, }, { Query: "SELECT adddate(da, f32/10) from typestable;", - Expected: []sql.Row{{time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC)}}, }, { Query: "SELECT subdate(da, i32) from typestable;", - Expected: []sql.Row{{time.Date(2019, time.December, 27, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.December, 27, 0, 0, 0, 0, time.UTC)}}, }, { Query: "SELECT subdate(da, concat(u32)) from typestable;", - Expected: []sql.Row{{time.Date(2019, time.December, 23, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.December, 23, 0, 0, 0, 0, time.UTC)}}, }, { Query: "SELECT subdate(da, f32/10) from typestable;", - Expected: []sql.Row{{time.Date(2019, time.December, 30, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.December, 30, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT * FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM othertable) othertable_one) othertable_two) othertable_three WHERE s2 = 'first'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", int64(3)}, }, }, { Query: `SELECT * FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM othertable WHERE s2 = 'first') othertable_one) othertable_two) othertable_three WHERE s2 = 'first'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", int64(3)}, }, }, { Query: `SELECT * FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM othertable WHERE i2 = 3) othertable_one) othertable_two) othertable_three WHERE s2 = 'first'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", int64(3)}, }, }, @@ -4788,7 +4788,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "1"}, {int64(2), ""}, {int64(3), "true"}, @@ -4798,7 +4798,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE i AND i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "1"}, {int64(2), ""}, {int64(3), "true"}, @@ -4808,7 +4808,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE i OR i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "1"}, {int64(2), ""}, {int64(3), "true"}, @@ -4818,19 +4818,19 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE NOT i", - Expected: []sql.Row{{int64(0), "0"}}, + Expected: []sql.UntypedSqlRow{{int64(0), "0"}}, }, { Query: "SELECT i,v from stringandtable WHERE NOT i AND NOT i", - Expected: []sql.Row{{int64(0), "0"}}, + Expected: []sql.UntypedSqlRow{{int64(0), "0"}}, }, { Query: "SELECT i,v from stringandtable WHERE NOT i OR NOT i", - Expected: []sql.Row{{int64(0), "0"}}, + Expected: []sql.UntypedSqlRow{{int64(0), "0"}}, }, { Query: "SELECT i,v from stringandtable WHERE i OR NOT i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(1), "1"}, {int64(2), ""}, @@ -4841,15 +4841,15 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE i XOR i", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i,v from stringandtable WHERE NOT i XOR NOT i", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i,v from stringandtable WHERE i XOR NOT i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(1), "1"}, {int64(2), ""}, @@ -4860,7 +4860,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE i XOR i XOR i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "1"}, {int64(2), ""}, {int64(3), "true"}, @@ -4870,19 +4870,19 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE v", - Expected: []sql.Row{{int64(1), "1"}, {nil, "2"}}, + Expected: []sql.UntypedSqlRow{{int64(1), "1"}, {nil, "2"}}, }, { Query: "SELECT i,v from stringandtable WHERE v AND v", - Expected: []sql.Row{{int64(1), "1"}, {nil, "2"}}, + Expected: []sql.UntypedSqlRow{{int64(1), "1"}, {nil, "2"}}, }, { Query: "SELECT i,v from stringandtable WHERE v OR v", - Expected: []sql.Row{{int64(1), "1"}, {nil, "2"}}, + Expected: []sql.UntypedSqlRow{{int64(1), "1"}, {nil, "2"}}, }, { Query: "SELECT i,v from stringandtable WHERE NOT v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(2), ""}, {int64(3), "true"}, @@ -4891,7 +4891,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE NOT v AND NOT v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(2), ""}, {int64(3), "true"}, @@ -4900,7 +4900,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE NOT v OR NOT v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(2), ""}, {int64(3), "true"}, @@ -4909,7 +4909,7 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE v OR NOT v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(1), "1"}, {int64(2), ""}, @@ -4920,15 +4920,15 @@ Select * from ( }, { Query: "SELECT i,v from stringandtable WHERE v XOR v", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i,v from stringandtable WHERE NOT v XOR NOT v", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT i,v from stringandtable WHERE v XOR NOT v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(0), "0"}, {int64(1), "1"}, {int64(2), ""}, @@ -4940,7 +4940,7 @@ Select * from ( { Query: `select row_number() over (order by i desc), mytable.i as i2 from mytable join othertable on i = i2 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}, @@ -4950,7 +4950,7 @@ Select * from ( Query: `select row_number() over (order by i desc), mytable.i as i2 from mytable join othertable on i = i2 where mytable.i = 3 order by 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, }, }, @@ -4960,7 +4960,7 @@ Select * from ( sum(v1) over (partition by v2 order by pk), percent_rank() over(partition by v2 order by pk) from one_pk_three_idx order by pk`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 8, float64(0), float64(0)}, {1, 7, float64(0), float64(1) / float64(3)}, {2, 6, float64(0), float64(0)}, @@ -4977,7 +4977,7 @@ Select * from ( dense_rank() over(partition by v2 order by pk), rank() over(partition by v2 order by pk) from one_pk_three_idx order by pk`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, float64(0), uint64(1), uint64(1)}, {1, float64(1) / float64(3), uint64(2), uint64(2)}, {2, float64(0), uint64(1), uint64(1)}, @@ -4997,7 +4997,7 @@ Select * from ( max(pk) over(partition by v1 order by pk desc), avg(v2) over (partition by v1 order by pk) from one_pk_three_idx order by pk`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 7, 1, 1, 3, float64(0)}, {1, 7, 2, 2, 3, float64(0)}, {2, 7, 3, 3, 3, float64(1) / float64(3)}, @@ -5010,33 +5010,33 @@ Select * from ( }, { Query: `SELECT s2, i2 FROM othertable WHERE s2 >= "first" AND i2 >= 2 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", int64(3)}, {"second", int64(2)}, }, }, { Query: `SELECT s2, i2 FROM othertable WHERE "first" <= s2 AND 2 <= i2 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", int64(3)}, {"second", int64(2)}, }, }, { Query: `SELECT s2, i2 FROM othertable WHERE s2 <= "second" AND i2 <= 2 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"second", int64(2)}, }, }, { Query: `SELECT s2, i2 FROM othertable WHERE "second" >= s2 AND 2 >= i2 ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"second", int64(2)}, }, }, { Query: "SELECT substring(s2, 1), substring(s2, 2), substring(s2, 3) FROM othertable ORDER BY i2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third", "hird", "ird"}, {"second", "econd", "cond"}, {"first", "irst", "rst"}, @@ -5044,13 +5044,13 @@ Select * from ( }, { Query: `SELECT substring("first", 1), substring("second", 2), substring("third", 3)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first", "econd", "ird"}, }, }, { Query: "SELECT substring(s2, -1), substring(s2, -2), substring(s2, -3) FROM othertable ORDER BY i2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"d", "rd", "ird"}, {"d", "nd", "ond"}, {"t", "st", "rst"}, @@ -5058,7 +5058,7 @@ Select * from ( }, { Query: `SELECT substring("first", -1), substring("second", -2), substring("third", -3)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "nd", "ird"}, }, }, @@ -5068,7 +5068,7 @@ Select * from ( FROM mytable tbl ) t GROUP BY fi`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(1), "second row"}, {int64(1), "third row"}, @@ -5081,7 +5081,7 @@ Select * from ( ) t GROUP BY fi ORDER BY COUNT(*) ASC, fi`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1)}, {"second row", int64(1)}, {"third row", int64(1)}, @@ -5094,7 +5094,7 @@ Select * from ( ) t GROUP BY fi ORDER BY COUNT(*) ASC, fi`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(1), "second row"}, {int64(1), "third row"}, @@ -5106,7 +5106,7 @@ Select * from ( FROM mytable tbl ) t GROUP BY 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(1), "second row"}, {int64(1), "third row"}, @@ -5114,7 +5114,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) AS cnt, s AS fi FROM mytable GROUP BY fi`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(1), "second row"}, {int64(1), "third row"}, @@ -5122,7 +5122,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) AS cnt, s AS fi FROM mytable GROUP BY 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(1), "second row"}, {int64(1), "third row"}, @@ -5130,7 +5130,7 @@ Select * from ( }, { Query: "SELECT CAST(-3 AS UNSIGNED) FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(18446744073709551613)}, {uint64(18446744073709551613)}, {uint64(18446744073709551613)}, @@ -5138,39 +5138,39 @@ Select * from ( }, { Query: "SELECT CAST(-3 AS DOUBLE) FROM dual", - Expected: []sql.Row{{-3.0}}, + Expected: []sql.UntypedSqlRow{{-3.0}}, }, { Query: `SELECT CONVERT("-3.9876", FLOAT) FROM dual`, - Expected: []sql.Row{{float32(-3.9876)}}, + Expected: []sql.UntypedSqlRow{{float32(-3.9876)}}, }, { Query: "SELECT CAST(10.56789 as CHAR(3));", - Expected: []sql.Row{{"10."}}, + Expected: []sql.UntypedSqlRow{{"10."}}, }, { Query: "SELECT CAST(10.56789 as CHAR(30));", - Expected: []sql.Row{{"10.56789"}}, + Expected: []sql.UntypedSqlRow{{"10.56789"}}, }, { Query: "SELECT CAST('abcdef' as BINARY(10));", - Expected: []sql.Row{{[]byte("abcdef\x00\x00\x00\x00")}}, + Expected: []sql.UntypedSqlRow{{[]byte("abcdef\x00\x00\x00\x00")}}, }, { Query: `SELECT CONVERT(10.12345, DECIMAL(4,2))`, - Expected: []sql.Row{{"10.12"}}, + Expected: []sql.UntypedSqlRow{{"10.12"}}, }, { Query: `SELECT CONVERT(1234567893.1234567893, DECIMAL(20,10))`, - Expected: []sql.Row{{"1234567893.1234567893"}}, + Expected: []sql.UntypedSqlRow{{"1234567893.1234567893"}}, }, { Query: `SELECT CONVERT(10, DECIMAL(4,2))`, - Expected: []sql.Row{{"10.00"}}, + Expected: []sql.UntypedSqlRow{{"10.00"}}, }, { Query: "SELECT CONVERT(-3, UNSIGNED) FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(18446744073709551613)}, {uint64(18446744073709551613)}, {uint64(18446744073709551613)}, @@ -5178,21 +5178,21 @@ Select * from ( }, { Query: "select 0 in (1 / 1000), 0 in (1 / 1000, 0), 0.001 in (1 / 1000, 0), 0.0001 in (1 / 1000, 0);", - Expected: []sql.Row{{false, true, true, false}}, + Expected: []sql.UntypedSqlRow{{false, true, true, false}}, }, { Query: "select 0 in (0.01 * 0.30), 1 in (1.0 * 1)", - Expected: []sql.Row{{false, true}}, + Expected: []sql.UntypedSqlRow{{false, true}}, }, { Query: "SELECT MAX(CAST(NULL AS DECIMAL)) * 82", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT '3' > 2 FROM tabletest", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, {true}, {true}, @@ -5200,7 +5200,7 @@ Select * from ( }, { Query: "SELECT s > 2 FROM tabletest", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, {false}, {false}, @@ -5212,7 +5212,7 @@ Select * from ( }, { Query: "SELECT * FROM tabletest WHERE s = 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}, @@ -5220,40 +5220,40 @@ Select * from ( }, { Query: "SELECT * FROM tabletest WHERE s = 'first row'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row"}, }, }, { Query: "SELECT s FROM mytable WHERE i IN (1, 2, 5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, {"second row"}, }, }, { Query: "SELECT s FROM mytable WHERE i NOT IN (1, 2, 5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"third row"}, }, }, { Query: "SELECT 1 + 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, }, }, { Query: `SELECT i AS foo FROM mytable HAVING foo NOT IN (1, 2, 5)`, - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: `SELECT SUM(i) FROM mytable`, - Expected: []sql.Row{{float64(6)}}, + Expected: []sql.UntypedSqlRow{{float64(6)}}, }, { Query: `SELECT i AS foo FROM mytable ORDER BY i DESC`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, {int64(2)}, {int64(1)}, @@ -5261,7 +5261,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) c, i AS foo FROM mytable GROUP BY i ORDER BY i DESC`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(3)}, {int64(1), int64(2)}, {int64(1), int64(1)}, @@ -5269,7 +5269,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) c, i AS foo FROM mytable GROUP BY 2 ORDER BY 2 DESC`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(3)}, {int64(1), int64(2)}, {int64(1), int64(1)}, @@ -5277,7 +5277,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) c, i AS foo FROM mytable GROUP BY i ORDER BY foo DESC`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(3)}, {int64(1), int64(2)}, {int64(1), int64(1)}, @@ -5285,7 +5285,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) c, i AS foo FROM mytable GROUP BY 2 ORDER BY foo DESC`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(3)}, {int64(1), int64(2)}, {int64(1), int64(1)}, @@ -5293,7 +5293,7 @@ Select * from ( }, { Query: `SELECT COUNT(*) c, i AS i FROM mytable GROUP BY 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(3)}, {int64(1), int64(2)}, {int64(1), int64(1)}, @@ -5301,7 +5301,7 @@ Select * from ( }, { Query: `SELECT i AS i FROM mytable GROUP BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, {int64(2)}, {int64(1)}, @@ -5309,25 +5309,25 @@ Select * from ( }, { Query: `SELECT CONCAT("a", "b", "c")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {string("abc")}, }, }, { Query: `SELECT COALESCE(NULL, NULL, NULL, 'example', NULL, 1234567890)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {string("example")}, }, }, { Query: `SELECT COALESCE(NULL, NULL, NULL, COALESCE(NULL, 1234567890))`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int32(1234567890)}, }, }, { Query: "SELECT COALESCE (NULL, NULL)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, ExpectedColumns: []*sql.Column{ { Name: "COALESCE (NULL, NULL)", @@ -5337,7 +5337,7 @@ Select * from ( }, { Query: "SELECT concat(s, i) FROM mytable", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {string("first row1")}, {string("second row2")}, {string("third row3")}, @@ -5345,137 +5345,137 @@ Select * from ( }, { Query: "SELECT version()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {string("8.0.11")}, }, }, { Query: `SELECT RAND(100)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(0.8165026937796166)}, }, }, { Query: `SELECT RAND(i) from mytable order by i`, - Expected: []sql.Row{{0.6046602879796196}, {0.16729663442585624}, {0.7199826688373036}}, + Expected: []sql.UntypedSqlRow{{0.6046602879796196}, {0.16729663442585624}, {0.7199826688373036}}, }, { Query: `SELECT RAND(100) = RAND(100)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: `SELECT RAND() = RAND()`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT MOD(i, 2) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT SIN(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.8414709848078965}, }, }, { Query: "SELECT COS(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.5403023058681398}, }, }, { Query: "SELECT TAN(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1.557407724654902}, }, }, { Query: "SELECT ASIN(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1.5707963267948966}, }, }, { Query: "SELECT ACOS(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.0}, }, }, { Query: "SELECT ATAN(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.7853981633974483}, }, }, { Query: "SELECT COT(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.6420926159343308}, }, }, { Query: "SELECT DEGREES(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {57.29577951308232}, }, }, { Query: "SELECT RADIANS(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.017453292519943295}, }, }, { Query: "SELECT CRC32(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0x83dcefb7)}, }, }, { Query: "SELECT SIGN(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "SELECT ASCII(s) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0x66)}, }, }, { Query: "SELECT HEX(s) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"666972737420726F77"}, }, }, { Query: "SELECT UNHEX(s) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT BIN(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, }, }, { Query: "SELECT BIT_LENGTH(i) from mytable order by i limit 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {64}, }, }, { Query: "select date_format(datetime_col, '%D') from datetime_table order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1st"}, {"4th"}, {"7th"}, @@ -5483,7 +5483,7 @@ Select * from ( }, { Query: "select time_format(time_col, '%h%p') from datetime_table order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"03AM"}, {"03PM"}, {"04AM"}, @@ -5491,7 +5491,7 @@ Select * from ( }, { Query: "select from_unixtime(i) from mytable order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Unix(1, 0)}, {time.Unix(2, 0)}, {time.Unix(3, 0)}, @@ -5505,7 +5505,7 @@ Select * from ( }, { Query: "SELECT SUM(i) + 1, i FROM mytable GROUP BY i ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(2), int64(1)}, {float64(3), int64(2)}, {float64(4), int64(3)}, @@ -5513,7 +5513,7 @@ Select * from ( }, { Query: "SELECT SUM(i) as sum, i FROM mytable GROUP BY i ORDER BY sum ASC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(1), int64(1)}, {float64(2), int64(2)}, {float64(3), int64(3)}, @@ -5521,7 +5521,7 @@ Select * from ( }, { Query: "SELECT i, SUM(i) FROM mytable GROUP BY i ORDER BY sum(i) DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), float64(3)}, {int64(2), float64(2)}, {int64(1), float64(1)}, @@ -5529,7 +5529,7 @@ Select * from ( }, { Query: "SELECT i, SUM(i) as b FROM mytable GROUP BY i ORDER BY b DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), float64(3)}, {int64(2), float64(2)}, {int64(1), float64(1)}, @@ -5537,7 +5537,7 @@ Select * from ( }, { Query: "SELECT i, SUM(i) as `sum(i)` FROM mytable GROUP BY i ORDER BY sum(i) DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3), float64(3)}, {int64(2), float64(2)}, {int64(1), float64(1)}, @@ -5545,35 +5545,35 @@ Select * from ( }, { Query: "SELECT i FROM mytable UNION SELECT i+10 FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}, {int64(11)}, {int64(12)}, {int64(13)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}, {int64(11)}, {int64(12)}, {int64(13)}}, }, { Query: "SELECT i FROM mytable UNION DISTINCT SELECT i+10 FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}, {int64(11)}, {int64(12)}, {int64(13)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}, {int64(11)}, {int64(12)}, {int64(13)}}, }, { Query: "SELECT i FROM mytable UNION ALL SELECT i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}, {int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}, {int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable UNION SELECT i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable UNION DISTINCT SELECT i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable UNION ALL SELECT i FROM mytable UNION DISTINCT SELECT i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable UNION SELECT i FROM mytable UNION ALL SELECT i FROM mytable;", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}, {int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}, {int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: "SELECT i FROM mytable UNION SELECT s FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"3"}, @@ -5585,13 +5585,13 @@ Select * from ( { SkipPrepared: true, Query: "", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/*!40101 SET NAMES " + sql.Collation_Default.CharacterSet().String() + " */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {}, }, }, @@ -5599,29 +5599,29 @@ Select * from ( Query: "SET collation_connection = '" + sql.Collation_Default.String() + "';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {}, }, }, { Query: `SHOW DATABASES`, - Expected: []sql.Row{{"mydb"}, {"foo"}, {"information_schema"}, {"mysql"}}, + Expected: []sql.UntypedSqlRow{{"mydb"}, {"foo"}, {"information_schema"}, {"mysql"}}, }, { Query: `SHOW DATABASES LIKE 'information_schema'`, - Expected: []sql.Row{{"information_schema"}}, + Expected: []sql.UntypedSqlRow{{"information_schema"}}, }, { Query: "SHOW DATABASES where `Database` = 'information_schema'", - Expected: []sql.Row{{"information_schema"}}, + Expected: []sql.UntypedSqlRow{{"information_schema"}}, }, { Query: `SHOW SCHEMAS`, - Expected: []sql.Row{{"mydb"}, {"foo"}, {"information_schema"}, {"mysql"}}, + Expected: []sql.UntypedSqlRow{{"mydb"}, {"foo"}, {"information_schema"}, {"mysql"}}, }, { Query: `SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"information_schema", "utf8mb4", "utf8mb4_0900_bin"}, {"mydb", "utf8mb4", "utf8mb4_0900_bin"}, {"foo", "utf8mb4", "utf8mb4_0900_bin"}, @@ -5629,30 +5629,30 @@ Select * from ( }, { Query: `SELECT s FROM mytable WHERE s LIKE '%d row'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"second row"}, {"third row"}, }, }, { Query: `SELECT s FROM mytable WHERE s LIKE '%D ROW'`, - Expected: []sql.Row{}, // default collation of `utf8mb4_0900_bin` is case-sensitive + Expected: []sql.UntypedSqlRow{}, // default collation of `utf8mb4_0900_bin` is case-sensitive }, { Query: `SELECT SUBSTRING(s, -3, 3) AS s FROM mytable WHERE s LIKE '%d row' GROUP BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"row"}, }, }, { Query: `SELECT s FROM mytable WHERE s NOT LIKE '%d row'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, }, }, { Query: `SELECT * FROM foo.othertable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a", int32(4)}, {"b", int32(2)}, {"c", int32(0)}, @@ -5660,37 +5660,37 @@ Select * from ( }, { Query: `SELECT AVG(23.222000)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"23.2220000000"}, }, }, { Query: `SELECT AVG("23.222000")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {23.222}, }, }, { Query: `SELECT DATABASE()`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb"}, }, }, { Query: `SELECT USER()`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root@localhost"}, }, }, { Query: `SELECT CURRENT_USER()`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root@localhost"}, }, }, { Query: `SELECT CURRENT_USER`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root@localhost"}, }, ExpectedColumns: sql.Schema{ @@ -5702,7 +5702,7 @@ Select * from ( }, { Query: `SELECT CURRENT_user`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"root@localhost"}, }, ExpectedColumns: sql.Schema{ @@ -5717,20 +5717,20 @@ Select * from ( }, { Query: `SHOW VARIABLES LIKE 'gtid_mode'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"gtid_mode", "OFF"}, }, }, { // SHOW VARIABLES is case-insensitive Query: `SHOW VARIABLES LIKE 'gtID_mO%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"gtid_mode", "OFF"}, }, }, { Query: `SHOW VARIABLES LIKE 'gtid%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"gtid_executed", ""}, {"gtid_executed_compression_period", int64(0)}, {"gtid_mode", "OFF"}, @@ -5741,33 +5741,33 @@ Select * from ( }, { Query: `SHOW VARIABLES WHERE Variable_name = 'version' || variable_name = 'autocommit'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"autocommit", 1}, {"version", "8.0.11"}, }, }, { Query: `SHOW VARIABLES WHERE Variable_name > 'version' and variable_name like '%_%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"version_comment", "Dolt"}, {"version_compile_machine", ""}, {"version_compile_os", ""}, {"version_compile_zlib", ""}, {"wait_timeout", 28800}, {"windowing_use_high_precision", 1}, }, }, { Query: `SHOW VARIABLES WHERE "1" and variable_name = 'autocommit'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"autocommit", 1}, }, }, { Query: `SHOW VARIABLES WHERE "0" and variable_name = 'autocommit'`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SHOW VARIABLES WHERE "abc" and variable_name = 'autocommit'`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SHOW GLOBAL VARIABLES LIKE '%mode'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"block_encryption_mode", "aes-128-ecb"}, {"gtid_mode", "OFF"}, {"innodb_autoinc_lock_mode", int64(2)}, @@ -5781,93 +5781,93 @@ Select * from ( // show variables like ... is case-insensitive { Query: "SHOW VARIABLES LIKE 'VERSION'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"version", "8.0.11"}, }, }, { Query: `SELECT JSON_EXTRACT('"foo"', "$")`, - Expected: []sql.Row{{types.MustJSON(`"foo"`)}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON(`"foo"`)}}, }, { Query: `SELECT JSON_UNQUOTE('"foo"')`, - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Query: `SELECT JSON_UNQUOTE('[1, 2, 3]')`, - Expected: []sql.Row{{"[1, 2, 3]"}}, + Expected: []sql.UntypedSqlRow{{"[1, 2, 3]"}}, }, { Query: `SELECT JSON_UNQUOTE('"\\t\\u0032"')`, - Expected: []sql.Row{{"\t2"}}, + Expected: []sql.UntypedSqlRow{{"\t2"}}, }, { Query: `SELECT JSON_UNQUOTE('"\t\\u0032"')`, - Expected: []sql.Row{{"\t2"}}, + Expected: []sql.UntypedSqlRow{{"\t2"}}, }, { Query: `SELECT JSON_UNQUOTE(JSON_EXTRACT('{"xid":"hello"}', '$.xid')) = "hello"`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT JSON_QUOTE('"foo"')`, - Expected: []sql.Row{{`"\"foo\""`}}, + Expected: []sql.UntypedSqlRow{{`"\"foo\""`}}, }, { Query: `SELECT JSON_QUOTE('[1, 2, 3]')`, - Expected: []sql.Row{{`"[1, 2, 3]"`}}, + Expected: []sql.UntypedSqlRow{{`"[1, 2, 3]"`}}, }, { Query: `SELECT JSON_QUOTE('"\t\u0032"')`, - Expected: []sql.Row{{`"\"\tu0032\""`}}, + Expected: []sql.UntypedSqlRow{{`"\"\tu0032\""`}}, }, { Query: `SELECT JSON_QUOTE('"\t\\u0032"')`, - Expected: []sql.Row{{`"\"\t\\u0032\""`}}, + Expected: []sql.UntypedSqlRow{{`"\"\t\\u0032\""`}}, }, { Query: `SELECT JSON_EXTRACT('{"xid":"hello"}', '$.xid') = "hello"`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT JSON_EXTRACT('{"xid":"hello"}', '$.xid') = '"hello"'`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT JSON_UNQUOTE(JSON_EXTRACT('{"xid":null}', '$.xid'))`, - Expected: []sql.Row{{"null"}}, + Expected: []sql.UntypedSqlRow{{"null"}}, }, { Query: `select JSON_EXTRACT('{"id":234}', '$.id')-1;`, - Expected: []sql.Row{{float64(233)}}, + Expected: []sql.UntypedSqlRow{{float64(233)}}, }, { Query: `select JSON_EXTRACT('{"id":234}', '$.id') = 234;`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `select JSON_EXTRACT('{"id":"abc"}', '$.id')-1;`, - Expected: []sql.Row{{float64(-1)}}, + Expected: []sql.UntypedSqlRow{{float64(-1)}}, }, { Query: `select JSON_EXTRACT('{"id":{"a": "abc"}}', '$.id')-1;`, - Expected: []sql.Row{{float64(-1)}}, + Expected: []sql.UntypedSqlRow{{float64(-1)}}, }, { Query: `SELECT CONNECTION_ID()`, - Expected: []sql.Row{{uint32(1)}}, + Expected: []sql.UntypedSqlRow{{uint32(1)}}, }, { Query: `SHOW CREATE DATABASE mydb`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "mydb", "CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin */", }}, }, { Query: `SHOW CREATE TABLE two_pk`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "two_pk", "CREATE TABLE `two_pk` (\n" + " `pk1` tinyint NOT NULL,\n" + @@ -5883,7 +5883,7 @@ Select * from ( }, { Query: `SHOW CREATE TABLE myview`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "myview", "CREATE VIEW `myview` AS SELECT * FROM mytable", "utf8mb4", @@ -5892,7 +5892,7 @@ Select * from ( }, { Query: `SHOW CREATE VIEW myview`, - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "myview", "CREATE VIEW `myview` AS SELECT * FROM mytable", "utf8mb4", @@ -5901,14 +5901,14 @@ Select * from ( }, { Query: `describe myview`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "", nil, ""}, {"s", "varchar(20)", "NO", "", nil, ""}, }, }, { Query: `SELECT -1`, - Expected: []sql.Row{{int8(-1)}}, + Expected: []sql.UntypedSqlRow{{int8(-1)}}, }, { Query: `SHOW WARNINGS LIMIT 0`, @@ -5916,154 +5916,154 @@ Select * from ( }, { Query: `SELECT NULL`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `SELECT nullif('abc', NULL)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: `SELECT nullif(NULL, NULL)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `SELECT nullif(NULL, 123)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `SELECT nullif(123, 123)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `SELECT nullif(123, 321)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int8(123)}, }, }, { Query: `SELECT ifnull(123, NULL)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int8(123)}, }, }, { Query: `SELECT ifnull(NULL, NULL)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `SELECT ifnull(NULL, 123)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int8(123)}, }, }, { Query: `SELECT ifnull(123, 123)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int8(123)}, }, }, { Query: `SELECT ifnull(123, 321)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int8(123)}, }, }, { Query: `SELECT if(123 = 123, "a", "b")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a"}, }, }, { Query: `SELECT if(123 = 123, NULL, "b")`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, ExpectedColumns: []*sql.Column{ {Name: "if(123 = 123, NULL, \"b\")", Type: types.LongText}, }, }, { Query: `SELECT if(123 = 123, NULL, NULL = 1)`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, ExpectedColumns: []*sql.Column{ {Name: "if(123 = 123, NULL, NULL = 1)", Type: types.Int64}, // TODO: this should be getting coerced to bool }, }, { Query: `SELECT if(123 = 123, NULL, NULL)`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, ExpectedColumns: []*sql.Column{ {Name: "if(123 = 123, NULL, NULL)", Type: types.Null}, }, }, { Query: `SELECT if(123 > 123, "a", "b")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b"}, }, }, { Query: `SELECT if(1, 123, 456)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, { Query: `SELECT if(0, 123, 456)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {456}, }, }, { Query: `SELECT if(0, "abc", 456)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {456}, }, }, { Query: `SELECT if(1, "abc", 456)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: `SELECT 1 as foo, if((select foo), "a", "b")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a"}, }, }, { Query: `SELECT 0 as foo, if((select foo), "a", "b")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "b"}, }, }, { Query: `SELECT if(NULL, "a", "b")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b"}, }, }, { Query: `SELECT if("a", "a", "b")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"b"}, }, }, { Query: `SELECT i, if(s = "first row", "first", "not first") from mytable order by i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first"}, {2, "not first"}, {3, "not first"}, @@ -6095,79 +6095,79 @@ Select * from ( }, { Query: `SELECT 2/4`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0.5000"}, }, }, { Query: `SELECT 15728640/1024/1024`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"15.00000000"}, }, }, { Query: `SELECT 15728640/1024/1030`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"14.91262136"}, }, }, { Query: `SELECT 2/4/5/5`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0.020000000000"}, }, }, { Query: `SELECT 4/3/1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1.33333333"}, }, }, { Query: `select 5/4/3/(2/1+3/1)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0.083333333333"}, }, }, { Query: `select (2/1+3/1)/5/4/3`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0.0833333333333333"}, }, }, { Query: `select cast(X'20' as decimal)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"32"}, }, }, { Query: `SELECT FLOOR(15728640/1024/1030)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"14"}, }, }, { Query: `SELECT ROUND(15728640/1024/1030)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"15"}, }, }, { Query: `SELECT ROUND(15.00, 1)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"15.0"}, }, }, { Query: `SELECT round(15, 1)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int8(15)}, }, }, { Query: `SELECT CASE i WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'other' END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"one"}, {"two"}, {"other"}, @@ -6175,7 +6175,7 @@ Select * from ( }, { Query: `SELECT CASE WHEN i > 2 THEN 'more than two' WHEN i < 2 THEN 'less than two' ELSE 'two' END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"less than two"}, {"two"}, {"more than two"}, @@ -6183,7 +6183,7 @@ Select * from ( }, { Query: `SELECT CASE WHEN i > 2 THEN i WHEN i < 2 THEN i ELSE 'two' END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"two"}, {"3"}, @@ -6191,7 +6191,7 @@ Select * from ( }, { Query: `SELECT CASE WHEN i > 2 THEN 'more than two' WHEN i < 2 THEN 'less than two' ELSE 2 END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"less than two"}, {"2"}, {"more than two"}, @@ -6199,7 +6199,7 @@ Select * from ( }, { Query: `SELECT CASE i WHEN 1 THEN 'one' WHEN 2 THEN 'two' END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"one"}, {"two"}, {nil}, @@ -6207,7 +6207,7 @@ Select * from ( }, { Query: `SELECT CASE i WHEN 1 THEN JSON_OBJECT("a", 1) WHEN 2 THEN JSON_OBJECT("b", 2) END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": 1}`)}, {types.MustJSON(`{"b": 2}`)}, {nil}, @@ -6215,7 +6215,7 @@ Select * from ( }, { Query: `SELECT CASE i WHEN 1 THEN JSON_OBJECT("a", 1) ELSE JSON_OBJECT("b", 2) END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": 1}`)}, {types.MustJSON(`{"b": 2}`)}, {types.MustJSON(`{"b": 2}`)}, @@ -6223,7 +6223,7 @@ Select * from ( }, { Query: `SELECT CASE i WHEN 1 THEN JSON_OBJECT("a", 1) ELSE JSON_OBJECT("b", 2) END FROM mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"a": 1}`)}, {types.MustJSON(`{"b": 2}`)}, {types.MustJSON(`{"b": 2}`)}, @@ -6232,7 +6232,7 @@ Select * from ( { // NOTE: utf8_general_ci is collation of utf8mb3, which was deprecated and now removed in MySQL Query: "SHOW COLLATION WHERE `Collation` IN ('binary', 'utf8_general_ci', 'utf8mb4_0900_ai_ci')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { sql.Collation_binary.String(), "binary", @@ -6268,7 +6268,7 @@ Select * from ( }, { Query: `SHOW COLLATION LIKE 'bin%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { sql.Collation_binary.String(), "binary", @@ -6286,7 +6286,7 @@ Select * from ( }, { Query: "SHOW COLLATION WHERE `Default` = 'Yes' AND `Collation` LIKE 'utf8mb4%'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { sql.Collation_utf8mb4_0900_ai_ci.String(), "utf8mb4", @@ -6304,118 +6304,118 @@ Select * from ( }, { Query: "SELECT substring(s, 1, 1) FROM mytable ORDER BY substring(s, 1, 1)", - Expected: []sql.Row{{"f"}, {"s"}, {"t"}}, + Expected: []sql.UntypedSqlRow{{"f"}, {"s"}, {"t"}}, }, { Query: "SELECT substring(s, 1, 1), count(*) FROM mytable GROUP BY substring(s, 1, 1)", - Expected: []sql.Row{{"f", int64(1)}, {"s", int64(1)}, {"t", int64(1)}}, + Expected: []sql.UntypedSqlRow{{"f", int64(1)}, {"s", int64(1)}, {"t", int64(1)}}, }, { Query: "SELECT substring(s, 1, 1) as x, count(*) FROM mytable GROUP BY X", - Expected: []sql.Row{{"f", int64(1)}, {"s", int64(1)}, {"t", int64(1)}}, + Expected: []sql.UntypedSqlRow{{"f", int64(1)}, {"s", int64(1)}, {"t", int64(1)}}, }, { Query: "SELECT left(s, 1) as l FROM mytable ORDER BY l", - Expected: []sql.Row{{"f"}, {"s"}, {"t"}}, + Expected: []sql.UntypedSqlRow{{"f"}, {"s"}, {"t"}}, }, { Query: "SELECT left(s, 2) as l FROM mytable ORDER BY l", - Expected: []sql.Row{{"fi"}, {"se"}, {"th"}}, + Expected: []sql.UntypedSqlRow{{"fi"}, {"se"}, {"th"}}, }, { Query: "SELECT left(s, 0) as l FROM mytable ORDER BY l", - Expected: []sql.Row{{""}, {""}, {""}}, + Expected: []sql.UntypedSqlRow{{""}, {""}, {""}}, }, { Query: "SELECT left(s, NULL) as l FROM mytable ORDER BY l", - Expected: []sql.Row{{nil}, {nil}, {nil}}, + Expected: []sql.UntypedSqlRow{{nil}, {nil}, {nil}}, }, { Query: "SELECT left(s, 100) as l FROM mytable ORDER BY l", - Expected: []sql.Row{{"first row"}, {"second row"}, {"third row"}}, + Expected: []sql.UntypedSqlRow{{"first row"}, {"second row"}, {"third row"}}, }, { Query: "SELECT instr(s, 'row') as l FROM mytable ORDER BY i", - Expected: []sql.Row{{int64(7)}, {int64(8)}, {int64(7)}}, + Expected: []sql.UntypedSqlRow{{int64(7)}, {int64(8)}, {int64(7)}}, }, { Query: "SELECT instr(s, 'first') as l FROM mytable ORDER BY i", - Expected: []sql.Row{{int64(1)}, {int64(0)}, {int64(0)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(0)}, {int64(0)}}, }, { Query: "SELECT instr(s, 'o') as l FROM mytable ORDER BY i", - Expected: []sql.Row{{int64(8)}, {int64(4)}, {int64(8)}}, + Expected: []sql.UntypedSqlRow{{int64(8)}, {int64(4)}, {int64(8)}}, }, { Query: "SELECT instr(s, NULL) as l FROM mytable ORDER BY l", - Expected: []sql.Row{{nil}, {nil}, {nil}}, + Expected: []sql.UntypedSqlRow{{nil}, {nil}, {nil}}, }, { Query: "SELECT SLEEP(0.5)", - Expected: []sql.Row{{int(0)}}, + Expected: []sql.UntypedSqlRow{{int(0)}}, }, { Query: "SELECT TO_BASE64('foo')", - Expected: []sql.Row{{string("Zm9v")}}, + Expected: []sql.UntypedSqlRow{{string("Zm9v")}}, }, { Query: "SELECT FROM_BASE64('YmFy')", - Expected: []sql.Row{{[]byte("bar")}}, + Expected: []sql.UntypedSqlRow{{[]byte("bar")}}, }, { Query: "SELECT DATE_ADD('2018-05-02', INTERVAL 1 day)", - Expected: []sql.Row{{"2018-05-03"}}, + Expected: []sql.UntypedSqlRow{{"2018-05-03"}}, }, { Query: "SELECT DATE_ADD(DATE('2018-05-02'), INTERVAL 1 day)", - Expected: []sql.Row{{time.Date(2018, time.May, 3, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2018, time.May, 3, 0, 0, 0, 0, time.UTC)}}, }, { Query: "select date_add(time('12:13:14'), interval 1 minute);", - Expected: []sql.Row{{types.Timespan(44054000000)}}, + Expected: []sql.UntypedSqlRow{{types.Timespan(44054000000)}}, }, { Query: "SELECT DATE_SUB('2018-05-02', INTERVAL 1 DAY)", - Expected: []sql.Row{{"2018-05-01"}}, + Expected: []sql.UntypedSqlRow{{"2018-05-01"}}, }, { Query: "SELECT DATE_SUB(DATE('2018-05-02'), INTERVAL 1 DAY)", - Expected: []sql.Row{{time.Date(2018, time.May, 1, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2018, time.May, 1, 0, 0, 0, 0, time.UTC)}}, }, { Query: "select date_sub(time('12:13:14'), interval 1 minute);", - Expected: []sql.Row{{types.Timespan(43934000000)}}, + Expected: []sql.UntypedSqlRow{{types.Timespan(43934000000)}}, }, { Query: "SELECT '2018-05-02' + INTERVAL 1 DAY", - Expected: []sql.Row{{time.Date(2018, time.May, 3, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2018, time.May, 3, 0, 0, 0, 0, time.UTC)}}, }, { Query: "SELECT '2018-05-02' - INTERVAL 1 DAY", - Expected: []sql.Row{{time.Date(2018, time.May, 1, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2018, time.May, 1, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT i AS i FROM mytable ORDER BY i`, - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: `SELECT i AS i FROM mytable GROUP BY i, s ORDER BY 1`, - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: `SELECT i AS x FROM mytable GROUP BY i, s ORDER BY x`, - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: `SELECT i as x, row_number() over (order by i DESC) FROM mytable ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}}, }, { Query: `SELECT i as i, row_number() over (order by i DESC) FROM mytable ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {2, 2}, {3, 1}}, @@ -6434,7 +6434,7 @@ Select * from ( ) AS q ORDER BY foo DESC, i ASC `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), int64(1)}, {int64(2), int64(1)}, {int64(3), int64(1)}, @@ -6442,23 +6442,23 @@ Select * from ( }, { Query: "SELECT n, COUNT(n) FROM bigtable GROUP BY n HAVING COUNT(n) > 2", - Expected: []sql.Row{{int64(1), int64(3)}, {int64(2), int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1), int64(3)}, {int64(2), int64(3)}}, }, { Query: "SELECT n, COUNT(n) as cnt FROM bigtable GROUP BY n HAVING cnt > 2", - Expected: []sql.Row{{int64(1), int64(3)}, {int64(2), int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1), int64(3)}, {int64(2), int64(3)}}, }, { Query: "SELECT n, MAX(n) FROM bigtable GROUP BY n HAVING COUNT(n) > 2", - Expected: []sql.Row{{int64(1), int64(1)}, {int64(2), int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(2), int64(2)}}, }, { Query: "SELECT substring(mytable.s, 1, 5) AS s FROM mytable INNER JOIN othertable ON (substring(mytable.s, 1, 5) = SUBSTRING(othertable.s2, 1, 5)) GROUP BY 1 HAVING s = \"secon\"", - Expected: []sql.Row{{"secon"}}, + Expected: []sql.UntypedSqlRow{{"secon"}}, }, { Query: "SELECT s, i FROM mytable GROUP BY i ORDER BY SUBSTRING(s, 1, 1) DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {string("third row"), int64(3)}, {string("second row"), int64(2)}, {string("first row"), int64(1)}, @@ -6466,7 +6466,7 @@ Select * from ( }, { Query: "SELECT s, i FROM mytable GROUP BY i HAVING count(*) > 0 ORDER BY SUBSTRING(s, 1, 1) DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {string("third row"), int64(3)}, {string("second row"), int64(2)}, {string("first row"), int64(1)}, @@ -6474,120 +6474,120 @@ Select * from ( }, { Query: "SELECT CONVERT('9999-12-31 23:59:59', DATETIME)", - Expected: []sql.Row{{time.Date(9999, time.December, 31, 23, 59, 59, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(9999, time.December, 31, 23, 59, 59, 0, time.UTC)}}, }, { Query: "SELECT DATETIME('9999-12-31 23:59:59')", - Expected: []sql.Row{{time.Date(9999, time.December, 31, 23, 59, 59, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(9999, time.December, 31, 23, 59, 59, 0, time.UTC)}}, }, { Query: "SELECT TIMESTAMP('2020-12-31 23:59:59')", - Expected: []sql.Row{{time.Date(2020, time.December, 31, 23, 59, 59, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2020, time.December, 31, 23, 59, 59, 0, time.UTC)}}, }, { Query: "SELECT CONVERT('10000-12-31 23:59:59', DATETIME)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT '9999-12-31 23:59:59' + INTERVAL 1 DAY", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT DATE_ADD('9999-12-31 23:59:59', INTERVAL 1 DAY)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT EXTRACT(DAY FROM '9999-12-31 23:59:59')", - Expected: []sql.Row{{31}}, + Expected: []sql.UntypedSqlRow{{31}}, }, { Query: `SELECT t.date_col FROM (SELECT CONVERT('2019-06-06 00:00:00', DATETIME) AS date_col) t WHERE t.date_col > '0000-01-01 00:00'`, - Expected: []sql.Row{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT t.date_col FROM (SELECT CONVERT('2019-06-06 00:00:00', DATETIME) AS date_col) t WHERE t.date_col > '0000-01-01 00:00:00'`, - Expected: []sql.Row{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT t.date_col FROM (SELECT CONVERT('2019-06-06 00:00:00', DATETIME) as date_col) t GROUP BY t.date_col`, - Expected: []sql.Row{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT t.date_col as date_col FROM (SELECT CONVERT('2019-06-06 00:00:00', DATETIME) as date_col) t GROUP BY t.date_col`, - Expected: []sql.Row{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT t.date_col FROM (SELECT CONVERT('2019-06-06 00:00:00', DATETIME) as date_col) t GROUP BY date_col`, - Expected: []sql.Row{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT t.date_col as date_col FROM (SELECT CONVERT('2019-06-06 00:00:00', DATETIME) as date_col) t GROUP BY date_col`, - Expected: []sql.Row{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(2019, time.June, 6, 0, 0, 0, 0, time.UTC)}}, }, { Query: `SELECT i AS foo FROM mytable ORDER BY mytable.i`, - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: `SELECT JSON_EXTRACT('[1, 2, 3]', '$.[0]')`, - Expected: []sql.Row{{types.MustJSON(`1`)}}, + Expected: []sql.UntypedSqlRow{{types.MustJSON(`1`)}}, }, // TODO(andy) //{ // Query: `SELECT JSON_LENGTH(JSON_EXTRACT('[1, 2, 3]', '$'))`, - // Expected: []sql.Row{{int32(3)}}, + // Expected: []sql.UntypedSqlRow{{int32(3)}}, //}, //{ // Query: `SELECT JSON_LENGTH(JSON_EXTRACT('[{"i":0}, {"i":1, "y":"yyy"}, {"i":2, "x":"xxx"}]', '$.i'))`, - // Expected: []sql.Row{{int32(3)}}, + // Expected: []sql.UntypedSqlRow{{int32(3)}}, //}, { Query: `SELECT GREATEST(@@back_log,@@auto_increment_offset)`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT GREATEST(1, 2, "3", 4)`, - Expected: []sql.Row{{float64(4)}}, + Expected: []sql.UntypedSqlRow{{float64(4)}}, }, { Query: `SELECT GREATEST(1, 2, "9", "foo999")`, - Expected: []sql.Row{{float64(9)}}, + Expected: []sql.UntypedSqlRow{{float64(9)}}, }, { Query: `SELECT GREATEST("aaa", "bbb", "ccc")`, - Expected: []sql.Row{{"ccc"}}, + Expected: []sql.UntypedSqlRow{{"ccc"}}, }, { Query: `SELECT GREATEST(i, s) FROM mytable`, - Expected: []sql.Row{{float64(1)}, {float64(2)}, {float64(3)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}, {float64(2)}, {float64(3)}}, }, { Query: `SELECT GREATEST(1, 2, 3, 4)`, - Expected: []sql.Row{{int64(4)}}, + Expected: []sql.UntypedSqlRow{{int64(4)}}, }, { Query: "select abs(-i) from mytable order by 1", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select ceil(i + 0.5) from mytable order by 1", - Expected: []sql.Row{{"2"}, {"3"}, {"4"}}, + Expected: []sql.UntypedSqlRow{{"2"}, {"3"}, {"4"}}, }, { Query: "select floor(i + 0.5) from mytable order by 1", - Expected: []sql.Row{{"1"}, {"2"}, {"3"}}, + Expected: []sql.UntypedSqlRow{{"1"}, {"2"}, {"3"}}, }, { Query: "select round(i + 0.55, 1) from mytable order by 1", - Expected: []sql.Row{{"1.6"}, {"2.6"}, {"3.6"}}, + Expected: []sql.UntypedSqlRow{{"1.6"}, {"2.6"}, {"3.6"}}, }, { Query: "select date_format(da, '%s') from typestable order by 1", - Expected: []sql.Row{{"00"}}, + Expected: []sql.UntypedSqlRow{{"00"}}, }, { Query: "select md5(i) from mytable order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c4ca4238a0b923820dcc509a6f75849b"}, {"c81e728d9d4c2f636f067f89cc14862c"}, {"eccbc87e4b5ce2fe28308fd9f2a7baf3"}, @@ -6595,7 +6595,7 @@ Select * from ( }, { Query: "select sha1(i) from mytable order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"356a192b7913b04c54574d18c28d46e6395428ab"}, {"77de68daecd823babbb58edb1c8e14d7106e83bb"}, {"da4b9237bacccdf19c0760cab7aec4a8359010b0"}, @@ -6603,7 +6603,7 @@ Select * from ( }, { Query: "select sha2(i, 256) from mytable order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce"}, {"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}, {"d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35"}, @@ -6611,47 +6611,47 @@ Select * from ( }, { Query: "select length(s) from mytable order by i", - Expected: []sql.Row{{9}, {10}, {9}}, + Expected: []sql.UntypedSqlRow{{9}, {10}, {9}}, }, { Query: "select octet_length(s) from mytable order by i", - Expected: []sql.Row{{9}, {10}, {9}}, + Expected: []sql.UntypedSqlRow{{9}, {10}, {9}}, }, { Query: "select char_length(s) from mytable order by i", - Expected: []sql.Row{{9}, {10}, {9}}, + Expected: []sql.UntypedSqlRow{{9}, {10}, {9}}, }, { Query: `select locate("o", s) from mytable order by i`, - Expected: []sql.Row{{8}, {4}, {8}}, + Expected: []sql.UntypedSqlRow{{8}, {4}, {8}}, }, { Query: `select locate("o", s, 5) from mytable order by i`, - Expected: []sql.Row{{8}, {9}, {8}}, + Expected: []sql.UntypedSqlRow{{8}, {9}, {8}}, }, { Query: `select locate(upper("roW"), upper(s), power(10, 0)) from mytable order by i`, - Expected: []sql.Row{{7}, {8}, {7}}, + Expected: []sql.UntypedSqlRow{{7}, {8}, {7}}, }, { Query: "select log2(i) from mytable order by i", - Expected: []sql.Row{{0.0}, {1.0}, {1.5849625007211563}}, + Expected: []sql.UntypedSqlRow{{0.0}, {1.0}, {1.5849625007211563}}, }, { Query: "select ln(i) from mytable order by i", - Expected: []sql.Row{{0.0}, {0.6931471805599453}, {1.0986122886681096}}, + Expected: []sql.UntypedSqlRow{{0.0}, {0.6931471805599453}, {1.0986122886681096}}, }, { Query: "select log10(i) from mytable order by i", - Expected: []sql.Row{{0.0}, {0.3010299956639812}, {0.4771212547196624}}, + Expected: []sql.UntypedSqlRow{{0.0}, {0.3010299956639812}, {0.4771212547196624}}, }, { Query: "select log(3, i) from mytable order by i", - Expected: []sql.Row{{0.0}, {0.6309297535714575}, {1.0}}, + Expected: []sql.UntypedSqlRow{{0.0}, {0.6309297535714575}, {1.0}}, }, { Query: "select lower(s) from mytable order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row"}, {"second row"}, {"third row"}, @@ -6659,7 +6659,7 @@ Select * from ( }, { Query: "select upper(s) from mytable order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"FIRST ROW"}, {"SECOND ROW"}, {"THIRD ROW"}, @@ -6667,87 +6667,87 @@ Select * from ( }, { Query: "select reverse(s) from mytable order by i", - Expected: []sql.Row{{"wor tsrif"}, {"wor dnoces"}, {"wor driht"}}, + Expected: []sql.UntypedSqlRow{{"wor tsrif"}, {"wor dnoces"}, {"wor driht"}}, }, { Query: "select repeat(s, 2) from mytable order by i", - Expected: []sql.Row{{"first rowfirst row"}, {"second rowsecond row"}, {"third rowthird row"}}, + Expected: []sql.UntypedSqlRow{{"first rowfirst row"}, {"second rowsecond row"}, {"third rowthird row"}}, }, { Query: "select replace(s, 'row', '') from mytable order by i", - Expected: []sql.Row{{"first "}, {"second "}, {"third "}}, + Expected: []sql.UntypedSqlRow{{"first "}, {"second "}, {"third "}}, }, { Query: "select rpad(s, 13, ' ') from mytable order by i", - Expected: []sql.Row{{"first row "}, {"second row "}, {"third row "}}, + Expected: []sql.UntypedSqlRow{{"first row "}, {"second row "}, {"third row "}}, }, { Query: "select lpad(s, 13, ' ') from mytable order by i", - Expected: []sql.Row{{" first row"}, {" second row"}, {" third row"}}, + Expected: []sql.UntypedSqlRow{{" first row"}, {" second row"}, {" third row"}}, }, { Query: "select sqrt(i) from mytable order by i", - Expected: []sql.Row{{1.0}, {1.4142135623730951}, {1.7320508075688772}}, + Expected: []sql.UntypedSqlRow{{1.0}, {1.4142135623730951}, {1.7320508075688772}}, }, { Query: "select pow(2, i) from mytable order by i", - Expected: []sql.Row{{2.0}, {4.0}, {8.0}}, + Expected: []sql.UntypedSqlRow{{2.0}, {4.0}, {8.0}}, }, { Query: "select ltrim(concat(' ', concat(s, ' '))) from mytable order by i", - Expected: []sql.Row{{"first row "}, {"second row "}, {"third row "}}, + Expected: []sql.UntypedSqlRow{{"first row "}, {"second row "}, {"third row "}}, }, { Query: "select rtrim(concat(' ', concat(s, ' '))) from mytable order by i", - Expected: []sql.Row{{" first row"}, {" second row"}, {" third row"}}, + Expected: []sql.UntypedSqlRow{{" first row"}, {" second row"}, {" third row"}}, }, { Query: "select trim(concat(' ', concat(s, ' '))) from mytable order by i", - Expected: []sql.Row{{"first row"}, {"second row"}, {"third row"}}, + Expected: []sql.UntypedSqlRow{{"first row"}, {"second row"}, {"third row"}}, }, { Query: `SELECT GREATEST(CAST("1920-02-03 07:41:11" AS DATETIME), CAST("1980-06-22 14:32:56" AS DATETIME))`, - Expected: []sql.Row{{time.Date(1980, 6, 22, 14, 32, 56, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(1980, 6, 22, 14, 32, 56, 0, time.UTC)}}, }, { Query: `SELECT LEAST(1, 2, 3, 4)`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: `SELECT LEAST(1, 2, "3", 4)`, - Expected: []sql.Row{{float64(1)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}}, }, { Query: `SELECT LEAST(1, 2, "9", "foo999")`, - Expected: []sql.Row{{float64(1)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}}, }, { Query: `SELECT LEAST("aaa", "bbb", "ccc")`, - Expected: []sql.Row{{"aaa"}}, + Expected: []sql.UntypedSqlRow{{"aaa"}}, }, { Query: `SELECT LEAST(i, s) FROM mytable`, - Expected: []sql.Row{{float64(1)}, {float64(2)}, {float64(3)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}, {float64(2)}, {float64(3)}}, }, { Query: `SELECT LEAST(CAST("1920-02-03 07:41:11" AS DATETIME), CAST("1980-06-22 14:32:56" AS DATETIME))`, - Expected: []sql.Row{{time.Date(1920, 2, 3, 7, 41, 11, 0, time.UTC)}}, + Expected: []sql.UntypedSqlRow{{time.Date(1920, 2, 3, 7, 41, 11, 0, time.UTC)}}, }, { Query: `SELECT LEAST(@@back_log,@@auto_increment_offset)`, - Expected: []sql.Row{{-1}}, + Expected: []sql.UntypedSqlRow{{-1}}, }, { Query: `SELECT CHAR_LENGTH('áé'), LENGTH('àè')`, - Expected: []sql.Row{{int32(2), int32(4)}}, + Expected: []sql.UntypedSqlRow{{int32(2), int32(4)}}, }, { Query: "SELECT i, COUNT(i) AS `COUNT(i)` FROM (SELECT i FROM mytable) t GROUP BY i ORDER BY i, `COUNT(i)` DESC", - Expected: []sql.Row{{int64(1), int64(1)}, {int64(2), int64(1)}, {int64(3), int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1), int64(1)}, {int64(2), int64(1)}, {int64(3), int64(1)}}, }, { Query: "SELECT i FROM mytable WHERE NOT s ORDER BY 1 DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, {int64(2)}, {int64(1)}, @@ -6755,7 +6755,7 @@ Select * from ( }, { Query: "SELECT i FROM mytable WHERE NOT(NOT i) ORDER BY 1 DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, {int64(2)}, {int64(1)}, @@ -6763,40 +6763,40 @@ Select * from ( }, { Query: `SELECT NOW() - NOW()`, - Expected: []sql.Row{{int64(0)}}, + Expected: []sql.UntypedSqlRow{{int64(0)}}, }, { Query: `SELECT NOW() / NOW()`, - Expected: []sql.Row{{"1.0000"}}, + Expected: []sql.UntypedSqlRow{{"1.0000"}}, }, { Query: `SELECT NOW() div NOW()`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // TODO: Neither MySQL or MariaDB have a function called DATETIME; remove this function. Query: `SELECT DATETIME(NOW()) - NOW()`, - Expected: []sql.Row{{int64(0)}}, + Expected: []sql.UntypedSqlRow{{int64(0)}}, }, { Query: `SELECT TIMESTAMP(NOW()) - NOW()`, - Expected: []sql.Row{{int64(0)}}, + Expected: []sql.UntypedSqlRow{{int64(0)}}, }, { Query: `SELECT STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') - (STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') - INTERVAL 1 SECOND)`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: `SELECT SUBSTR(SUBSTRING('0123456789ABCDEF', 1, 10), -4)`, - Expected: []sql.Row{{"6789"}}, + Expected: []sql.UntypedSqlRow{{"6789"}}, }, { Query: `SELECT CASE i WHEN 1 THEN i ELSE NULL END FROM mytable`, - Expected: []sql.Row{{int64(1)}, {nil}, {nil}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {nil}, {nil}}, }, { Query: `SELECT (NULL+1)`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT * FROM mytable WHERE NULL AND i = 3`, @@ -6804,19 +6804,19 @@ Select * from ( }, { Query: `SELECT 1 FROM mytable GROUP BY i HAVING i > 1`, - Expected: []sql.Row{{int8(1)}, {int8(1)}}, + Expected: []sql.UntypedSqlRow{{int8(1)}, {int8(1)}}, }, { Query: `SELECT avg(i) FROM mytable GROUP BY i HAVING avg(i) > 1`, - Expected: []sql.Row{{float64(2)}, {float64(3)}}, + Expected: []sql.UntypedSqlRow{{float64(2)}, {float64(3)}}, }, { Query: "SELECT avg(i) as `avg(i)` FROM mytable GROUP BY i HAVING avg(i) > 1", - Expected: []sql.Row{{float64(2)}, {float64(3)}}, + Expected: []sql.UntypedSqlRow{{float64(2)}, {float64(3)}}, }, { Query: "SELECT avg(i) as `AVG(i)` FROM mytable GROUP BY i HAVING AVG(i) > 1", - Expected: []sql.Row{{float64(2)}, {float64(3)}}, + Expected: []sql.UntypedSqlRow{{float64(2)}, {float64(3)}}, }, { Query: `SELECT s AS s, COUNT(*) AS count, AVG(i) AS ` + "`AVG(i)`" + ` @@ -6827,7 +6827,7 @@ Select * from ( HAVING ((AVG(i) > 0)) ORDER BY count DESC, s ASC LIMIT 10000`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"first row", int64(1), float64(1)}, {"second row", int64(1), float64(2)}, {"third row", int64(1), float64(3)}, @@ -6835,39 +6835,39 @@ Select * from ( }, { Query: `SELECT FIRST(i) FROM (SELECT i FROM mytable ORDER BY i) t`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: `SELECT LAST(i) FROM (SELECT i FROM mytable ORDER BY i) t`, - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: `SELECT COUNT(DISTINCT t.i) FROM tabletest t, mytable t2`, - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: `SELECT COUNT(DISTINCT t.i, t.s) FROM tabletest t, mytable t2`, - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: `SELECT COUNT(DISTINCT gender) FROM people`, - Expected: []sql.Row{{int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(3)}}, }, { Query: `SELECT COUNT(DISTINCT height_inches, gender) FROM people`, - Expected: []sql.Row{{int64(5)}}, + Expected: []sql.UntypedSqlRow{{int64(5)}}, }, { Query: `SELECT COUNT(DISTINCT height_inches, gender) FROM people where gender = 0`, - Expected: []sql.Row{{int64(2)}}, + Expected: []sql.UntypedSqlRow{{int64(2)}}, }, { Query: `SELECT COUNT(DISTINCT height_inches - 100 < 0, gender < 0) FROM people`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: `SELECT CASE WHEN NULL THEN "yes" ELSE "no" END AS test`, - Expected: []sql.Row{{"no"}}, + Expected: []sql.UntypedSqlRow{{"no"}}, }, { Query: `SELECT @@ -6888,15 +6888,15 @@ Select * from ( AND table_name = 'mytable' HAVING table_type IN ('TABLE', 'VIEW') ORDER BY table_type, table_schema, table_name`, - Expected: []sql.Row{{"mydb", "mytable", "TABLE"}}, + Expected: []sql.UntypedSqlRow{{"mydb", "mytable", "TABLE"}}, }, { Query: `SELECT i FROM mytable WHERE i = (SELECT 1)`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: `SELECT i FROM mytable WHERE i IN (SELECT i FROM mytable) ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, {int64(3)}, @@ -6904,20 +6904,20 @@ Select * from ( }, { Query: `SELECT i FROM mytable WHERE i IN (SELECT i FROM mytable ORDER BY i ASC LIMIT 2) ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, }, }, { Query: `SELECT i FROM mytable WHERE i NOT IN (SELECT i FROM mytable ORDER BY i ASC LIMIT 2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(3)}, }, }, { Query: `SELECT i FROM mytable WHERE i NOT IN (SELECT i FROM mytable ORDER BY i ASC LIMIT 1) ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {3}, }, @@ -6927,7 +6927,7 @@ Select * from ( WHERE (SELECT i FROM mytable where i = mt.i and i > 2) IS NOT NULL AND (SELECT i2 FROM othertable where i2 = i) IS NOT NULL ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, @@ -6936,7 +6936,7 @@ Select * from ( WHERE (SELECT i FROM mytable where i = mt.i and i > 1) IS NOT NULL AND (SELECT i2 FROM othertable where i2 = i and i < 3) IS NOT NULL ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -6945,13 +6945,13 @@ Select * from ( WHERE (SELECT i FROM mytable where i = mt.i) IS NOT NULL AND (SELECT i2 FROM othertable where i2 = i) IS NOT NULL ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, { Query: `SELECT pk,pk2, (SELECT pk from one_pk where pk = 1 limit 1) FROM one_pk t1, two_pk t2 WHERE pk=1 AND pk2=1 ORDER BY 1,2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1}, {1, 1, 1}, }, @@ -6960,7 +6960,7 @@ Select * from ( Query: `SELECT i FROM mytable WHERE (SELECT i2 FROM othertable where i2 = i) IS NOT NULL ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, @@ -6968,7 +6968,7 @@ Select * from ( Query: `SELECT i FROM mytable mt WHERE (SELECT i2 FROM othertable ot where ot.i2 = mt.i) IS NOT NULL ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, @@ -6976,13 +6976,13 @@ Select * from ( Query: `SELECT i FROM mytable mt WHERE (SELECT row_number() over (order by ot.i2 desc) FROM othertable ot where ot.i2 = mt.i) = 2 ORDER BY i`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT i FROM mytable mt WHERE (SELECT row_number() over (order by ot.i2 desc) FROM othertable ot where ot.i2 = mt.i) = 1 ORDER BY i`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -6990,19 +6990,19 @@ Select * from ( }, { Query: `SELECT sum(i) as isum, s FROM mytable GROUP BY i ORDER BY isum ASC LIMIT 0, 200`, - Expected: []sql.Row{{1.0, "first row"}, {2.0, "second row"}, {3.0, "third row"}}, + Expected: []sql.UntypedSqlRow{{1.0, "first row"}, {2.0, "second row"}, {3.0, "third row"}}, }, { Query: `SELECT (SELECT i FROM mytable ORDER BY i ASC LIMIT 1) AS x`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { Query: `SELECT (SELECT s FROM mytable ORDER BY i ASC LIMIT 1) AS x`, - Expected: []sql.Row{{"first row"}}, + Expected: []sql.UntypedSqlRow{{"first row"}}, }, { Query: `SELECT pk, (SELECT concat(pk, pk) FROM one_pk WHERE pk < opk.pk ORDER BY 1 DESC LIMIT 1) as strpk FROM one_pk opk having strpk > "0" ORDER BY 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "00"}, {2, "11"}, {3, "22"}, @@ -7010,7 +7010,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT c3 FROM one_pk WHERE pk < opk.pk ORDER BY 1 DESC LIMIT 1) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 2}, {2, 12}, @@ -7019,7 +7019,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT c5 FROM one_pk WHERE c5 < opk.c5 ORDER BY 1 DESC LIMIT 1) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 4}, {2, 14}, @@ -7028,7 +7028,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT pk FROM one_pk WHERE c1 < opk.c1 ORDER BY 1 DESC LIMIT 1) FROM one_pk opk ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7037,7 +7037,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT c3 FROM one_pk WHERE c4 < opk.c2 ORDER BY 1 DESC LIMIT 1) FROM one_pk opk ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 2}, {2, 12}, @@ -7049,7 +7049,7 @@ Select * from ( (SELECT c3 FROM one_pk WHERE c4 < opk.c2 ORDER BY 1 DESC LIMIT 1), (SELECT c5 + 1 FROM one_pk WHERE c5 < opk.c5 ORDER BY 1 DESC LIMIT 1) FROM one_pk opk ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, nil}, {1, 2, 5}, {2, 12, 15}, @@ -7061,7 +7061,7 @@ Select * from ( (SELECT max(pk) FROM one_pk WHERE pk < opk.pk), (SELECT min(pk) FROM one_pk WHERE pk > opk.pk) FROM one_pk opk ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 1}, {1, 0, 2}, {2, 1, 3}, @@ -7075,7 +7075,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT min(pk) FROM one_pk WHERE pk > opk.pk) IS NOT NULL ORDER BY max;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 1}, {1, 0, 2}, {2, 1, 3}, @@ -7088,7 +7088,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk >= opk.pk) > 0 ORDER BY min;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2, nil}, {0, nil, 1}, {1, 0, 2}, @@ -7102,7 +7102,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk > opk.pk) > 0 ORDER BY min;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 1}, {1, 0, 2}, {2, 1, 3}, @@ -7115,7 +7115,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk > opk.pk) > 0 ORDER BY max;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil, 1}, {1, 0, 2}, {2, 1, 3}, @@ -7128,7 +7128,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) IS NOT NULL ORDER BY min;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2, nil}, {1, 0, 2}, {2, 1, 3}, @@ -7139,7 +7139,7 @@ Select * from ( (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS max, (SELECT min(pk) FROM one_pk WHERE pk > opk.pk) AS min FROM one_pk opk ORDER BY min;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2, nil}, {0, nil, 1}, {1, 0, 2}, @@ -7148,7 +7148,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk GROUP BY x ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7162,7 +7162,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk >= opk.pk) ORDER BY min;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2, nil}, {0, nil, 1}, {1, 0, 2}, @@ -7173,7 +7173,7 @@ Select * from ( Query: `SELECT pk FROM one_pk WHERE (SELECT max(pk1) FROM two_pk WHERE pk1 >= pk) IS NOT NULL ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, @@ -7182,7 +7182,7 @@ Select * from ( Query: `SELECT pk FROM one_pk opk WHERE (SELECT count(*) FROM two_pk where pk1 * 10 <= opk.c1) > 2 ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -7195,7 +7195,7 @@ Select * from ( FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk >= opk.pk) > 0 ORDER BY min;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 2, nil}, {0, nil, 1}, {1, 0, 2}, @@ -7204,7 +7204,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE one_pk.pk * 10 <= opk.c1) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -7213,7 +7213,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk <= opk.pk) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -7222,7 +7222,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7231,7 +7231,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) FROM one_pk opk ORDER BY 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7240,7 +7240,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7250,7 +7250,7 @@ Select * from ( { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) IS NOT NULL ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 1}, {3, 2}, @@ -7259,7 +7259,7 @@ Select * from ( { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS max FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) IS NOT NULL ORDER BY max`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 1}, {3, 2}, @@ -7268,7 +7268,7 @@ Select * from ( { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) > 0 ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {3, 2}, }, @@ -7277,7 +7277,7 @@ Select * from ( Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) > 0 GROUP BY x ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {3, 2}, }, @@ -7286,7 +7286,7 @@ Select * from ( Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) > 0 GROUP BY (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {3, 2}, }, @@ -7294,7 +7294,7 @@ Select * from ( { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT max(pk) FROM one_pk WHERE pk > opk.pk) > 0 ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7303,12 +7303,12 @@ Select * from ( { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT min(pk) FROM one_pk WHERE pk < opk.pk) > 0 ORDER BY x`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk < opk.pk) AS x FROM one_pk opk WHERE (SELECT min(pk) FROM one_pk WHERE pk > opk.pk) > 0 ORDER BY x`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, 0}, {2, 1}, @@ -7319,7 +7319,7 @@ Select * from ( (SELECT max(pk1) FROM two_pk WHERE pk1 < pk) AS max, (SELECT min(pk2) FROM two_pk WHERE pk2 > pk) AS min FROM one_pk ORDER BY min, pk;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, nil}, {2, 1, nil}, {3, 1, nil}, @@ -7331,7 +7331,7 @@ Select * from ( (SELECT max(pk1) FROM two_pk tpk WHERE pk1 IN (SELECT pk1 FROM two_pk WHERE pk1 = tpk.pk2)) AS one, (SELECT min(pk2) FROM two_pk tpk WHERE pk2 IN (SELECT pk2 FROM two_pk WHERE pk2 = tpk.pk1)) AS zero FROM one_pk ORDER BY pk;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 0}, {1, 1, 0}, {2, 1, 0}, @@ -7343,7 +7343,7 @@ Select * from ( (SELECT sum(pk1+pk2) FROM two_pk WHERE pk1+pk2 IN (SELECT pk1+pk2 FROM two_pk WHERE pk1+pk2 = pk)) AS sum, (SELECT min(pk2) FROM two_pk WHERE pk2 IN (SELECT pk2 FROM two_pk WHERE pk2 = pk)) AS equal FROM one_pk ORDER BY pk;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0.0, 0}, {1, 2.0, 1}, {2, 2.0, nil}, @@ -7355,7 +7355,7 @@ Select * from ( (SELECT sum(c1) FROM two_pk WHERE c1 + 3 IN (SELECT c4 FROM two_pk WHERE c3 > opk.c5)) AS sum, (SELECT sum(c1) FROM two_pk WHERE pk2 IN (SELECT pk2 FROM two_pk WHERE c1 + 1 < opk.c2)) AS sum2 FROM one_pk opk ORDER BY pk`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 60.0, nil}, {1, 50.0, 20.0}, {2, 30.0, 60.0}, @@ -7364,7 +7364,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT min(pk) FROM one_pk WHERE pk > opk.pk) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 2}, {2, 3}, @@ -7373,7 +7373,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE one_pk.pk <= one_pk.pk) FROM one_pk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 3}, {1, 3}, {2, 3}, @@ -7382,7 +7382,7 @@ Select * from ( }, { Query: `SELECT pk as a, (SELECT max(pk) FROM one_pk WHERE pk <= a) FROM one_pk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -7391,7 +7391,7 @@ Select * from ( }, { Query: `SELECT pk as a, (SELECT max(pk) FROM one_pk WHERE pk <= a) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -7400,7 +7400,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk b WHERE b.pk <= opk.pk) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -7409,7 +7409,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk WHERE pk <= pk) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 3}, {1, 3}, {2, 3}, @@ -7418,7 +7418,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk b WHERE b.pk <= pk) FROM one_pk opk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 3}, {1, 3}, {2, 3}, @@ -7427,7 +7427,7 @@ Select * from ( }, { Query: `SELECT pk, (SELECT max(pk) FROM one_pk b WHERE b.pk <= one_pk.pk) FROM one_pk ORDER BY 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 2}, @@ -7436,7 +7436,7 @@ Select * from ( }, { Query: `SELECT DISTINCT n FROM bigtable ORDER BY t`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1)}, {int64(9)}, {int64(7)}, @@ -7450,7 +7450,7 @@ Select * from ( }, { Query: "SELECT pk,pk1,pk2 FROM one_pk, two_pk ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {0, 0, 1}, {0, 1, 0}, @@ -7471,7 +7471,7 @@ Select * from ( }, { Query: "SELECT t1.c1,t2.c2 FROM one_pk t1, two_pk t2 WHERE pk1=1 AND pk2=1 ORDER BY 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 31}, {10, 31}, {20, 31}, @@ -7480,13 +7480,13 @@ Select * from ( }, { Query: "SELECT t1.i, t2.i FROM mytable t1, mytable t2 WHERE t2.i=1 AND t1.s = t2.s ORDER BY 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, { Query: "SELECT t1.c1,t2.c2 FROM one_pk t1, two_pk t2 WHERE t2.pk1=1 AND t2.pk2=1 ORDER BY 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 31}, {10, 31}, {20, 31}, @@ -7495,7 +7495,7 @@ Select * from ( }, { Query: "SELECT t1.c1,t2.c2 FROM one_pk t1, two_pk t2 WHERE pk1=1 OR pk2=1 ORDER BY 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 11}, {0, 21}, {0, 31}, @@ -7512,14 +7512,14 @@ Select * from ( }, { Query: "SELECT pk,pk2 FROM one_pk t1, two_pk t2 WHERE pk=1 AND pk2=1 ORDER BY 1,2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {1, 1}, }, }, { Query: "SELECT pk,pk1,pk2 FROM one_pk,two_pk WHERE pk=0 AND pk1=0 OR pk2=1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {0, 0, 1}, {0, 1, 1}, @@ -7533,7 +7533,7 @@ Select * from ( }, { Query: "SELECT pk,pk1,pk2 FROM one_pk,two_pk WHERE one_pk.c1=two_pk.c1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 0, 1}, {2, 1, 0}, @@ -7542,7 +7542,7 @@ Select * from ( }, { Query: "SELECT one_pk.c5,pk1,pk2 FROM one_pk,two_pk WHERE pk=pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 0, 0}, {4, 0, 1}, {14, 1, 0}, @@ -7551,7 +7551,7 @@ Select * from ( }, { Query: "SELECT opk.c5,pk1,pk2 FROM one_pk opk, two_pk tpk WHERE pk=pk1 ORDER BY 1,2,3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4, 0, 0}, {4, 0, 1}, {14, 1, 0}, @@ -7560,7 +7560,7 @@ Select * from ( }, { Query: "SELECT GREATEST(CAST(i AS CHAR), CAST(b AS CHAR)) FROM niltable order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {"2"}, {"3"}, @@ -7571,90 +7571,90 @@ Select * from ( }, { Query: "SELECT CASE WHEN COUNT( * ) THEN 10 * CAST(-19 AS SIGNED ) + CAST(82 AS DECIMAL) END;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"-108"}, }, }, { Query: "SELECT CASE WHEN COUNT( * ) THEN 10.0 * CAST(2012 AS UNSIGNED) + CAST(82 AS CHAR) END;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {20202.0}, }, }, { Query: "SELECT CASE WHEN COUNT( * ) THEN 10.0 * CAST(1234 AS DATE) + CAST(82 AS CHAR) END;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT 2.0 + CAST(5 AS DECIMAL)", - Expected: []sql.Row{{"7.0"}}, + Expected: []sql.UntypedSqlRow{{"7.0"}}, }, { Query: "SELECT (CASE WHEN i THEN i ELSE 0 END) as cases_i from mytable", - Expected: []sql.Row{{int64(1)}, {int64(2)}, {int64(3)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}, {int64(2)}, {int64(3)}}, }, { Query: `SELECT ALL - - 20 * - CASE + AVG ( ALL + + 89 ) WHEN - 66 THEN NULL WHEN - 15 THEN 38 * COUNT( * ) * MIN( DISTINCT - + 88 ) - MIN( ALL + 0 ) - - COUNT( * ) + - 0 + - 14 * + ( 98 ) * + 70 * 14 * + 57 * 48 - 53 + + 7 END * + 78 + - 11 * + 29 + + + 46 + + 10 + + ( - 83 ) * - - 74 / - 8 + 18`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "select cast(X'9876543210' as char(10))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "select cast(X'9876543210' as binary)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]uint8{0x98, 0x76, 0x54, 0x32, 0x10}}, }, }, { Query: "SELECT 1/0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 0/0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 1.0/0.0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 0.0/0.0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 1 div 0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 1.0 div 0.0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 0 div 0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT 0.0 div 0.0 FROM dual", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT NULL <=> NULL FROM dual", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT POW(2,3) FROM dual", - Expected: []sql.Row{{float64(8)}}, + Expected: []sql.UntypedSqlRow{{float64(8)}}, }, { Query: `SELECT /*+ JOIN_ORDER(a, c, b, d) */ a.c1, b.c2, c.c3, d.c4 FROM one_pk a JOIN one_pk b ON a.pk = b.pk JOIN one_pk c ON c.pk = b.pk JOIN (select * from one_pk) d ON d.pk = c.pk`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 2, 3}, {10, 11, 12, 13}, {20, 21, 22, 23}, @@ -7663,29 +7663,29 @@ Select * from ( }, { Query: "SELECT * FROM people WHERE last_name='doe' and first_name='jane' order by dob", - Expected: []sql.Row{ - sql.NewRow(time.Date(1990, time.Month(2), 21, 0, 0, 0, 0, time.UTC), "jane", "doe", "", int64(68), int64(1)), - sql.NewRow(time.Date(2010, time.Month(3), 15, 0, 0, 0, 0, time.UTC), "jane", "doe", "", int64(69), int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{time.Date(1990, time.Month(2), 21, 0, 0, 0, 0, time.UTC), "jane", "doe", "", int64(68), int64(1)}, + sql.UntypedSqlRow{time.Date(2010, time.Month(3), 15, 0, 0, 0, 0, time.UTC), "jane", "doe", "", int64(69), int64(1)}, }, }, { Query: "SELECT count(*) FROM people WHERE last_name='doe' and first_name='jane' order by dob", - Expected: []sql.Row{ - sql.NewRow(2), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{2}, }, }, { Query: "SELECT VALUES(i) FROM mytable", - Expected: []sql.Row{ - sql.NewRow(nil), - sql.NewRow(nil), - sql.NewRow(nil), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{nil}, + sql.UntypedSqlRow{nil}, + sql.UntypedSqlRow{nil}, }, }, { Query: `select i, row_number() over (order by i desc), row_number() over (order by length(s),i) from mytable order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, 1}, {2, 2, 3}, {3, 1, 2}, @@ -7693,13 +7693,13 @@ Select * from ( }, { Query: `select i, row_number() over (order by i desc) from mytable where i = 2 order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, }, }, { Query: `SELECT i, (SELECT row_number() over (order by ot.i2 desc) FROM othertable ot where ot.i2 = mt.i) from mytable mt order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 1}, {3, 1}, @@ -7708,7 +7708,7 @@ Select * from ( { Query: `select row_number() over (order by i desc), row_number() over (order by length(s),i) from mytable order by i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, {2, 3}, {1, 2}, @@ -7717,7 +7717,7 @@ Select * from ( { Query: `select *, row_number() over (order by i desc), row_number() over (order by length(s),i) from mytable order by i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 3, 1}, {2, "second row", 2, 3}, {3, "third row", 1, 2}, @@ -7729,7 +7729,7 @@ Select * from ( from mytable mt join othertable ot on mt.i = ot.i2 order by mt.i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1}, {2, 3}, {1, 2}, @@ -7738,7 +7738,7 @@ Select * from ( { Query: `select i, row_number() over (order by i desc), row_number() over (order by length(s),i) from mytable order by 1 desc;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 1, 2}, {2, 2, 3}, {1, 3, 1}, @@ -7747,7 +7747,7 @@ Select * from ( { Query: `select i, row_number() over (order by i desc) as i_num, row_number() over (order by length(s),i) as s_num from mytable order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3, 1}, {2, 2, 3}, {3, 1, 2}, @@ -7758,7 +7758,7 @@ Select * from ( row_number() over (order by length(s),i) as s_asc, row_number() over (order by length(s) desc,i desc) as s_desc from mytable order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 6, 1, 3}, {2, 5, 3, 1}, {3, 4, 2, 2}, @@ -7768,7 +7768,7 @@ Select * from ( Query: `select i, row_number() over (order by i desc) + 3, row_number() over (order by length(s),i) + 0.0 / row_number() over (order by length(s) desc,i desc) + 0.0 from mytable order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 6, "1.00000"}, {2, 5, "3.00000"}, {3, 4, "2.00000"}, @@ -7776,7 +7776,7 @@ Select * from ( }, { Query: "select pk1, pk2, row_number() over (partition by pk1 order by c1 desc) from two_pk order by 1,2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2}, {0, 1, 1}, {1, 0, 2}, @@ -7787,7 +7787,7 @@ Select * from ( Query: `select pk1, pk2, row_number() over (partition by pk1 order by c1 desc) from two_pk order by 1,2;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2}, {0, 1, 1}, {1, 0, 2}, @@ -7799,7 +7799,7 @@ Select * from ( row_number() over (partition by pk1 order by c1 desc), row_number() over (partition by pk2 order by 10 - c1) from two_pk order by 1,2;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2, 2}, {0, 1, 1, 2}, {1, 0, 2, 1}, @@ -7812,7 +7812,7 @@ Select * from ( row_number() over (partition by pk2 order by 10 - c1), max(c4) over () from two_pk order by 1,2;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 2, 2, 33}, {0, 1, 1, 2, 33}, {1, 0, 2, 1, 33}, @@ -7821,7 +7821,7 @@ Select * from ( }, { Query: "SELECT pk, row_number() over (partition by v2 order by pk ), max(v3) over (partition by v2 order by pk) FROM one_pk_three_idx ORDER BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 3}, {1, 2, 3}, {2, 1, 0}, @@ -7834,7 +7834,7 @@ Select * from ( }, { Query: "SELECT pk, count(*) over (order by v2) FROM one_pk_three_idx ORDER BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 4}, {1, 4}, {2, 5}, @@ -7847,7 +7847,7 @@ Select * from ( }, { Query: "SELECT pk, count(*) over (partition by v2) FROM one_pk_three_idx ORDER BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 4}, {1, 4}, {2, 1}, @@ -7860,7 +7860,7 @@ Select * from ( }, { Query: "SELECT pk, row_number() over (order by v2, pk), max(pk) over () from one_pk_three_idx ORDER BY pk", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1, 7}, {1, 2, 7}, {2, 5, 7}, @@ -7875,7 +7875,7 @@ Select * from ( Query: `select i, row_number() over (partition by case when i > 2 then "under two" else "over two" end order by i desc) as s_asc from mytable order by 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 1}, {3, 1}, @@ -7883,74 +7883,74 @@ Select * from ( }, { Query: "SELECT BINARY 'hi'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("hi")}, }, }, { Query: "SELECT BINARY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte("1")}, }, }, { Query: "SELECT BINARY 1 = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT BINARY 'hello' = 'hello'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT BINARY NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "SELECT JSON_CONTAINS(NULL, 1)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT JSON_CONTAINS('1', NULL)", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT JSON_CONTAINS('1', '1')", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT JSON_CONTAINS('1', NULL, '$.a')", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT JSON_CONTAINS('{"a": 1, "b": 2, "c": {"d": 4}}', '1', '$.a')`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT JSON_CONTAINS('{"a": 1, "b": 2, "c": {"d": 4}}', '1', '$.b')`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT JSON_CONTAINS('{"a": 1, "b": 2, "c": {"d": 4}}', '{"d": 4}', '$.a')`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `SELECT JSON_CONTAINS('{"a": 1, "b": 2, "c": {"d": 4}}', '{"d": 4}', '$.c')`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { // https://github.com/dolthub/dolt/issues/7656 Query: "select json_contains(cast('[1, 2]' as json), cast(cast(1 as signed) as json));", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "select one_pk.pk, one_pk.c1 from one_pk join two_pk on one_pk.c1 = two_pk.c1 order by two_pk.c1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 10}, {2, 20}, @@ -7959,39 +7959,39 @@ Select * from ( }, { Query: `SELECT JSON_OBJECT(1000000, 10);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"1000000": 10}`)}, }, }, { Query: `SELECT JSON_OBJECT(DATE('1981-02-16'), 10);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"1981-02-16": 10}`)}, }, }, { SkipServerEngine: true, // the over the wire result need the double quotes to be escaped Query: `SELECT JSON_OBJECT(JSON_OBJECT("foo", "bar"), 10);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"{\"foo\": \"bar\"}": 10}`)}, }, }, { Query: `SELECT JSON_OBJECT(true, 10);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"1": 10}`)}, }, }, { Query: `SELECT JSON_OBJECT(10.1, 10);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"10.1": 10}`)}, }, }, { Query: `SELECT JSON_OBJECT("i",i,"s",s) as js FROM mytable;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{"i": 1, "s": "first row"}`)}, {types.MustJSON(`{"i": 2, "s": "second row"}`)}, {types.MustJSON(`{"i": 3, "s": "third row"}`)}, @@ -8005,31 +8005,31 @@ Select * from ( }, { Query: `SELECT CONVERT_TZ("2004-01-01 4:00:00", "+00:00", "+04:00")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2004, 1, 1, 8, 0, 0, 0, time.UTC)}, }, }, { Query: `SELECT CONVERT_TZ(datetime_col, "+00:00", "+04:00") FROM datetime_table WHERE i = 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2020, 1, 1, 16, 0, 0, 0, time.UTC)}, }, }, { Query: `SELECT 1 from dual WHERE EXISTS (SELECT 1 from dual);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: `SELECT 1 from dual WHERE EXISTS (SELECT NULL from dual);`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: `SELECT i FROM mytable WHERE EXISTS (SELECT 1 from mytable) AND i IS NOT NULL;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -8037,86 +8037,86 @@ Select * from ( }, { Query: `SELECT * FROM two_pk WHERE EXISTS (SELECT pk FROM one_pk WHERE pk > 4)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT 2 + 2 WHERE NOT EXISTS (SELECT pk FROM one_pk WHERE pk > 4)`, - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: `SELECT 2 + 2 WHERE NOT EXISTS (SELECT * FROM one_pk WHERE pk > 4)`, - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: `SELECT 2 + 2 WHERE EXISTS (SELECT * FROM one_pk WHERE pk < 4)`, - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: `SELECT distinct pk1 FROM two_pk WHERE EXISTS (SELECT pk from one_pk where pk <= two_pk.pk1)`, - Expected: []sql.Row{{0}, {1}}, + Expected: []sql.UntypedSqlRow{{0}, {1}}, }, { Query: `select pk from one_pk where exists (SELECT pk1 FROM two_pk);`, - Expected: []sql.Row{{0}, {1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}}, }, { Query: `SELECT EXISTS (SELECT NULL from dual);`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT NOT EXISTS (SELECT NULL FROM dual)`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `select exists (SELECT pk1 FROM two_pk);`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT EXISTS (SELECT pk FROM one_pk WHERE pk > 4)`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `START TRANSACTION READ ONLY`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `START TRANSACTION READ WRITE`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // show status like ... is case-insensitive { Query: `SHOW STATUS LIKE 'aborted\_clients'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Aborted_clients", uint64(0)}, }, }, { Query: `SHOW STATUS LIKE 'Aborted_clients'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Aborted_clients", uint64(0)}, }, }, { Query: `SHOW GLOBAL STATUS LIKE 'Aborted_clients'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Aborted_clients", uint64(0)}, }, }, { Query: `SHOW GLOBAL STATUS LIKE 'Bytes_sent'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Bytes_sent", uint64(0)}, }, }, { Query: `SHOW SESSION STATUS LIKE 'Bytes_sent'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Bytes_sent", uint64(0)}, }, }, { Query: `SHOW GLOBAL STATUS LIKE 'Com\_stmt\_%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Com_stmt_close", uint64(0)}, {"Com_stmt_execute", uint64(0)}, {"Com_stmt_fetch", uint64(0)}, @@ -8128,7 +8128,7 @@ Select * from ( }, { Query: `SHOW SESSION STATUS LIKE 'Com\_stmt\_%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Com_stmt_close", uint64(0)}, {"Com_stmt_execute", uint64(0)}, {"Com_stmt_fetch", uint64(0)}, @@ -8140,17 +8140,17 @@ Select * from ( }, { Query: `SHOW SESSION STATUS LIKE 'Ssl_cipher'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Ssl_cipher", ""}, }, }, { Query: `SHOW SESSION STATUS WHERE Value < 0`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `SELECT a.* FROM invert_pk as a, invert_pk as b WHERE a.y = b.z`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 0}, {2, 0, 1}, {0, 2, 2}, @@ -8158,19 +8158,19 @@ Select * from ( }, { Query: `SELECT a.* FROM invert_pk as a, invert_pk as b WHERE a.y = b.z AND a.z = 2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2, 2}, }, }, { Query: `SELECT * FROM invert_pk WHERE y = 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 0, 1}, }, }, { Query: `SELECT * FROM invert_pk WHERE y >= 0`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 0, 1}, {0, 2, 2}, {1, 1, 0}, @@ -8178,183 +8178,183 @@ Select * from ( }, { Query: `SELECT * FROM invert_pk WHERE y >= 0 AND z < 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 0}, }, }, { Query: `select c1 from jsontable where c1 LIKE (('%' OR 'dsads') OR '%')`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select c1 from jsontable where c1 LIKE ('%' OR NULL)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select (('%' OR 'dsads') OR '%')`, - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: `show function status`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `show function status like 'foo'`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `show function status where Db='mydb'`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select uuid() = uuid()`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: `select instr(REPLACE(CONVERT(UUID() USING utf8mb4), '-', ''), '-')`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `select * from mytable where 1 = 0 order by i asc`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select * from mytable where i not in (1)`, - Expected: []sql.Row{{2, "second row"}, {3, "third row"}}, + Expected: []sql.UntypedSqlRow{{2, "second row"}, {3, "third row"}}, }, { Query: "(SELECT '1', 'first row' FROM dual) UNION (SELECT '6', 'sixth row' FROM dual) LIMIT 1", - Expected: []sql.Row{{"1", "first row"}}, + Expected: []sql.UntypedSqlRow{{"1", "first row"}}, }, { Query: "select GET_LOCK('10', 10)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "Select IS_FREE_LOCK('10')", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "Select IS_USED_LOCK('10')", - Expected: []sql.Row{{uint64(1)}}, + Expected: []sql.UntypedSqlRow{{uint64(1)}}, }, { Query: "Select RELEASE_LOCK('10')", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "Select RELEASE_ALL_LOCKS()", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT CONV('a',16,2)", - Expected: []sql.Row{{"1010"}}, + Expected: []sql.UntypedSqlRow{{"1010"}}, }, { Query: "SELECT CONV('6E',18,8)", - Expected: []sql.Row{{"172"}}, + Expected: []sql.UntypedSqlRow{{"172"}}, }, { Query: "SELECT CONV(-18,10,-18)", - Expected: []sql.Row{{"-10"}}, + Expected: []sql.UntypedSqlRow{{"-10"}}, }, { Query: "SELECT CONV(10+'10'+'10'+X'0a', 10, 10)", - Expected: []sql.Row{{"40"}}, + Expected: []sql.UntypedSqlRow{{"40"}}, }, { Query: "SELECT CONV(HEX(SUBSTRING('127.0', 1, 3)), 16, 10)", - Expected: []sql.Row{{"3224119"}}, + Expected: []sql.UntypedSqlRow{{"3224119"}}, }, { Query: "SELECT CONV(i, 10, 2) FROM mytable", - Expected: []sql.Row{{"1"}, {"10"}, {"11"}}, + Expected: []sql.UntypedSqlRow{{"1"}, {"10"}, {"11"}}, }, { Query: `SELECT t1.pk from one_pk join (one_pk t1 join one_pk t2 on t1.pk = t2.pk) on t1.pk = one_pk.pk and one_pk.pk = 1 join (one_pk t3 join one_pk t4 on t3.c1 is not null) on t3.pk = one_pk.pk and one_pk.c1 = 10`, - Expected: []sql.Row{{1}, {1}, {1}, {1}}, + Expected: []sql.UntypedSqlRow{{1}, {1}, {1}, {1}}, }, { Query: "select i from mytable where i in (select (select i from mytable order by i limit 1) as i)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "with recursive a as (select 1 union select 2) select * from a union select * from a limit 1;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "with recursive a(x) as (select 1 union select 2) select * from a having x > 1 union select * from a having x > 1;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "with recursive a(x) as (select 1 union select 2) select * from a where x > 1 union select * from a where x > 1;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "with recursive a(x) as (select 1 union select 2) select * from a union select * from a group by x;", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "with recursive a(x) as (select 1 union select 2) select * from a union select * from a order by x desc;", - Expected: []sql.Row{{2}, {1}}, + Expected: []sql.UntypedSqlRow{{2}, {1}}, }, { Query: `WITH recursive n(i) as (SELECT 1 UNION ALL SELECT i + 1 FROM n WHERE i+1 <= 10 LIMIT 5) SELECT count(i) FROM n;`, - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, { Query: `WITH recursive n(i) as (SELECT 1 UNION ALL SELECT i + 1 FROM n GROUP BY i HAVING i+1 <= 10) SELECT count(i) FROM n;`, - Expected: []sql.Row{{10}}, + Expected: []sql.UntypedSqlRow{{10}}, }, { Query: `WITH recursive n(i) as (SELECT 1 UNION ALL SELECT i + 1 FROM n WHERE i+1 <= 10 GROUP BY i HAVING i+1 <= 10 ORDER BY 1 LIMIT 5) SELECT count(i) FROM n;`, - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, { Query: `WITH recursive n(i) as (SELECT 1 UNION ALL SELECT i + 1 FROM n WHERE i+1 <= 10 LIMIT 1) SELECT count(i) FROM n;`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "with recursive a as (select 1 union select 2) select * from (select 1 where 1 in (select * from a)) as `temp`", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select 1 union select * from (select 2 union select 3) a union select 4;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "select 1 union select * from (select 2 union select 3) a union select 4;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "With recursive a(x) as (select 1 union select 4 union select * from (select 2 union select 3) b union select x+1 from a where x < 10) select count(*) from a;", - Expected: []sql.Row{{10}}, + Expected: []sql.UntypedSqlRow{{10}}, }, { Query: "with a(j) as (select 1), b(i) as (select 2) select j from a union (select i from b order by 1 desc) union select j from a;", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, { Query: "with a(j) as (select 1), b(i) as (select 2) (select t1.j as k from a t1 join a t2 on t1.j = t2.j union select i from b order by k desc limit 1) union select j from a;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "with a(j) as (select 1 union select 2 union select 3), b(i) as (select 2 union select 3) (select t1.j as k from a t1 join a t2 on t1.j = t2.j union select i from b order by k desc limit 2) union select j from a;", - Expected: []sql.Row{{3}, {2}}, + Expected: []sql.UntypedSqlRow{{3}, {2}}, }, { Query: "with a(j) as (select 1), b(i) as (select 2) (select j from a union select i from b order by j desc limit 1) union select j from a;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "with a(j) as (select 1), b(i) as (select 2) (select j from a union select i from b order by 1 limit 1) union select j from a;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "with a(j) as (select 1), b(i) as (select 1) (select j from a union all select i from b) union select j from a;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: ` @@ -8376,48 +8376,48 @@ With c as ( On b.I = e.i ) d ) select * from c;`, - Expected: []sql.Row{{"second row"}}, + Expected: []sql.UntypedSqlRow{{"second row"}}, }, { // https://github.com/dolthub/dolt/issues/4478 Query: "SELECT STRCMP('b', 'a');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // https://github.com/dolthub/dolt/issues/4478 Query: "SELECT STRCMP((SELECT CONCAT('a', 'b')), (SELECT SUBSTRING('cab', 2, 3)));", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { // https://github.com/dolthub/dolt/issues/5068 - verify that decimal parses as decimal Query: "SELECT 809826404100301269648758758005707100;", - Expected: []sql.Row{{"809826404100301269648758758005707100"}}, + Expected: []sql.UntypedSqlRow{{"809826404100301269648758758005707100"}}, }, { // https://github.com/dolthub/dolt/issues/5068 - verify that decimal parses as decimal Query: "SELECT 809826404100301269648758758005707100.12345;", - Expected: []sql.Row{{"809826404100301269648758758005707100.12345"}}, + Expected: []sql.UntypedSqlRow{{"809826404100301269648758758005707100.12345"}}, }, { // https://github.com/dolthub/dolt/issues/5068 - verify that uint64 still parses as uint64 Query: "SELECT 4294967295;", - Expected: []sql.Row{{uint64(4294967295)}}, + Expected: []sql.UntypedSqlRow{{uint64(4294967295)}}, }, { // https://github.com/dolthub/dolt/issues/5068 - verify that int64 still parses as int64 Query: "SELECT 4294967296;", - Expected: []sql.Row{{int64(4294967296)}}, + Expected: []sql.UntypedSqlRow{{int64(4294967296)}}, }, { // https://github.com/dolthub/dolt/issues/5522 Query: "select * from mytable where exists (select * from othertable where 1 = 0)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // tests to verify this issue is fixed: https://github.com/dolthub/dolt/issues/5522 { // original query from issue Query: "select count(*) from ab where exists (select * from xy where 1 = 0);", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { // false filter and a table @@ -8438,7 +8438,7 @@ where a1.u = 1 AND false;`, Query: `/*h1*/select a1.u from (select * from uv where false) a1 where a1.u = 1;`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // multiple false filter EXISTS clauses @@ -8458,7 +8458,7 @@ exists (select * from xy where from (select * from xy where x = 1 and x in (select * from (select 1 where false) a1) ) a2;`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // relation is a query @@ -8490,7 +8490,7 @@ with recursive my_cte as ) select * from my_cte where exists (select * from ab where 1 = 0);`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // relation is a table function @@ -8501,7 +8501,7 @@ JSON_TABLE( '$[*]' COLUMNS(x float path '$.a', y float path '$.b') ) as t1 where exists (select * from ab where 1 = 0);`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { // false having @@ -8528,7 +8528,7 @@ where not exists ( select 1 where false ) )`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {2, 1}, @@ -8544,7 +8544,7 @@ where not exists ( SELECT next_f, f+next_f FROM my_cte WHERE f < 1000 ) SELECT * FROM my_cte;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {1, 2}, {2, 3}, @@ -8577,13 +8577,13 @@ SELECT * FROM my_cte;`, // Regression test for https://github.com/dolthub/dolt/issues/5656 { Query: "select count((select * from (select pk from one_pk limit 1) as sq)) from one_pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, { Query: "select find_in_set('second row', s) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {0}, @@ -8591,7 +8591,7 @@ SELECT * FROM my_cte;`, }, { Query: "select find_in_set(s, 'first row,second row,third row') from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -8599,7 +8599,7 @@ SELECT * FROM my_cte;`, }, { Query: "select i from mytable where find_in_set(s, 'first row,second row,third row') = 2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -8630,7 +8630,7 @@ SELECT * FROM my_cte;`, ) ORDER BY c0; `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, @@ -8662,13 +8662,13 @@ SELECT * FROM my_cte;`, ) ORDER BY c0; `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, { Query: `SELECT SUM(0) * -1`, - Expected: []sql.Row{{0.0}}, + Expected: []sql.UntypedSqlRow{{0.0}}, }, { @@ -8685,7 +8685,7 @@ ladder (depth, foo) AS ( FROM ladder JOIN rt WHERE ladder.foo = rt.foo ) SELECT * FROM ladder;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {1, nil}, {1, nil}, @@ -8697,7 +8697,7 @@ SELECT * FROM ladder;`, { // natural join filter columns do not hide duplicated columns Query: "select t2.* from mytable t1 natural join mytable t2 join othertable t3 on t2.i = t3.i2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -8706,7 +8706,7 @@ SELECT * FROM ladder;`, { // natural join join filter columns aliased Query: "select t1.*, t2.*, i from mytable t1 natural join mytable t2 join othertable t3 on t2.i = t3.i2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, "first row", 1}, {2, "second row", 2, "second row", 2}, {3, "third row", 3, "third row", 3}, @@ -8715,18 +8715,18 @@ SELECT * FROM ladder;`, { // mysql overwrites outer CTEs on seeing inner CTE definition Query: "with a(j) as (select 1) ( with c(k) as (select 3) select k from c union select 6) union select k from c;", - Expected: []sql.Row{{3}, {6}}, + Expected: []sql.UntypedSqlRow{{3}, {6}}, }, { Query: "SELECT pk1, SUM(c1) FROM two_pk", - Expected: []sql.Row{{0, 60.0}}, + Expected: []sql.UntypedSqlRow{{0, 60.0}}, }, { 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{ + Expected: []sql.UntypedSqlRow{ {0, nil, 10.0}, {1, nil, 15.0}, {2, nil, 15.0}, @@ -8737,40 +8737,40 @@ SELECT * FROM ladder;`, 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{ + Expected: []sql.UntypedSqlRow{ {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{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, { Query: "SELECT json_array() FROM dual;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`[]`)}, }, }, { Query: "SELECT json_object() FROM dual;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.MustJSON(`{}`)}, }, }, { Query: `SELECT json_depth('{"a": 1, "b": {"aa": 1, "bb": {"aaa": 1, "bbb": {"aaaa": 1}}}}') FROM dual;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "SELECT i, I, s, S FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, "first row", "first row"}, {2, 2, "second row", "second row"}, {3, 3, "third row", "third row"}, @@ -8796,7 +8796,7 @@ SELECT * FROM ladder;`, }, { Query: "SELECT `i`, `I`, `s`, `S` FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, "first row", "first row"}, {2, 2, "second row", "second row"}, {3, 3, "third row", "third row"}, @@ -8822,7 +8822,7 @@ SELECT * FROM ladder;`, }, { Query: "SELECT `mytable`.`i`, `mytable`.`I`, `mytable`.`s`, `mytable`.`S` FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, "first row", "first row"}, {2, 2, "second row", "second row"}, {3, 3, "third row", "third row"}, @@ -8849,29 +8849,29 @@ SELECT * FROM ladder;`, // https://github.com/dolthub/go-mysql-server/issues/600 { Query: `SELECT json_unquote(json_extract('{"hi":"there"}', '$.nope'))`, - Expected: []sql.Row{{nil}}, // currently returns string "null" + Expected: []sql.UntypedSqlRow{{nil}}, // currently returns string "null" }, { Query: "SELECT 1 FROM DUAL WHERE (1, null) != (0, null)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "SELECT 1 FROM DUAL WHERE ('0', 0) = (0, '0')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { 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;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1}, }, }, { 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;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1}, }, }, @@ -8883,7 +8883,7 @@ SELECT * FROM UNION ALL (SELECT * FROM mytable) ORDER BY 1;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {1, "first row"}, {2, "second row"}, @@ -8895,28 +8895,28 @@ ORDER BY 1;`, { Query: "select x from xy where x > 0 and x <= 2 order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, { Query: "select * from xy where y < 1 or y > 2 order by y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {3, 3}, }, }, { Query: "select * from xy where y < 1 or y > 2 order by y desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 3}, {1, 0}, }, }, { Query: "select * from xy where x in (3, 0, 1) order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {3, 3}, @@ -8924,7 +8924,7 @@ ORDER BY 1;`, }, { Query: "select * from xy where x in (3, 0, 1) order by x desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 3}, {1, 0}, {0, 2}, @@ -8932,7 +8932,7 @@ ORDER BY 1;`, }, { Query: "select * from xy where y in (3, 0, 1) order by y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 1}, {3, 3}, @@ -8940,7 +8940,7 @@ ORDER BY 1;`, }, { Query: "select * from xy where y in (3, 0, 1) order by y desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 3}, {2, 1}, {1, 0}, @@ -8948,7 +8948,7 @@ ORDER BY 1;`, }, { Query: "select * from xy_hasnull_idx order by y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, nil}, {1, 0}, {2, 1}, @@ -8957,7 +8957,7 @@ ORDER BY 1;`, }, { Query: "select * from xy_hasnull_idx order by y desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {2, 1}, {1, 0}, @@ -8966,14 +8966,14 @@ ORDER BY 1;`, }, { Query: "select * from xy_hasnull_idx where y < 1 or y > 1 order by y desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, }, }, { Query: "select * from xy_hasnull_idx where y < 1 or y > 1 or y is null order by y desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 0}, {3, nil}, @@ -8981,7 +8981,7 @@ ORDER BY 1;`, }, { Query: "select * from xy_hasnull_idx where y in (0, 2) or y is null order by y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, nil}, {1, 0}, {0, 2}, @@ -8989,7 +8989,7 @@ ORDER BY 1;`, }, { Query: "select x as xx, y as yy from xy_hasnull_idx order by yy desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {2, 1}, {1, 0}, @@ -8998,7 +8998,7 @@ ORDER BY 1;`, }, { Query: "select x as xx, y as yy from xy_hasnull_idx order by YY desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {2, 1}, {1, 0}, @@ -9007,7 +9007,7 @@ ORDER BY 1;`, }, { Query: "select * from xy_hasnull_idx order by Y desc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {2, 1}, {1, 0}, @@ -9017,85 +9017,85 @@ ORDER BY 1;`, { Query: "select max(x) from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "select min(x) from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select max(y) from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "select max(x)+100 from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {103}, }, }, { Query: "select max(x) as xx from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "select 1, 2.0, '3', max(x) from xy", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "2.0", "3", 3}, }, }, { Query: "select min(x) from xy where x > 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select max(x) from xy where x < 3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select min(x) from xy where y > 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select max(x) from xy where y < 3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select * from (select max(x) from xy) sq", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "with cte(i) as (select max(x) from xy) select i + 100 from cte", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {103}, }, }, { Query: "with cte(i) as (select x from xy) select max(i) from cte", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "select max(x) from xy group by y", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -9104,7 +9104,7 @@ ORDER BY 1;`, }, { Query: "select max(x) from xy join uv where x = u", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, @@ -9124,7 +9124,7 @@ select * from mytable, ) sqa where i = a order by i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1}, {2, "second row", 2}, {3, "third row", 3}, @@ -9151,7 +9151,7 @@ select * from mytable, ) sqa2 where i = a order by i;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1}, {2, "second row", 2}, }, @@ -9169,7 +9169,7 @@ where exists ( where uv.v = ab2.a and uv.v = ab.a ) );`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2}, }, }, @@ -9187,45 +9187,45 @@ where exists ( ) ) order by x, y;`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select 1 where cos(2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: `select 1 where sin(2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: `select 1 where sin(0)`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select acos(-2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `select asin(-2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: `select 1 % acos(-2)`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "select dayname(123), dayname('abc')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil, nil}, }, }, @@ -9252,7 +9252,7 @@ select dayname(e1), dayname(s1) from typestable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { nil, nil, @@ -9279,13 +9279,13 @@ from typestable`, { // TODO: This goes past MySQL's range Query: "select dayname('0000-00-00')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Saturday"}, }, }, { Query: "select * from mytable order by dayname(i)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -9293,64 +9293,64 @@ from typestable`, }, { Query: "select sqrt(-1) + 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "select sqrt(-1) + 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "flush binary logs", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "flush engine logs", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // TODO: this is the largest scale decimal we support, but it's not the largest MySQL supports { Query: "select round(5e29, -30)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1e30}, }, }, { Query: "select 1 where (round('')) union all select 1 where (not (round(''))) union all select 1 where ((round('')) is null);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select 1 in (null, 0.8)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "select -1 in (null, sin(5))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "select 1 where (1 in (null, 0.8))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select -1 where (1 in (null, sin(5)))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from mytable where (i in (null, 0.8, 1.5, 2.999))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from mytable where (i BETWEEN (CASE 1 WHEN 2 THEN 1.0 ELSE (1||2) END) AND i)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -9358,7 +9358,7 @@ from typestable`, }, { Query: "select * from mytable where (i BETWEEN ('' BETWEEN '' AND ('' OR '#')) AND i)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -9366,13 +9366,13 @@ from typestable`, }, { Query: "select * from (select 'k' as k) sq join bigtable on t = k join xy where x between n and n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"k", "k", 1, 1, 0}, }, }, { Query: "select * from xy inner join uv on (xy.x in (false in ('asdf')));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0, 0, 1}, {1, 0, 1, 1}, {1, 0, 2, 2}, @@ -9381,7 +9381,7 @@ from typestable`, }, { Query: "select * from mytable where i > '-0.5';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -9389,25 +9389,25 @@ from typestable`, }, { Query: "select case when 1 then 59 + 81 / 1 end;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"140.0000"}, }, }, { Query: "select case 1 when 2 then null else (6 * 2) / 1 end;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"12.0000"}, }, }, { Query: "select case 1 when 1 then (6 * 2) / 1 when 2 then null else null end;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"12.0000"}, }, }, { Query: "select * from one_pk_two_idx where v1 < 4 and v2 < 2 or v2 > 3 order by v1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 1, 1}, {4, 4, 4}, @@ -9418,7 +9418,7 @@ from typestable`, }, { Query: "select length(space(i)) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -9426,7 +9426,7 @@ from typestable`, }, { Query: "select concat(space(i), 'a') from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {" a"}, {" a"}, {" a"}, @@ -9434,7 +9434,7 @@ from typestable`, }, { Query: "select space(i * 2) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {" "}, {" "}, {" "}, @@ -9442,7 +9442,7 @@ from typestable`, }, { Query: "select i + pi() from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4.141592653589793}, {5.141592653589793}, {6.141592653589793}, @@ -9450,7 +9450,7 @@ from typestable`, }, { Query: "select i * pi() from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3.141592653589793}, {6.283185307179586}, {9.42477796076938}, @@ -9458,7 +9458,7 @@ from typestable`, }, { Query: "select i / pi() from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.3183098861837907}, {0.6366197723675814}, {0.954929658551372}, @@ -9466,7 +9466,7 @@ from typestable`, }, { Query: "select exp(i) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {math.Exp(1)}, {math.Exp(2)}, {math.Exp(3)}, @@ -9474,7 +9474,7 @@ from typestable`, }, { Query: "select bit_count(i), bit_count(-20 * i) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 61}, {1, 60}, {2, 59}, @@ -9482,13 +9482,13 @@ from typestable`, }, { Query: "select bit_count(binary 123456878901234567890);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {73}, }, }, { Query: "select atan(i), atan2(i, i + 2) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {math.Atan2(1, 1), math.Atan2(1, 3)}, {math.Atan2(2, 1), math.Atan2(2, 4)}, {math.Atan2(3, 1), math.Atan2(3, 5)}, @@ -9496,7 +9496,7 @@ from typestable`, }, { Query: "select elt(i, 'a', 'b') from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"a"}, {"b"}, {nil}, @@ -9504,7 +9504,7 @@ from typestable`, }, { Query: "select field(i, '1', '2', '3') from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -9512,7 +9512,7 @@ from typestable`, }, { Query: "select ord(s), ord(concat('asdf', s)) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {102, 97}, {115, 97}, {116, 97}, @@ -9520,7 +9520,7 @@ from typestable`, }, { Query: "select char(i, i + 10, pi()) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte{0x01, 0x0B, 0x03}}, {[]byte{0x02, 0x0C, 0x03}}, {[]byte{0x03, 0x0D, 0x03}}, @@ -9528,288 +9528,288 @@ from typestable`, }, { Query: "select char(97, 98, 99 using utf8mb4);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select count(distinct cast(i as decimal)) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "select count(distinct null);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select 1/2.0 + 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1.5000"}, }, }, { Query: "select 1 where if('', 1, char(''));", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select 1 where if('', char(''), 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select 1 where if(char(''), 0, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select 1 where if(char('123'), 0, 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select 1 where 0 = if('', 1, char(''));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select if('', 1, char(''));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte{0}}, }, }, { Query: "select if(char(''), 'true', 'false');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"false"}, }, }, { Query: "select if(char('0'), 'true', 'false');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"false"}, }, }, { Query: "select if(char('1'), 'true', 'false');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"false"}, }, }, { Query: "select if(cast(1 as binary), 'true', 'false');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"true"}, }, }, { Query: "select if(cast(0 as binary), 'true', 'false');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"false"}, }, }, { Query: "select cast(true as json) = true;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast(false as json) = false;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast(true as json) = 'true';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(false as json) = 'false';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(cast(true as json) as char) = 'true';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast(cast(false as json) as char) = 'false';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast(true as json) = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(true as json) = 0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(false as json) = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(false as json) = 0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(cast(true as json) as signed) = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast(cast(true as json) as signed) = 0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(cast(false as json) as signed) = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast(cast(false as json) as signed) = 0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast('true' as json) = 'true';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "select cast('true' as json) = true;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast('false' as json) = false;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "select cast('false' as json) = 'false';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: `SELECT json_type('{"a": [10, true, "abc"]}');`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"OBJECT"}, }, }, { Query: `SELECT json_type(json_extract('{"a": [10, true, "abc"]}', '$.a'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ARRAY"}, }, }, { Query: `SELECT json_type(json_extract('{"a": [10, true, "abc"]}', '$.a[0]'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"INTEGER"}, }, }, { Query: `SELECT json_type(json_extract('{"a": [10, true, "abc"]}', '$.a[1]'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"BOOLEAN"}, }, }, { Query: `SELECT json_type(json_extract('{"a": [10, true, "abc"]}', '$.a[2]'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"STRING"}, }, }, { Query: `SELECT json_type(json_extract('{"a": 123.456}', '$.a'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `SELECT json_type(json_extract('{"a": null}', '$.a'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NULL"}, }, }, { Query: "SELECT json_type(cast(cast('2001-01-01 12:34:56.123456' as datetime) as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DATETIME"}, }, }, { Query: "SELECT json_type(cast(cast('2001-01-01 12:34:56.123456' as date) as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DATE"}, }, }, { Query: "select json_type(cast(cast(1 as unsigned) as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, { Query: "select json_type('4294967295');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"INTEGER"}, }, }, { Query: "select json_type('4294967296');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, { Query: "SELECT json_type(cast(1.0 as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DECIMAL"}, }, }, { Query: "select json_type(cast(cast(2001 as year) as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, { Query: "select length(random_bytes(i)) from mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -9818,239 +9818,239 @@ from typestable`, { Query: "select to_days('2024-04-15');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {739356}, }, }, { Query: "select from_days(739356);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2024, 4, 15, 0, 0, 0, 0, time.UTC)}, }, }, { Query: "select last_day('2000-02-21');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2000, 2, 29, 0, 0, 0, 0, time.UTC)}, }, }, { Query: "select last_day('1999-11-05');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(1999, 11, 30, 0, 0, 0, 0, time.UTC)}, }, }, { Query: "select cast(' \t 123 \t ' as signed);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, { Query: "select cast('\n123\n' as signed);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select cast('\\0123\\0' as signed);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select cast(' \t \n\\0123 \t ' as signed);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select cast(' \t 123 \t ' as unsigned);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(123)}, }, }, { Query: "select cast('\n123\n' as unsigned);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0)}, }, }, { Query: "select cast('\\0123\\0' as unsigned);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0)}, }, }, { Query: "select cast(' \t \n\\0123 \t ' as unsigned);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0)}, }, }, { Query: "select cast(' \t \n \r 123.456 \r \t \n ' as decimal(10,3));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123.456"}, }, }, { Query: "select cast('\\0123\\0' as decimal(10,3));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0.000"}, }, }, { Query: "select cast(' \t \n\\0123 \t ' as decimal(10,3));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0.000"}, }, }, { Query: "select cast(' \t \n \r 123.456 \r \t \n ' as double);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123.456}, }, }, { Query: "select cast('\\0123\\0' as double);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.0}, }, }, { Query: "select cast(' \t \n\\0123 \t ' as double);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0.0}, }, }, { Query: "select cast(' \t \n \r 123.456 \r \t \n ' as float);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float32(123.456)}, }, }, { Query: "select cast('\\0123\\0' as float);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float32(0)}, }, }, { Query: "select cast(' \t \n\\0123 \t ' as float);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float32(0)}, }, }, { Query: "select 'abc' like NULL", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, { Query: "select icu_version()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"73.1"}, }, }, { Query: "select get_format(date, 'usa')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"%m.%d.%Y"}, }, }, { Query: "select date_format('2003-10-03', get_format(date, 'eur'))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"03.10.2003"}, }, }, { Query: "select charset(null)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"binary"}, }, }, { Query: "select charset(123)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"binary"}, }, }, { Query: "select charset('abc')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4"}, }, }, { Query: "select charset(convert('abc' using latin1))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1"}, }, }, { Query: "select uncompress(compress('thisisastring'))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {[]byte{0x74, 0x68, 0x69, 0x73, 0x69, 0x73, 0x61, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67}}, }, }, { Query: "select length(compress(repeat('a', 1000)))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {24}, // 21 in MySQL because of library implementation differences }, }, { Query: "select length(uncompress(compress(repeat('a', 1000))))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1000}, }, }, { Query: "select uncompressed_length(compress(repeat('a', 1000)))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint32(1000)}, }, }, { Query: `select distinct pk1 from two_pk order by pk1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: `select distinct pk2 from two_pk order by pk2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: `select distinct pk1 from two_pk order by pk2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: `select distinct pk2 from two_pk order by pk1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: `select distinct pk1, pk2 from two_pk order by pk1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 1}, {1, 0}, @@ -10059,7 +10059,7 @@ from typestable`, }, { Query: `select distinct pk1, pk2 from two_pk order by pk2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 0}, {0, 1}, @@ -10068,7 +10068,7 @@ from typestable`, }, { Query: `select distinct pk1, pk2 from two_pk order by pk1, pk2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 1}, {1, 0}, @@ -10077,7 +10077,7 @@ from typestable`, }, { Query: `select distinct pk1, pk2 from two_pk order by pk2, pk1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 0}, {0, 1}, @@ -10086,7 +10086,7 @@ from typestable`, }, { Query: `select distinct pk2, pk1 from two_pk order by pk1, pk2`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 0}, {0, 1}, @@ -10095,7 +10095,7 @@ from typestable`, }, { Query: `select distinct pk2, pk1 from two_pk order by pk2, pk1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 1}, {1, 0}, @@ -10104,14 +10104,14 @@ from typestable`, }, { Query: `select distinct pk1 + 1 from two_pk order by pk1 + 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, { Query: `select distinct pk2 + 1 from two_pk order by pk2 + 1`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, @@ -10121,7 +10121,7 @@ from typestable`, var KeylessQueries = []QueryTest{ { Query: "SELECT * FROM keyless ORDER BY c0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {1, 1}, @@ -10130,7 +10130,7 @@ var KeylessQueries = []QueryTest{ }, { Query: "SELECT * FROM keyless ORDER BY c1 DESC", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 2}, {1, 1}, {1, 1}, @@ -10139,7 +10139,7 @@ var KeylessQueries = []QueryTest{ }, { Query: "SELECT * FROM keyless JOIN myTable where c0 = i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1, "first row"}, {1, 1, 1, "first row"}, {2, 2, 2, "second row"}, @@ -10147,7 +10147,7 @@ var KeylessQueries = []QueryTest{ }, { Query: "SELECT * FROM myTable JOIN keyless WHERE i = c0 ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 1, 1}, {1, "first row", 1, 1}, {2, "second row", 2, 2}, @@ -10155,28 +10155,28 @@ var KeylessQueries = []QueryTest{ }, { Query: "DESCRIBE keyless", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c0", "bigint", "YES", "", nil, ""}, {"c1", "bigint", "YES", "", nil, ""}, }, }, { Query: "SHOW COLUMNS FROM keyless", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c0", "bigint", "YES", "", nil, ""}, {"c1", "bigint", "YES", "", nil, ""}, }, }, { Query: "SHOW FULL COLUMNS FROM keyless", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c0", "bigint", nil, "YES", "", nil, "", "", ""}, {"c1", "bigint", nil, "YES", "", nil, "", "", ""}, }, }, { Query: "SHOW CREATE TABLE keyless", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"keyless", "CREATE TABLE `keyless` (\n `c0` bigint,\n `c1` bigint\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, @@ -10187,40 +10187,40 @@ var BrokenQueries = []QueryTest{ // union and aggregation typing are tricky { Query: "with recursive t (n) as (select sum('1') from dual union all select (2.00) from dual) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(3)}, }, }, { Query: "with recursive t (n) as (select sum(1.0) from dual union all select n+1 from t where n < 10) select sum(n) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"55.0"}, }, }, { // mysql is case-sensitive with CTE name Query: "with recursive MYTABLE(j) as (select 2 union select MYTABLE.j from MYTABLE join mytable on MYTABLE.j = mytable.i) select j from MYTABLE", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { // mysql is case-sensitive with CTE name Query: "with recursive MYTABLE(j) as (select 2 union select MYTABLE.j from MYTABLE join mytable on MYTABLE.j = mytable.i) select i from mytable;", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { // edge case where mysql moves an orderby between scopes Query: "with a(j) as (select 1), b(i) as (select 2) (select j from a union select i from b order by 1 desc) union select j from a;", - Expected: []sql.Row{{2}, {1}}, + Expected: []sql.UntypedSqlRow{{2}, {1}}, }, { // mysql converts boolean to int8 Query: "with a(j) as (select 1 union select 2 union select 3), b(i) as (select 2 union select 3) select (3,4) in (select a.j, b.i+1 from a, b where a.j = b.i) as k group by k having k = 1;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { // mysql converts boolean to int8 and deduplicates with other 1 Query: "With recursive a(x) as (select 1 union select 2 union select x in (select t1.i from mytable t1) from a) select x from a;", - Expected: []sql.Row{{1}, {2}}, + Expected: []sql.UntypedSqlRow{{1}, {2}}, }, // this doesn't parse in MySQL (can't use an alias in a where clause), panics in engine // AVG gives the wrong result for the first row @@ -10234,15 +10234,15 @@ var BrokenQueries = []QueryTest{ // implemented yet. { Query: "SELECT 1 FROM DUAL WHERE (1, null) in ((1, null))", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (0, null) = (0, null)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT 1 FROM DUAL WHERE (null, null) = (select null, null from dual)", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, // TODO: support nested recursive CTEs { @@ -10263,7 +10263,7 @@ var BrokenQueries = []QueryTest{ JOIN parts AS p ON p.part = p.part ) SELECT t1.sub_part, sum(t1.quantity) as total_quantity FROM t1 GROUP BY t1.sub_part;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"crust", float64(1)}, {"filling", float64(2)}, {"flour", float64(20)}, @@ -10276,22 +10276,22 @@ var BrokenQueries = []QueryTest{ { // TODO truncate date outputs Query: "select i, date_col from datetime_table", - Expected: []sql.Row{{1, "2019-12-31"}}, + Expected: []sql.UntypedSqlRow{{1, "2019-12-31"}}, }, // Currently, not matching MySQL's result format. This []uint8 gets converted to '\n' instead. { Query: "SELECT X'0a'", - Expected: []sql.Row{{"0x0A"}}, + Expected: []sql.UntypedSqlRow{{"0x0A"}}, }, // Parsers for u, U, v, V, w, W, x and X are not supported yet. { Query: "SELECT STR_TO_DATE('2013 32 Tuesday', '%X %V %W')", // Tuesday of 32th week - Expected: []sql.Row{{"2013-08-13"}}, + Expected: []sql.UntypedSqlRow{{"2013-08-13"}}, }, { // TODO: need to properly handle datetime precision Query: `SELECT STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s %f') - (STR_TO_DATE('01,5,2013 09:30:17','%d,%m,%Y %h:%i:%s') - INTERVAL 1 SECOND)`, - Expected: []sql.Row{{int64(1)}}, + Expected: []sql.UntypedSqlRow{{int64(1)}}, }, { // This panics @@ -10310,7 +10310,7 @@ WITH RECURSIVE cte(i, j) AS ( ) SELECT * FROM mytable;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -10319,51 +10319,51 @@ FROM mytable;`, { // TODO: we do not return correct result in some cases. The method used: `GetIsUpdatableFromCreateView(cv *CreateView)` Query: "select TABLE_NAME, IS_UPDATABLE from information_schema.views where table_schema = 'mydb'", - Expected: []sql.Row{{"myview1", "YES"}, {"myview2", "YES"}, {"myview3", "NO"}, {"myview4", "NO"}, {"myview5", "YES"}}, + Expected: []sql.UntypedSqlRow{{"myview1", "YES"}, {"myview2", "YES"}, {"myview3", "NO"}, {"myview4", "NO"}, {"myview5", "YES"}}, }, // time to json cast is broken { Query: "SELECT json_type(cast(cast('2001-01-01 12:34:56.123456' as time) as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"TIME"}, }, }, // binary to json cast is broken { Query: "SELECT json_type(cast(cast('123abc' as binary) as json));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"BLOB"}, }, }, // 1e2 -> 100, so we can't tell the difference between float and integer in this case { Query: `SELECT json_type(json_extract('{"a": 1e2}', '$.a'));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, // MySQL seems to store initial type information in JSON, we don't { Query: `SELECT json_type(json_extract(json_object("a", cast(10 as double)), "$.a"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DOUBLE"}, }, }, { Query: `SELECT json_type(json_extract(json_object("a", cast(10 as unsigned)), "$.a"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"UNSIGNED INTEGER"}, }, }, { Query: `SELECT json_type(json_extract(json_object("a", cast(10 as signed)), "$.a"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"INTEGER"}, }, }, { Query: `SELECT json_type(json_extract(json_object("a", cast(10 as decimal)), "$.a"));`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"DECIMAL"}, }, }, @@ -10372,7 +10372,7 @@ FROM mytable;`, var VersionedQueries = []QueryTest{ { Query: "SELECT * FROM myhistorytable AS OF '2019-01-01' AS foo ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 1"}, {int64(2), "second row, 1"}, {int64(3), "third row, 1"}, @@ -10380,7 +10380,7 @@ var VersionedQueries = []QueryTest{ }, { Query: "SELECT * FROM myhistorytable AS OF '2019-01-02' foo ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, @@ -10389,7 +10389,7 @@ var VersionedQueries = []QueryTest{ // Testing support of function evaluation in AS OF { Query: "SELECT * FROM myhistorytable AS OF GREATEST('2019-01-02','2019-01-01','') foo ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, @@ -10397,7 +10397,7 @@ var VersionedQueries = []QueryTest{ }, { Query: "SELECT * FROM myhistorytable ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 3", "1"}, {int64(2), "second row, 3", "2"}, {int64(3), "third row, 3", "3"}, @@ -10405,19 +10405,19 @@ var VersionedQueries = []QueryTest{ }, { Query: "SHOW TABLES AS OF '2019-01-02' LIKE 'myhistorytable'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"myhistorytable"}, }, }, { Query: "SHOW TABLES FROM mydb AS OF '2019-01-02' LIKE 'myhistorytable'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"myhistorytable"}, }, }, { Query: "SHOW CREATE TABLE myhistorytable as of '2019-01-02'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"myhistorytable", "CREATE TABLE `myhistorytable` (\n" + " `i` bigint NOT NULL,\n" + " `s` text NOT NULL,\n" + @@ -10427,7 +10427,7 @@ var VersionedQueries = []QueryTest{ }, { Query: "SHOW CREATE TABLE myhistorytable as of '2019-01-03'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"myhistorytable", "CREATE TABLE `myhistorytable` (\n" + " `i` bigint NOT NULL,\n" + " `s` text NOT NULL,\n" + @@ -10447,7 +10447,7 @@ var VersionedScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM myhistorytable AS OF @rev1 AS foo ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 1"}, {int64(2), "second row, 1"}, {int64(3), "third row, 1"}, @@ -10455,7 +10455,7 @@ var VersionedScripts = []ScriptTest{ }, { Query: "SELECT * FROM myhistorytable AS OF @rev2 AS foo ORDER BY i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1), "first row, 2"}, {int64(2), "second row, 2"}, {int64(3), "third row, 2"}, @@ -10463,20 +10463,20 @@ var VersionedScripts = []ScriptTest{ }, { Query: "SHOW TABLES AS OF @rev1 LIKE 'myhistorytable'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"myhistorytable"}, }, }, { Query: "DESCRIBE myhistorytable AS OF '2019-01-02'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, {"s", "text", "NO", "", nil, ""}, }, }, { Query: "DESCRIBE myhistorytable AS OF '2019-01-03'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "bigint", "NO", "PRI", nil, ""}, {"s", "text", "NO", "", nil, ""}, {"c", "text", "NO", "", nil, ""}, @@ -10489,71 +10489,71 @@ var VersionedScripts = []ScriptTest{ var DateParseQueries = []QueryTest{ { Query: "SELECT STR_TO_DATE('Jan 3, 2000', '%b %e, %Y')", - Expected: []sql.Row{{"2000-01-03"}}, + Expected: []sql.UntypedSqlRow{{"2000-01-03"}}, }, { Query: "SELECT STR_TO_DATE('01,5,2013', '%d,%m,%Y')", - Expected: []sql.Row{{"2013-05-01"}}, + Expected: []sql.UntypedSqlRow{{"2013-05-01"}}, }, { Query: "SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y')", - Expected: []sql.Row{{"2013-05-01"}}, + Expected: []sql.UntypedSqlRow{{"2013-05-01"}}, }, { Query: "SELECT STR_TO_DATE('a09:30:17','a%h:%i:%s')", - Expected: []sql.Row{{"09:30:17"}}, + Expected: []sql.UntypedSqlRow{{"09:30:17"}}, }, { Query: "SELECT STR_TO_DATE('a09:30:17','%h:%i:%s')", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT STR_TO_DATE('09:30:17a','%h:%i:%s')", - Expected: []sql.Row{{"09:30:17"}}, + Expected: []sql.UntypedSqlRow{{"09:30:17"}}, }, { Query: "SELECT STR_TO_DATE('09:30:17 pm','%h:%i:%s %p')", - Expected: []sql.Row{{"21:30:17"}}, + Expected: []sql.UntypedSqlRow{{"21:30:17"}}, }, { Query: "SELECT STR_TO_DATE('9','%m')", - Expected: []sql.Row{{"0000-09-00"}}, + Expected: []sql.UntypedSqlRow{{"0000-09-00"}}, }, { Query: "SELECT STR_TO_DATE('9','%s')", - Expected: []sql.Row{{"00:00:09"}}, + Expected: []sql.UntypedSqlRow{{"00:00:09"}}, }, { Query: "SELECT STR_TO_DATE('01/02/99 314', '%m/%e/%y %f')", - Expected: []sql.Row{{"1999-01-02 00:00:00.314000"}}, + Expected: []sql.UntypedSqlRow{{"1999-01-02 00:00:00.314000"}}, }, { Query: "SELECT STR_TO_DATE('01/02/99 0', '%m/%e/%y %f')", - Expected: []sql.Row{{"1999-01-02 00:00:00.000000"}}, + Expected: []sql.UntypedSqlRow{{"1999-01-02 00:00:00.000000"}}, }, { Query: "SELECT STR_TO_DATE('01/02/99 05:14:12 PM', '%m/%e/%y %r')", - Expected: []sql.Row{{"1999-01-02 17:14:12"}}, + Expected: []sql.UntypedSqlRow{{"1999-01-02 17:14:12"}}, }, { Query: "SELECT STR_TO_DATE('May 3, 10:23:00 2000', '%b %e, %H:%i:%s %Y')", - Expected: []sql.Row{{"2000-05-03 10:23:00"}}, + Expected: []sql.UntypedSqlRow{{"2000-05-03 10:23:00"}}, }, { Query: "SELECT STR_TO_DATE('May 3, 10:23:00 PM 2000', '%b %e, %h:%i:%s %p %Y')", - Expected: []sql.Row{{"2000-05-03 22:23:00"}}, + Expected: []sql.UntypedSqlRow{{"2000-05-03 22:23:00"}}, }, { Query: "SELECT STR_TO_DATE('May 3, 10:23:00 PM 2000', '%b %e, %H:%i:%s %p %Y')", // cannot use 24 hour time (%H) with AM/PM (%p) - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT STR_TO_DATE('abc','abc')", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT STR_TO_DATE('invalid', 'notvalid')", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, } @@ -11256,9 +11256,9 @@ var BrokenErrorQueries = []QueryErrorTest{ // validate the results. type WriteQueryTest struct { WriteQuery string - ExpectedWriteResult []sql.Row + ExpectedWriteResult []sql.UntypedSqlRow SelectQuery string - ExpectedSelect []sql.Row + ExpectedSelect []sql.UntypedSqlRow Bindings map[string]sqlparser.Expr Skip bool SkipServerEngine bool @@ -11275,93 +11275,93 @@ type GenericErrorQueryTest struct { 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"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row"}, + sql.UntypedSqlRow{int64(2), "second row"}, + sql.UntypedSqlRow{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"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row"}, + sql.UntypedSqlRow{int64(2), "second row"}, + sql.UntypedSqlRow{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)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, + sql.UntypedSqlRow{int64(2)}, + sql.UntypedSqlRow{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"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row"}, + sql.UntypedSqlRow{int64(2), "second row"}, + sql.UntypedSqlRow{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)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, + sql.UntypedSqlRow{int64(2)}, + sql.UntypedSqlRow{int64(3)}, }, }, { Query: "SELECT * FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row"}, }, }, { Query: "SELECT i FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, }, }, { Query: "SELECT myview2.i FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, }, }, { Query: "SELECT myview2.* FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row"}, }, }, { Query: "SELECT t.* FROM myview2 as t", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row"}, }, }, { Query: "SELECT t.i FROM myview2 as t", - Expected: []sql.Row{ - sql.NewRow(int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, }, }, // info schema support { 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", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), - sql.NewRow("def", "mydb", "myview2", "SELECT * FROM myview WHERE i = 1", "NONE", "YES", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{"def", "mydb", "myview", "SELECT * FROM mytable", "NONE", "YES", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, + sql.UntypedSqlRow{"def", "mydb", "myview2", "SELECT * FROM myview WHERE i = 1", "NONE", "YES", "root@localhost", "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"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{"myview"}, + sql.UntypedSqlRow{"myview2"}, }, }, } @@ -11369,85 +11369,85 @@ var ViewTests = []QueryTest{ var VersionedViewTests = []QueryTest{ { Query: "SELECT * FROM myview1 ORDER BY i", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row, 3", "1"), - sql.NewRow(int64(2), "second row, 3", "2"), - sql.NewRow(int64(3), "third row, 3", "3"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 3", "1"}, + sql.UntypedSqlRow{int64(2), "second row, 3", "2"}, + sql.UntypedSqlRow{int64(3), "third row, 3", "3"}, }, }, { Query: "SELECT t.* FROM myview1 AS t ORDER BY i", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row, 3", "1"), - sql.NewRow(int64(2), "second row, 3", "2"), - sql.NewRow(int64(3), "third row, 3", "3"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 3", "1"}, + sql.UntypedSqlRow{int64(2), "second row, 3", "2"}, + sql.UntypedSqlRow{int64(3), "third row, 3", "3"}, }, }, { 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)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, + sql.UntypedSqlRow{int64(2)}, + sql.UntypedSqlRow{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"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 1"}, + sql.UntypedSqlRow{int64(2), "second row, 1"}, + sql.UntypedSqlRow{int64(3), "third row, 1"}, }, }, // Nested views { Query: "SELECT * FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row, 3", "1"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 3", "1"}, }, }, { Query: "SELECT i FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, }, }, { Query: "SELECT myview2.i FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, }, }, { Query: "SELECT myview2.* FROM myview2", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row, 3", "1"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 3", "1"}, }, }, { Query: "SELECT t.* FROM myview2 as t", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row, 3", "1"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 3", "1"}, }, }, { Query: "SELECT t.i FROM myview2 as t", - Expected: []sql.Row{ - sql.NewRow(int64(1)), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1)}, }, }, { Query: "SELECT * FROM myview2 AS OF '2019-01-01'", - Expected: []sql.Row{ - sql.NewRow(int64(1), "first row, 1"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{int64(1), "first row, 1"}, }, }, // Views with unions { Query: "SELECT * FROM myview3 AS OF '2019-01-01'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"3"}, @@ -11458,7 +11458,7 @@ var VersionedViewTests = []QueryTest{ }, { Query: "SELECT * FROM myview3 AS OF '2019-01-02'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"3"}, @@ -11469,7 +11469,7 @@ var VersionedViewTests = []QueryTest{ }, { Query: "SELECT * FROM myview3 AS OF '2019-01-03'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1"}, {"2"}, {"3"}, @@ -11482,19 +11482,19 @@ var VersionedViewTests = []QueryTest{ // Views with subqueries { Query: "SELECT * FROM myview4 AS OF '2019-01-01'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row, 1"}, }, }, { Query: "SELECT * FROM myview4 AS OF '2019-01-02'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row, 2"}, }, }, { Query: "SELECT * FROM myview4 AS OF '2019-01-03'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row, 3", "3"}, }, }, @@ -11502,19 +11502,19 @@ var VersionedViewTests = []QueryTest{ // Views with subquery aliases { Query: "SELECT * FROM myview5 AS OF '2019-01-01'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row, 1"}, }, }, { Query: "SELECT * FROM myview5 AS OF '2019-01-02'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, "second row, 2"}, }, }, { Query: "SELECT * FROM myview5 AS OF '2019-01-03'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, "third row, 3", "3"}, }, }, @@ -11523,22 +11523,22 @@ var VersionedViewTests = []QueryTest{ { Query: "select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION, CHECK_OPTION, DEFINER, SECURITY_TYPE, " + "CHARACTER_SET_CLIENT, COLLATION_CONNECTION from information_schema.views where table_schema = 'mydb'", - Expected: []sql.Row{ - sql.NewRow("def", "mydb", "myview1", "SELECT * FROM myhistorytable", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), - sql.NewRow("def", "mydb", "myview2", "SELECT * FROM myview1 WHERE i = 1", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), - sql.NewRow("def", "mydb", "myview3", "SELECT i from myview1 union select s from myhistorytable", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), - sql.NewRow("def", "mydb", "myview4", "SELECT * FROM myhistorytable where i in (select distinct cast(RIGHT(s, 1) as signed) from myhistorytable)", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), - sql.NewRow("def", "mydb", "myview5", "SELECT * FROM (select * from myhistorytable where i in (select distinct cast(RIGHT(s, 1) as signed))) as sq", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{"def", "mydb", "myview1", "SELECT * FROM myhistorytable", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, + sql.UntypedSqlRow{"def", "mydb", "myview2", "SELECT * FROM myview1 WHERE i = 1", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, + sql.UntypedSqlRow{"def", "mydb", "myview3", "SELECT i from myview1 union select s from myhistorytable", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, + sql.UntypedSqlRow{"def", "mydb", "myview4", "SELECT * FROM myhistorytable where i in (select distinct cast(RIGHT(s, 1) as signed) from myhistorytable)", "NONE", "root@localhost", "DEFINER", "utf8mb4", "utf8mb4_0900_bin"}, + sql.UntypedSqlRow{"def", "mydb", "myview5", "SELECT * FROM (select * from myhistorytable where i in (select distinct cast(RIGHT(s, 1) as signed))) as sq", "NONE", "root@localhost", "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("myview1"), - sql.NewRow("myview2"), - sql.NewRow("myview3"), - sql.NewRow("myview4"), - sql.NewRow("myview5"), + Expected: []sql.UntypedSqlRow{ + sql.UntypedSqlRow{"myview1"}, + sql.UntypedSqlRow{"myview2"}, + sql.UntypedSqlRow{"myview3"}, + sql.UntypedSqlRow{"myview4"}, + sql.UntypedSqlRow{"myview5"}, }, }, } @@ -11546,40 +11546,40 @@ var VersionedViewTests = []QueryTest{ var ShowTableStatusQueries = []QueryTest{ { Query: `SHOW TABLE STATUS FROM mydb`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"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(88), uint64(264), 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{ + Expected: []sql.UntypedSqlRow{ {"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(88), uint64(264), 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{ + Expected: []sql.UntypedSqlRow{ {"othertable", "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 WHERE Name = 'mytable'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"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{ + Expected: []sql.UntypedSqlRow{ {"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(88), uint64(264), 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{ + Expected: []sql.UntypedSqlRow{ {"othertable", "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}, }, }, diff --git a/enginetest/queries/regex_queries.go b/enginetest/queries/regex_queries.go index cb82dfeaaa..713759880c 100644 --- a/enginetest/queries/regex_queries.go +++ b/enginetest/queries/regex_queries.go @@ -30,42 +30,42 @@ import ( type RegexTest struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow ExpectedErr *errors.Kind } var RegexTests = []RegexTest{ { Query: "SELECT REGEXP_LIKE('testing', 'TESTING');", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT REGEXP_LIKE('testing', 'TESTING', 'c');", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT REGEXP_LIKE('testing', 'TESTING', 'i');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT REGEXP_LIKE('testing', 'TESTING', 'ci');", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT REGEXP_LIKE('testing', 'TESTING', 'ic');", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT REGEXP_LIKE('testing', 'TESTING' COLLATE utf8mb4_0900_ai_ci);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "SELECT REGEXP_LIKE('testing', 'TESTING' COLLATE utf8mb4_0900_as_cs);", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "SELECT REGEXP_LIKE('testing' COLLATE utf8mb4_0900_ai_ci, 'TESTING') FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, {1}, @@ -73,7 +73,7 @@ var RegexTests = []RegexTest{ }, { Query: "SELECT i, s, REGEXP_LIKE(s, '[a-z]+d row') FROM mytable;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row", 0}, {2, "second row", 1}, {3, "third row", 1}, @@ -81,31 +81,31 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_REPLACE("0123456789", "[0-4]", "X")`, - Expected: []sql.Row{{"XXXXX56789"}}, + Expected: []sql.UntypedSqlRow{{"XXXXX56789"}}, }, { Query: `SELECT REGEXP_REPLACE("0123456789", "[0-4]", "X", 2)`, - Expected: []sql.Row{{"0XXXX56789"}}, + Expected: []sql.UntypedSqlRow{{"0XXXX56789"}}, }, { Query: `SELECT REGEXP_REPLACE("0123456789", "[0-4]", "X", 2, 2)`, - Expected: []sql.Row{{"01X3456789"}}, + Expected: []sql.UntypedSqlRow{{"01X3456789"}}, }, { Query: `SELECT REGEXP_REPLACE("TEST test TEST", "[a-z]", "X", 1, 0, "i")`, - Expected: []sql.Row{{"XXXX XXXX XXXX"}}, + Expected: []sql.UntypedSqlRow{{"XXXX XXXX XXXX"}}, }, { Query: `SELECT REGEXP_REPLACE("TEST test TEST", "[a-z]", "X", 1, 0, "c")`, - Expected: []sql.Row{{"TEST XXXX TEST"}}, + Expected: []sql.UntypedSqlRow{{"TEST XXXX TEST"}}, }, { Query: `SELECT REGEXP_REPLACE(CONCAT("abc123"), "[0-4]", "X")`, - Expected: []sql.Row{{"abcXXX"}}, + Expected: []sql.UntypedSqlRow{{"abcXXX"}}, }, { Query: `SELECT * FROM mytable WHERE s LIKE REGEXP_REPLACE("123456%r1o2w", "[0-9]", "")`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "first row"}, {2, "second row"}, {3, "third row"}, @@ -113,7 +113,7 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_REPLACE(s, "[a-z]", "X") from mytable`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"XXXXX XXX"}, {"XXXXXX XXX"}, {"XXXXX XXX"}, @@ -121,11 +121,11 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT 20 REGEXP '^[-]?2[0-9]+$'`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT 30 REGEXP '^[-]?2[0-9]+$'`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("", "(?Paaa)a");`, @@ -885,179 +885,179 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("abc", "abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("xbc", "abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("axc", "abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abx", "abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("xabcy", "abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ababc", "abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab*c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab*bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbc", "ab*bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab*bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab{0,}bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbc", "ab+bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab+bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abq", "ab+bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abq", "ab{1,}bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab+bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab{1,}bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab{1,3}bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab{3,4}bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab{4,5}bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abbc", "ab?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab{0,1}bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbbc", "ab?bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab{0,1}c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "^abc$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcc", "^abc$");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abcc", "^abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("aabc", "^abc$");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("aabc", "abc$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "^");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "a.c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("axc", "a.c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("axyzc", "a.*c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("axyzd", "a.*c");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abc", "a[bc]d");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abd", "a[bc]d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abd", "a[b-d]e");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ace", "a[b-d]e");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("aac", "a[b-d]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a-", "a[-b]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a-", "a[b-]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "a[b-a]");`, @@ -1073,47 +1073,47 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("a]", "a]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a]b", "a[]]b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("aed", "a[^bc]d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abd", "a[^bc]d");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("adc", "a[^-b]c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a-c", "a[^-b]c");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("a]c", "a[^]b]c");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("adc", "a[^]b]c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "ab|cd");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "ab|cd");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("def", "()ef");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "*a");`, @@ -1125,7 +1125,7 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("b", "$b");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("-", "a\\");`, @@ -1133,19 +1133,19 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("a(b", "a\\(b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "a\\(*b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a((b", "a\\(*b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a\\b", "a\\\\b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "abc)");`, @@ -1157,19 +1157,19 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("abc", "((a))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "(a)b(c)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("aabbabc", "a+b+c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("aabbabc", "a{1,}b{1,}c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "a**");`, @@ -1177,31 +1177,31 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("abcabc", "a.+?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "(a+|b)*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "(a+|b){0,}");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "(a+|b)+");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "(a+|b){1,}");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "(a+|b)?");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "(a+|b){0,1}");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", ")(");`, @@ -1209,135 +1209,135 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("cde", "[^ab]*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("", "abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("", "a*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abbbcd", "([abc])*d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "([abc])*bcd");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("e", "a|b|c|d|e");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ef", "(a|b|c|d|e)f");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcdefg", "abcd*efg");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("xabyabbbz", "ab*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("xayabbbz", "ab*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcde", "(ab|cd)e");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("hij", "[abhgefdc]ij");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcde", "^(ab|cd)e");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abcdef", "(abc|)ef");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "(a|b)c*d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "(ab|ab*)bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "a([bc]*)c*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "a([bc]*)(c*d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "a([bc]+)(c*d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "a([bc]*)(c+d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("adcdcde", "a[bcd]*dcdcde");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("adcdcde", "a[bcd]+dcdcde");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("abc", "(ab|a)b*c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcd", "((a)(b)c)(d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("alpha", "[a-zA-Z_][a-zA-Z0-9_]*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abh", "^a(bc+|b[eh])g|.h$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("effgz", "(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ij", "(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("effg", "(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("bcdd", "(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("reffgz", "(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a", "((((((((((a))))))))))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("aa", "((((((((((a))))))))))\\10");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("", "((((((((((a))))))))))\\41");`, @@ -1349,215 +1349,215 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("a", "(((((((((a)))))))))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("uh-uh", "multiple words of text");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("multiple words, yeah", "multiple words");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcde", "(.*)c(.*)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("(a, b)", "\\((.*), (.*)\\)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ab", "[k]");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ac", "a[-]?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcabc", "(abc)\\1");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abcabc", "([a-c]*)\\1");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("XBC", "(?i)abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("AXC", "(?i)abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABX", "(?i)abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("XABCY", "(?i)abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABABC", "(?i)abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab*c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab*bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBC", "(?i)ab*bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab*?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab{0,}?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBC", "(?i)ab+?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab+bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABQ", "(?i)ab+bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABQ", "(?i)ab{1,}bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab+bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab{1,}?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab{1,3}?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab{3,4}?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab{4,5}?bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABBC", "(?i)ab??bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab??bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab{0,1}?bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBBC", "(?i)ab??bc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab??c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab{0,1}?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)^abc$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCC", "(?i)^abc$");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABCC", "(?i)^abc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AABC", "(?i)^abc$");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("AABC", "(?i)abc$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)^");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)a.c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AXC", "(?i)a.c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AXYZC", "(?i)a.*?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AXYZD", "(?i)a.*c");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)a[bc]d");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABD", "(?i)a[bc]d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABD", "(?i)a[b-d]e");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ACE", "(?i)a[b-d]e");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AAC", "(?i)a[b-d]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A-", "(?i)a[-b]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A-", "(?i)a[b-]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "(?i)a[b-a]");`, @@ -1573,47 +1573,47 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("A]", "(?i)a]");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A]B", "(?i)a[]]b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AED", "(?i)a[^bc]d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABD", "(?i)a[^bc]d");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ADC", "(?i)a[^-b]c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A-C", "(?i)a[^-b]c");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("A]C", "(?i)a[^]b]c");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ADC", "(?i)a[^]b]c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)ab|cd");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)ab|cd");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("DEF", "(?i)()ef");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "(?i)*a");`, @@ -1625,7 +1625,7 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("B", "(?i)$b");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("-", "(?i)a\\");`, @@ -1633,19 +1633,19 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("A(B", "(?i)a\\(b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)a\\(*b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A((B", "(?i)a\\(*b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A\\B", "(?i)a\\\\b");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "(?i)abc)");`, @@ -1657,19 +1657,19 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)((a))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)(a)b(c)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AABBABC", "(?i)a+b+c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AABBABC", "(?i)a{1,}b{1,}c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "(?i)a**");`, @@ -1677,43 +1677,43 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("ABCABC", "(?i)a.+?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCABC", "(?i)a.*?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCABC", "(?i)a.{0,5}?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b)*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b){0,}");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b)+");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b){1,}");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b)?");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b){0,1}");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)(a+|b){0,1}?");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("-", "(?i))(");`, @@ -1721,223 +1721,223 @@ var RegexTests = []RegexTest{ }, { Query: `SELECT REGEXP_LIKE("CDE", "(?i)[^ab]*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("", "(?i)abc");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("", "(?i)a*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABBBCD", "(?i)([abc])*d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)([abc])*bcd");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("E", "(?i)a|b|c|d|e");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("EF", "(?i)(a|b|c|d|e)f");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCDEFG", "(?i)abcd*efg");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("XABYABBBZ", "(?i)ab*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("XAYABBBZ", "(?i)ab*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCDE", "(?i)(ab|cd)e");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("HIJ", "(?i)[abhgefdc]ij");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCDE", "(?i)^(ab|cd)e");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABCDEF", "(?i)(abc|)ef");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)(a|b)c*d");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)(ab|ab*)bc");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)a([bc]*)c*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)a([bc]*)(c*d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)a([bc]+)(c*d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)a([bc]*)(c+d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ADCDCDE", "(?i)a[bcd]*dcdcde");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ADCDCDE", "(?i)a[bcd]+dcdcde");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ABC", "(?i)(ab|a)b*c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCD", "(?i)((a)(b)c)(d)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ALPHA", "(?i)[a-zA-Z_][a-zA-Z0-9_]*");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABH", "(?i)^a(bc+|b[eh])g|.h$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("EFFGZ", "(?i)(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("IJ", "(?i)(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("EFFG", "(?i)(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("BCDD", "(?i)(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("REFFGZ", "(?i)(bc+d$|ef*g.|h?i(j|k))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A", "(?i)((((((((((a))))))))))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AA", "(?i)((((((((((a))))))))))\\10");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A", "(?i)(((((((((a)))))))))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("A", "(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("C", "(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("UH-UH", "(?i)multiple words of text");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("MULTIPLE WORDS, YEAH", "(?i)multiple words");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCDE", "(?i)(.*)c(.*)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("(A, B)", "(?i)\\((.*), (.*)\\)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "(?i)[k]");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("AC", "(?i)a[-]?c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCABC", "(?i)(abc)\\1");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ABCABC", "(?i)([a-c]*)\\1");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abad", "a(?!b).");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abad", "a(?=d).");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abad", "a(?=c|d).");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ace", "a(?:b|c|d)(.)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ace", "a(?:b|c|d)*(.)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ace", "a(?:b|c|d)+?(.)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("ace", "a(?:b|(c|e){1,2}?|d)+?(.)");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("AB", "^(.+)?B");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("a:bc-:de:f", "(?b", "a[^>]*?b");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("foo", "^a*?$");`, - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: `SELECT REGEXP_LIKE("ab", "^((a)c)?(ab)$");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "^([ab]*?)(?=(b)?)c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "^([ab]*?)(?!(b))c");`, - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: `SELECT REGEXP_LIKE("abc", "^([ab]*?)(? 0", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "select a.y from xy a join xy b on a.y = b.y limit 1", - Expected: []sql.Row{{"x"}}, + Expected: []sql.UntypedSqlRow{{"x"}}, }, { Query: "select y from xy where y = 'x' limit 1", - Expected: []sql.Row{{"x"}}, + Expected: []sql.UntypedSqlRow{{"x"}}, }, }, }, @@ -223,19 +223,19 @@ CREATE TABLE sourceTable_test ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO table1 (name, parentId) VALUES ('tbl1 row 1', NULL);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "INSERT INTO table1 (name, parentId) VALUES ('tbl1 row 2', 1);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "INSERT INTO table1 (name, parentId) VALUES ('tbl1 row 3', NULL);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 3}}}, }, { Query: "select * from table1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "tbl1 row 1", nil}, {2, "tbl1 row 2", 1}, {3, "tbl1 row 3", nil}, @@ -258,51 +258,51 @@ CREATE TABLE sourceTable_test ( Assertions: []ScriptTestAssertion{ { Query: "select * from pk where x = '3'", - Expected: []sql.Row{{"3"}}, + Expected: []sql.UntypedSqlRow{{"3"}}, }, { Query: "delete from pk where x = '3' ", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from pk", - Expected: []sql.Row{{"30"}, {"3#"}}, + Expected: []sql.UntypedSqlRow{{"30"}, {"3#"}}, }, { Query: "select * from uniq where x = '3'", - Expected: []sql.Row{{1, "3"}}, + Expected: []sql.UntypedSqlRow{{1, "3"}}, }, { Query: "delete from uniq where x = '3' ", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from uniq", - Expected: []sql.Row{{2, "30"}, {3, "3#"}}, + Expected: []sql.UntypedSqlRow{{2, "30"}, {3, "3#"}}, }, { Query: "select * from noncov where x = '3'", - Expected: []sql.Row{{1, "3", 1}}, + Expected: []sql.UntypedSqlRow{{1, "3", 1}}, }, { Query: "delete from noncov where x = '3' ", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from noncov", - Expected: []sql.Row{{2, "30", 2}, {3, "3#", 3}}, + Expected: []sql.UntypedSqlRow{{2, "30", 2}, {3, "3#", 3}}, }, { Query: "select * from keyless where x = '3'", - Expected: []sql.Row{{1, "3"}}, + Expected: []sql.UntypedSqlRow{{1, "3"}}, }, { Query: "delete from keyless where x = '3' ", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from keyless", - Expected: []sql.Row{{2, "30"}, {3, "3#"}}, + Expected: []sql.UntypedSqlRow{{2, "30"}, {3, "3#"}}, }, }, }, @@ -315,7 +315,7 @@ CREATE TABLE sourceTable_test ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM mytable order by pk", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "INSERT INTO mytable VALUES (1)", @@ -344,7 +344,7 @@ CREATE TABLE sourceTable_test ( JOIN (VALUES ROW(1, 10), ROW(2,20)) joined (id, value) ON joined.id = entity_test.id SET entity_test.value = joined.value;`, - Expected: []sql.Row{{types.OkResult{Info: plan.UpdateInfo{Matched: 2}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{Info: plan.UpdateInfo{Matched: 2}}}}, }, }, }, @@ -358,19 +358,19 @@ SET entity_test.value = joined.value;`, Assertions: []ScriptTestAssertion{ { Query: "update t join (select 1 from t) as tt set t.k = 30;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, 999, 30}}, + Expected: []sql.UntypedSqlRow{{1, 999, 30}}, }, { Query: "update t join (select 1, 2, 3, 4, 5 from t) as tt set t.k = 30;", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, 999, 30}}, + Expected: []sql.UntypedSqlRow{{1, 999, 30}}, }, }, }, @@ -384,19 +384,19 @@ SET entity_test.value = joined.value;`, Assertions: []ScriptTestAssertion{ { Query: "update t join (select 1 from t) as tt set t.k = 30;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, 2, 999}}, + Expected: []sql.UntypedSqlRow{{1, 2, 999}}, }, { Query: "update t join (select 1, 2, 3, 4, 5 from t) as tt set t.k = 30;", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, 2, 999}}, + Expected: []sql.UntypedSqlRow{{1, 2, 999}}, }, }, }, @@ -410,25 +410,25 @@ SET entity_test.value = joined.value;`, Assertions: []ScriptTestAssertion{ { Query: "update t join (select 1 from t) as tt set t.k = 30 where t.i = 1;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from t;", - Expected: []sql.Row{{1, 2, 999}}, + Expected: []sql.UntypedSqlRow{{1, 2, 999}}, }, { // TODO: should throw can't update error Skip: true, Query: "update t join (select i, j, k from t) as tt set t.k = 30 where t.i = 1;", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, }, { Query: "update t join (select 1 from t) as tt set t.k = 30 limit 1;", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, }, { Query: "update t join (select 1 from t) as tt set t.k = 30 limit 1 offset 1;", - Expected: []sql.Row{{newUpdateResult(0, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(0, 0)}}, }, }, }, @@ -458,27 +458,27 @@ SET entity_test.value = joined.value;`, Assertions: []ScriptTestAssertion{ { Query: "UPDATE test_users JOIN (SELECT 1 FROM test_users) AS tu SET test_users.favorite_number = 42;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from test_users;", - Expected: []sql.Row{{1, "john", "doe", 0, 42}}, + Expected: []sql.UntypedSqlRow{{1, "john", "doe", 0, 42}}, }, { Query: "UPDATE test_users JOIN (SELECT id, 1 FROM test_users) AS tu SET test_users.favorite_number = 420;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from test_users;", - Expected: []sql.Row{{1, "john", "doe", 0, 420}}, + Expected: []sql.UntypedSqlRow{{1, "john", "doe", 0, 420}}, }, { Query: "UPDATE test_users JOIN (SELECT id, 1 FROM test_users) AS tu SET test_users.deleted = 1;", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "select * from test_users;", - Expected: []sql.Row{{1, "john", "", 1, 420}}, + Expected: []sql.UntypedSqlRow{{1, "john", "", 1, 420}}, }, }, }, @@ -498,11 +498,11 @@ CREATE TABLE table2 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO table1 (name) VALUES ('tbl1 row 1');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "INSERT INTO table1 (name) VALUES ('tbl1 row 2');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, }, }, @@ -521,12 +521,12 @@ create table t ( Assertions: []ScriptTestAssertion{ { Query: "select * from t where to_ = 'L1' and from_ = 'L2'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, ExpectedIndexes: []string{"to_"}, }, { Query: "select * from t where BIN_TO_UUID(id) = '0' and to_ = 'L1' and from_ = 'L2'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, ExpectedIndexes: []string{"to_"}, }, }, @@ -553,7 +553,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select count(*) from tab3 WHERE (80 < col0 AND (((col0 BETWEEN 87 AND 9 OR (((col0 IS NULL)))))) AND (71.70 <= col1 OR 94 <= col0 AND ((66 > col0) OR (85 = col0 AND ((42.15 >= col1))) OR 30 = col0)));", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, }, }, @@ -568,7 +568,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from a", - Expected: []sql.Row{{0, .00005}, {1, .00005}}, + Expected: []sql.UntypedSqlRow{{0, .00005}, {1, .00005}}, }, }, }, @@ -600,7 +600,7 @@ CREATE TABLE tab3 ( Type: types.Int64, }, }, - Expected: []sql.Row{{1, 2}, {3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2}, {3, 4}}, }, { Query: "select i, k from `left` union select i, k from `right`", @@ -614,7 +614,7 @@ CREATE TABLE tab3 ( Type: types.LongText, }, }, - Expected: []sql.Row{{1, "a"}, {3, "b"}}, + Expected: []sql.UntypedSqlRow{{1, "a"}, {3, "b"}}, }, { Query: "select i, j, k from `left` union select i, j, k from `right`", @@ -632,7 +632,7 @@ CREATE TABLE tab3 ( Type: types.LongText, }, }, - Expected: []sql.Row{{1, 2, "a"}, {3, 4, "b"}}, + Expected: []sql.UntypedSqlRow{{1, 2, "a"}, {3, 4, "b"}}, }, { Query: "select i, k from `left` union select i, j, k from `right`", @@ -646,7 +646,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -660,7 +660,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -674,7 +674,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -688,7 +688,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -702,7 +702,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -716,7 +716,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -731,7 +731,7 @@ CREATE TABLE tab3 ( Type: types.Int32, }, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -789,27 +789,27 @@ CREATE TABLE tab3 ( // Intersect tests { Query: "table a intersect table b order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {3, 4}, }, }, { Query: "table a intersect table c order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 4}, }, }, { Query: "table c intersect distinct table c order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {3, 4}, }, }, { Query: "table c intersect all table c order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {1, 3}, {3, 4}, @@ -817,26 +817,26 @@ CREATE TABLE tab3 ( }, { Query: "table a intersect table b intersect table c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 4}, }, }, { Query: "(table b order by m limit 1 offset 1) intersect (table c order by m limit 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, }, }, { Query: "table x intersect table y order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, }, }, { Query: "table x intersect table y order by 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, }, @@ -845,7 +845,7 @@ CREATE TABLE tab3 ( // Resulting type is string for some reason Skip: true, Query: "table t1 intersect table t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, }, @@ -854,65 +854,65 @@ CREATE TABLE tab3 ( // Except tests { Query: "table a except table b order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 3}, }, }, { Query: "table a except table c order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 3}, }, }, { Query: "table b except table c order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, { Query: "table c except distinct table a order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, }, }, { Query: "table c except all table a order by m, n;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {1, 3}, }, }, { Query: "(table a order by m limit 1 offset 1) except (table c order by m limit 1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 3}, }, }, { Query: "table a except table b except table c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 3}, }, }, { Query: "table x except table y order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "table l except table r;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "table l except distinct table r;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "table l except all table r;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, }, @@ -921,20 +921,20 @@ CREATE TABLE tab3 ( // Multiple set operation tests { Query: "table a except table b intersect table c order by m;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 3}, }, }, { Query: "table a intersect table b except table c order by m;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, { Query: "table a union table a intersect table b except table c order by m;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 3}, }, @@ -943,20 +943,20 @@ CREATE TABLE tab3 ( // CTE tests { Query: "with cte as (table a union table a intersect table b except table c order by m) select * from cte", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 3}, }, }, { Query: "with recursive cte(x) as (select 1) select * from cte", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "with recursive cte (x,y) as (select 1, 1 intersect select 1, 1 union select x + 1, y + 2 from cte where x < 5) select * from cte;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 3}, {3, 5}, @@ -978,7 +978,7 @@ CREATE TABLE tab3 ( " FROM ladder JOIN rt WHERE ladder.foo = rt.foo\n" + " )\n" + "SELECT * FROM ladder;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {1, nil}, {1, nil}, @@ -1027,7 +1027,7 @@ CREATE TABLE tab3 ( Type: types.MustCreateStringWithDefaults(sqltypes.VarChar, 20), }, }, - Expected: []sql.Row{{"a", "b", "c", "d", "e"}}, + Expected: []sql.UntypedSqlRow{{"a", "b", "c", "d", "e"}}, }, }, }, @@ -1053,11 +1053,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: `alter table t modify column c1 int unsigned`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c1", "int unsigned", "YES", "", nil, ""}, {"c2", "varchar(200)", "YES", "", nil, ""}, {"c3", "enum('one','two')", "YES", "", nil, ""}, @@ -1065,26 +1065,26 @@ CREATE TABLE tab3 ( }, { Query: `alter table t drop column c1;`, - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c2", "varchar(200)", "YES", "", nil, ""}, {"c3", "enum('one','two')", "YES", "", nil, ""}, }, }, { Query: "alter table t add column new3 int;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: `insert into t values ('two', 'two', -2);`, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"c2", "varchar(200)", "YES", "", nil, ""}, {"c3", "enum('one','two')", "YES", "", nil, ""}, {"new3", "int", "YES", "", nil, ""}, @@ -1092,7 +1092,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t;", - Expected: []sql.Row{{"one", nil, nil}, {"two", "two", -2}}, + Expected: []sql.UntypedSqlRow{{"one", nil, nil}, {"two", "two", -2}}, }, }, }, @@ -1105,27 +1105,27 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from xy order by y asc limit 1", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.UntypedSqlRow{{1, 0}}, }, { Query: "select * from xy order by y asc limit 1 offset 1", - Expected: []sql.Row{{2, 0}}, + Expected: []sql.UntypedSqlRow{{2, 0}}, }, { Query: "select * from xy order by y asc limit 1 offset 2", - Expected: []sql.Row{{3, 0}}, + Expected: []sql.UntypedSqlRow{{3, 0}}, }, { Query: "select * from xy order by y asc limit 1 offset 3", - Expected: []sql.Row{{4, 0}}, + Expected: []sql.UntypedSqlRow{{4, 0}}, }, { Query: "(select * from xy order by y asc limit 1 offset 1) union (select * from xy order by y asc limit 1 offset 2)", - Expected: []sql.Row{{2, 0}, {3, 0}}, + Expected: []sql.UntypedSqlRow{{2, 0}, {3, 0}}, }, { Query: "with recursive cte as ((select * from xy order by y asc limit 1 offset 1) union (select * from xy order by y asc limit 1 offset 2)) select * from cte", - Expected: []sql.Row{{2, 0}, {3, 0}}, + Expected: []sql.UntypedSqlRow{{2, 0}, {3, 0}}, }, }, }, @@ -1138,11 +1138,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO enumtest1 VALUES (1, 'abc'), (2, 'abc'), (3, 'XYZ');", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "SELECT * FROM enumtest1;", - Expected: []sql.Row{{1, "abc"}, {2, "abc"}, {3, "XYZ"}}, + Expected: []sql.UntypedSqlRow{{1, "abc"}, {2, "abc"}, {3, "XYZ"}}, }, { // enum values must match EXACTLY for case-sensitive collations @@ -1151,36 +1151,36 @@ CREATE TABLE tab3 ( }, { Query: "SHOW CREATE TABLE enumtest1;", - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "enumtest1", "CREATE TABLE `enumtest1` (\n `pk` int NOT NULL,\n `e` enum('abc','XYZ'),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { // Trailing whitespace should be removed from enum values, except when using the "binary" charset and collation Query: "SHOW CREATE TABLE enumtest2;", - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "enumtest2", "CREATE TABLE `enumtest2` (\n `pk` int NOT NULL,\n `e` enum('x','X','y','Y'),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "DESCRIBE enumtest1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"e", "enum('abc','XYZ')", "YES", "", nil, ""}}, }, { Query: "DESCRIBE enumtest2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"e", "enum('x','X','y','Y')", "YES", "", nil, ""}}, }, { Query: "select data_type, column_type from information_schema.columns where table_name='enumtest1' and column_name='e';", - Expected: []sql.Row{{"enum", "enum('abc','XYZ')"}}, + Expected: []sql.UntypedSqlRow{{"enum", "enum('abc','XYZ')"}}, }, { Query: "select data_type, column_type from information_schema.columns where table_name='enumtest2' and column_name='e';", - Expected: []sql.Row{{"enum", "enum('x','X','y','Y')"}}, + Expected: []sql.UntypedSqlRow{{"enum", "enum('x','X','y','Y')"}}, }, }, }, @@ -1192,31 +1192,31 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO enumtest1 VALUES (1, 'abc'), (2, 'abc'), (3, 'XYZ');", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "SHOW CREATE TABLE enumtest1;", - Expected: []sql.Row{{ + Expected: []sql.UntypedSqlRow{{ "enumtest1", "CREATE TABLE `enumtest1` (\n `pk` int NOT NULL,\n `e` enum('abc','XYZ') COLLATE utf8mb4_0900_ai_ci,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "DESCRIBE enumtest1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"e", "enum('abc','XYZ') COLLATE utf8mb4_0900_ai_ci", "YES", "", nil, ""}}, }, { Query: "select data_type, column_type from information_schema.columns where table_name='enumtest1' and column_name='e';", - Expected: []sql.Row{{"enum", "enum('abc','XYZ')"}}, + Expected: []sql.UntypedSqlRow{{"enum", "enum('abc','XYZ')"}}, }, { Query: "CREATE TABLE enumtest2 (pk int PRIMARY KEY, e enum('x ', 'X ', 'y', 'Y'));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO enumtest1 VALUES (10, 'ABC'), (11, 'aBc'), (12, 'xyz');", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, }, }, @@ -1233,7 +1233,7 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {4, 4}, {5, 5}}, }, { Query: "UPDATE test SET pk = pk + 1 ORDER BY pk;", @@ -1241,7 +1241,7 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {4, 4}, {5, 5}}, }, }, }, @@ -1260,11 +1260,11 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {4, 4}, {5, 5}}, }, { Query: "SELECT * FROM test2;", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "REPLACE INTO test VALUES (1,7), (4,8), (5,9);", @@ -1272,11 +1272,11 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 1}, {4, 4}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {4, 4}, {5, 5}}, }, { Query: "SELECT * FROM test2;", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, }, }, @@ -1288,7 +1288,7 @@ CREATE TABLE tab3 ( "delete from a where x in (1, 3)", }, Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, @@ -1301,7 +1301,7 @@ CREATE TABLE tab3 ( "INSERT INTO t1 VALUES(NULL,'NULL')", }, Query: "SELECT count(DISTINCT x) FROM t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -1340,7 +1340,7 @@ CREATE TABLE tab3 ( "INSERT INTO tab4 SELECT * FROM tab0", }, Query: "SELECT pk FROM tab2 WHERE 78 < col0 AND 19 < col3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {7}, }, }, @@ -1357,7 +1357,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select ya from a join b on ya - 1= xb join c on xc = zb - 2", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, }, }, @@ -1374,7 +1374,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select za from a join b on ya - 1 = xb join c on xa = xc", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, }, }, @@ -1391,7 +1391,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select xa from a join b on xa = yb - 1 join c on yb - 1 = xc", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1410,7 +1410,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1429,7 +1429,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1448,7 +1448,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1467,7 +1467,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1486,7 +1486,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1506,7 +1506,7 @@ CREATE TABLE tab3 ( // { // // gives an error in mysql, a needs an alias // Query: "select xa from d join a on yd = xa join c on yd = xc join a on xa = yd", - // Expected: []sql.Row{{1}}, + // Expected: []sql.UntypedSqlRow{{1}}, // }, // }, // }, @@ -1525,7 +1525,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1550,7 +1550,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1563,27 +1563,27 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: `SELECT IS_UUID(UUID())`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT IS_UUID(@uuid)`, - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: `SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid))`, - Expected: []sql.Row{{"6ccd780c-baba-1026-9564-5b8c656024db"}}, + Expected: []sql.UntypedSqlRow{{"6ccd780c-baba-1026-9564-5b8c656024db"}}, }, { Query: `SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid, 1), 1)`, - Expected: []sql.Row{{"6ccd780c-baba-1026-9564-5b8c656024db"}}, + Expected: []sql.UntypedSqlRow{{"6ccd780c-baba-1026-9564-5b8c656024db"}}, }, { Query: `SELECT UUID_TO_BIN(NULL)`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT HEX(UUID_TO_BIN(@uuid))`, - Expected: []sql.Row{{"6CCD780CBABA102695645B8C656024DB"}}, + Expected: []sql.UntypedSqlRow{{"6CCD780CBABA102695645B8C656024DB"}}, }, { Query: `SELECT UUID_TO_BIN(123)`, @@ -1595,15 +1595,15 @@ CREATE TABLE tab3 ( }, { Query: `SELECT BIN_TO_UUID(X'00112233445566778899aabbccddeeff')`, - Expected: []sql.Row{{"00112233-4455-6677-8899-aabbccddeeff"}}, + Expected: []sql.UntypedSqlRow{{"00112233-4455-6677-8899-aabbccddeeff"}}, }, { Query: `SELECT BIN_TO_UUID('0011223344556677')`, - Expected: []sql.Row{{"30303131-3232-3333-3434-353536363737"}}, + Expected: []sql.UntypedSqlRow{{"30303131-3232-3333-3434-353536363737"}}, }, { Query: `SELECT BIN_TO_UUID(@binuuid)`, - Expected: []sql.Row{{"30303131-3232-3333-3434-353536363737"}}, + Expected: []sql.UntypedSqlRow{{"30303131-3232-3333-3434-353536363737"}}, }, }, }, @@ -1626,24 +1626,24 @@ CREATE TABLE tab3 ( // SELECT INTO has an empty result schema // https://github.com/dolthub/dolt/issues/6105 Query: `SELECT 1 INTO @abc`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, ExpectedColumns: nil, }, { Query: `SELECT @abc`, - Expected: []sql.Row{{int8(1)}}, + Expected: []sql.UntypedSqlRow{{int8(1)}}, }, { Query: `SELECT @z, @x, @y`, - Expected: []sql.Row{{88, 22, 44}}, + Expected: []sql.UntypedSqlRow{{88, 22, 44}}, }, { Query: `SELECT @myVar, @mustSingleVar`, - Expected: []sql.Row{{3, "b"}}, + Expected: []sql.UntypedSqlRow{{3, "b"}}, }, { Query: `SELECT @myId, @myText, @myUnion`, - Expected: []sql.Row{{2, "m", nil}}, + Expected: []sql.UntypedSqlRow{{2, "m", nil}}, }, { Query: `SELECT id FROM tab1 ORDER BY id DESC INTO @myvar`, @@ -1681,11 +1681,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT pk from test.x", - Expected: []sql.Row{{1}, {300}}, + Expected: []sql.UntypedSqlRow{{1}, {300}}, }, { Query: "SELECT * from a", - Expected: []sql.Row{{1, 2, 3}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3}}, }, }, }, @@ -1730,260 +1730,260 @@ CREATE TABLE tab3 ( // The initial value of last_insert_uuid() is an empty string { Query: "select last_insert_uuid()", - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, // invalid table – UUID default is not a primary key, so last_insert_uuid() doesn't get udpated { Query: "insert into invalid values (1, DEFAULT);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select last_insert_uuid()", - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, { Query: "insert into invalid values (2, UUID());", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select last_insert_uuid()", - Expected: []sql.Row{{""}}, + Expected: []sql.UntypedSqlRow{{""}}, }, // varchar(36) test cases... { Query: "insert into varchar36 values (DEFAULT, 1);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from varchar36 where i=1);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into varchar36 values (UUID(), 2), (UUID(), 3);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { // last_insert_uuid() reports the first UUID() generated in the last insert statement Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from varchar36 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into varchar36 values ('notta-uuid', 4);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { // The previous insert didn't generate a UUID, so last_insert_uuid() doesn't get updated Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from varchar36 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, // char(36) test cases... { Query: "insert into char36 values (DEFAULT, 1);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from char36 where i=1);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into char36 values (UUID(), 2), (UUID(), 3);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { // last_insert_uuid() reports the first UUID() generated in the last insert statement Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from char36 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into char36 values ('notta-uuid', 4);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { // The previous insert didn't generate a UUID, so last_insert_uuid() doesn't get updated Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from char36 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into char36 (i) values (5);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from char36 where i=5);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, // varbinary(16) test cases... { Query: "insert into varbinary16 values (DEFAULT, 1);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from varbinary16 where i=1);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into varbinary16 values (UUID_to_bin(UUID()), 2), (UUID_to_bin(UUID()), 3);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { // last_insert_uuid() reports the first UUID() generated in the last insert statement Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from varbinary16 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into varbinary16 values ('notta-uuid', 4);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { // The previous insert didn't generate a UUID, so last_insert_uuid() doesn't get updated Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from varbinary16 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, // binary(16) test cases... { Query: "insert into binary16 values (DEFAULT, 1);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from binary16 where i=1);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into binary16 values (UUID_to_bin(UUID()), 2), (UUID_to_bin(UUID()), 3);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { // last_insert_uuid() reports the first UUID() generated in the last insert statement Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from binary16 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into binary16 values ('notta-uuid', 4);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { // The previous insert didn't generate a UUID, so last_insert_uuid() doesn't get updated Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from binary16 where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into binary16 (i) values (5);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk) from binary16 where i=5);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, // binary(16) with UUID_to_bin swap test cases... { Query: "insert into binary16swap values (DEFAULT, 1);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk, true) from binary16swap where i=1);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into binary16swap values (UUID_to_bin(UUID(), true), 2), (UUID_to_bin(UUID(), true), 3);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { // last_insert_uuid() reports the first UUID() generated in the last insert statement Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk, true) from binary16swap where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into binary16swap values ('notta-uuid', 4);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { // The previous insert didn't generate a UUID, so last_insert_uuid() doesn't get updated Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk, true) from binary16swap where i=2);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { Query: "insert into binary16swap (i) values (5);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select bin_to_uuid(pk, true) from binary16swap where i=5);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, // INSERT INTO ... SELECT ... Tests { // If we populate the UUID column (pk) with its implicit default, then it updates last_insert_uuid() Query: "insert into varchar36 (i) select 42 from dual;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from varchar36 where i=42);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, { // If all values come from another table, the auto_uuid value shouldn't be generated, so last_insert_uuid() doesn't change Query: "insert into varchar36 (pk, i) (select 'one', 101 from dual union all select 'two', 202);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2}}}, }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select pk from varchar36 where i=42);", - Expected: []sql.Row{{true, true}}, + Expected: []sql.UntypedSqlRow{{true, true}}, }, // Prepared statements { // Test with an insert statement that implicit uses the UUID column default Query: `prepare stmt1 from "insert into prepared (c1) values ('odd'), ('even')";`, - Expected: []sql.Row{{types.OkResult{Info: plan.PrepareInfo{}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{Info: plan.PrepareInfo{}}}}, }, { Query: "execute stmt1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 1}}}, - SkipResultCheckOnServerEngine: true, // Server engine returns []sql.Row{} + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 1}}}, + SkipResultCheckOnServerEngine: true, // Server engine returns []sql.UntypedSqlRow{} }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select uuid from prepared where ai=1), last_insert_id();", - Expected: []sql.Row{{true, true, uint64(1)}}, + Expected: []sql.UntypedSqlRow{{true, true, uint64(1)}}, }, { // Executing the prepared statement a second time should refresh last_insert_uuid() Query: "execute stmt1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 3}}}, - SkipResultCheckOnServerEngine: true, // Server engine returns []sql.Row{} + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 3}}}, + SkipResultCheckOnServerEngine: true, // Server engine returns []sql.UntypedSqlRow{} }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select uuid from prepared where ai=3), last_insert_id();", - Expected: []sql.Row{{true, true, uint64(3)}}, + Expected: []sql.UntypedSqlRow{{true, true, uint64(3)}}, }, { // Test with an insert statement that explicitly uses the UUID column default Query: `prepare stmt2 from "insert into prepared (uuid, c1) values (DEFAULT, 'more'), (DEFAULT, 'less')";`, - Expected: []sql.Row{{types.OkResult{Info: plan.PrepareInfo{}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{Info: plan.PrepareInfo{}}}}, }, { Query: "execute stmt2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 5}}}, - SkipResultCheckOnServerEngine: true, // Server engine returns []sql.Row{} + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 5}}}, + SkipResultCheckOnServerEngine: true, // Server engine returns []sql.UntypedSqlRow{} }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select uuid from prepared where ai=5), last_insert_id();", - Expected: []sql.Row{{true, true, uint64(5)}}, + Expected: []sql.UntypedSqlRow{{true, true, uint64(5)}}, }, { // Executing the prepared statement a second time should refresh last_insert_uuid() Query: "execute stmt2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 7}}}, - SkipResultCheckOnServerEngine: true, // Server engine returns []sql.Row{} + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 7}}}, + SkipResultCheckOnServerEngine: true, // Server engine returns []sql.UntypedSqlRow{} }, { Query: "select is_uuid(last_insert_uuid()), last_insert_uuid() = (select uuid from prepared where ai=7), last_insert_id();", - Expected: []sql.Row{{true, true, uint64(7)}}, + Expected: []sql.UntypedSqlRow{{true, true, uint64(7)}}, }, }, }, @@ -1996,45 +1996,45 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "insert into a (x,y) values (1,1)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 0}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(0)}}, + Expected: []sql.UntypedSqlRow{{uint64(0)}}, }, { Query: "insert into a (y) values (1)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(2)}}, + Expected: []sql.UntypedSqlRow{{uint64(2)}}, }, { Query: "insert into a (y) values (2), (3)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 3}}}, }, { // last_insert_id() should return the insert id of the *first* value inserted in the last statement Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(3)}}, + Expected: []sql.UntypedSqlRow{{uint64(3)}}, }, { Query: "insert into b (x) values (1), (2)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 3}}}, }, { // The above query doesn't have an auto increment column, so last_insert_id is unchanged Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(3)}}, + Expected: []sql.UntypedSqlRow{{uint64(3)}}, }, { Query: "insert into a (x, y) values (-100, 10)", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 3, }}}, @@ -2042,11 +2042,11 @@ CREATE TABLE tab3 ( { // last_insert_id() should not update for manually inserted values Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(3)}}, + Expected: []sql.UntypedSqlRow{{uint64(3)}}, }, { Query: "insert into a (x, y) values (100, 10)", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 3, }}}, @@ -2054,7 +2054,7 @@ CREATE TABLE tab3 ( { // last_insert_id() should not update for manually inserted values Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(3)}}, + Expected: []sql.UntypedSqlRow{{uint64(3)}}, }, }, }, @@ -2066,31 +2066,31 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "insert into a (y) values (1)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(1)}}, + Expected: []sql.UntypedSqlRow{{uint64(1)}}, }, { Query: "insert into a (x, y) values (1, 1) on duplicate key update y = 2, x=last_insert_id(x)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 1}}}, }, { Query: "select * from a order by x", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(1)}}, + Expected: []sql.UntypedSqlRow{{uint64(1)}}, }, { Query: "insert into a (y) values (100)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{{uint64(2)}}, + Expected: []sql.UntypedSqlRow{{uint64(2)}}, }, }, }, @@ -2102,34 +2102,34 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "insert into t(pk) values (default);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(1)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, { Query: "insert into t(pk) values (default), (default), (default), (default), (default);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 5, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 5, InsertID: 2}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(2)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2141,17 +2141,17 @@ CREATE TABLE tab3 ( { Query: "insert into t(pk) values (10), (default);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 11}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 11}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(11)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2165,17 +2165,17 @@ CREATE TABLE tab3 ( { Query: "insert into t(pk) values (20), (default), (default);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 3, InsertID: 21}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 3, InsertID: 21}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(21)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2192,17 +2192,17 @@ CREATE TABLE tab3 ( { Query: "insert into t(i) values (100);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 23}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 23}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(23)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2220,17 +2220,17 @@ CREATE TABLE tab3 ( { Query: "insert into t(i, pk) values (200, default);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 24}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 24}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(24)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2249,17 +2249,17 @@ CREATE TABLE tab3 ( { Query: "insert into t(pk) values (null);", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 25}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 25}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(25)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2279,17 +2279,17 @@ CREATE TABLE tab3 ( { Query: "insert into t values ();", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 26}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 26}}}, }, { Query: "select last_insert_id()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(26)}, }, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, @@ -2318,31 +2318,31 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select row_count()", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "replace into b values (1)", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select row_count()", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "select row_count()", - Expected: []sql.Row{{-1}}, + Expected: []sql.UntypedSqlRow{{-1}}, }, { Query: "select count(*) from b", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select row_count()", - Expected: []sql.Row{{-1}}, + Expected: []sql.UntypedSqlRow{{-1}}, }, { Query: "update b set x = x + 10 where x <> 2", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 3, Info: plan.UpdateInfo{ Matched: 3, @@ -2352,35 +2352,35 @@ CREATE TABLE tab3 ( }, { Query: "select row_count()", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "select row_count()", - Expected: []sql.Row{{-1}}, + Expected: []sql.UntypedSqlRow{{-1}}, }, { Query: "delete from b where x <> 2", - Expected: []sql.Row{{types.NewOkResult(3)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, }, { Query: "select row_count()", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "select row_count()", - Expected: []sql.Row{{-1}}, + Expected: []sql.UntypedSqlRow{{-1}}, }, { Query: "alter table b add column y int null", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select row_count()", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "select row_count()", - Expected: []sql.Row{{-1}}, + Expected: []sql.UntypedSqlRow{{-1}}, }, }, }, @@ -2395,27 +2395,27 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT + 13 AS col0 FROM tab0 GROUP BY tab0.col0", - Expected: []sql.Row{{13}, {13}, {13}}, + Expected: []sql.UntypedSqlRow{{13}, {13}, {13}}, }, { Query: "SELECT 82 col1 FROM tab0 AS cor0 GROUP BY cor0.col1", - Expected: []sql.Row{{82}, {82}}, + Expected: []sql.UntypedSqlRow{{82}, {82}}, }, { Query: "SELECT - cor0.col2 * - col2 AS col1 FROM tab0 AS cor0 GROUP BY col2, cor0.col1", - Expected: []sql.Row{{1444}, {6241}, {576}}, + Expected: []sql.UntypedSqlRow{{1444}, {6241}, {576}}, }, { Query: "SELECT ALL + 40 col1 FROM tab0 AS cor0 GROUP BY cor0.col1", - Expected: []sql.Row{{40}, {40}}, + Expected: []sql.UntypedSqlRow{{40}, {40}}, }, { Query: "SELECT DISTINCT - cor0.col1 col1 FROM tab0 AS cor0 GROUP BY cor0.col1, cor0.col2", - Expected: []sql.Row{{-81}, {0}}, + Expected: []sql.UntypedSqlRow{{-81}, {0}}, }, { Query: "SELECT DISTINCT ( cor0.col0 ) - col0 AS col2 FROM tab0 AS cor0 GROUP BY cor0.col2, cor0.col0, cor0.col0", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, }, }, @@ -2428,95 +2428,95 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from b where x < 2", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select * from b", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select * from b order by x limit 3", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select * from b order by x limit 100", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select sql_calc_found_rows * from b order by x limit 3", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select sql_calc_found_rows * from b where x <= 2 order by x limit 1", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "select sql_calc_found_rows * from b where x <= 2 order by x limit 1", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "insert into b values (10), (11), (12), (13)", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "update b set x = x where x < 40", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 8}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 8}}}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{8}}, + Expected: []sql.UntypedSqlRow{{8}}, }, { Query: "update b set x = x where x > 10", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 3}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 3}}}}, }, { Query: "select found_rows()", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, }, }, @@ -2529,7 +2529,7 @@ CREATE TABLE tab3 ( "insert into ai (c0) select * from other order by other.pk;", }, Query: "select * from ai;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, {3, 3}, @@ -2551,7 +2551,7 @@ CREATE TABLE tab3 ( 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{ + Expected: []sql.UntypedSqlRow{ {1, 0, 1}, {2, 1, 0}, {3, 0, 2}, @@ -2570,7 +2570,7 @@ CREATE TABLE tab3 ( }, { 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{ + Expected: []sql.UntypedSqlRow{ {1, 0, 1}, {2, 1, 0}, {3, 0, 2}, @@ -2590,7 +2590,7 @@ CREATE TABLE tab3 ( }, { 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{ + Expected: []sql.UntypedSqlRow{ {1, 0, 1}, {2, 1, 0}, {3, 0, 2}, @@ -2625,51 +2625,51 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: `SELECT group_concat(pk ORDER BY pk) FROM x;`, - Expected: []sql.Row{{"1,2,3,4"}}, + Expected: []sql.UntypedSqlRow{{"1,2,3,4"}}, }, { Query: `SELECT group_concat(DISTINCT pk ORDER BY pk) FROM x;`, - Expected: []sql.Row{{"1,2,3,4"}}, + Expected: []sql.UntypedSqlRow{{"1,2,3,4"}}, }, { Query: `SELECT group_concat(DISTINCT pk ORDER BY pk SEPARATOR '-') FROM x;`, - Expected: []sql.Row{{"1-2-3-4"}}, + Expected: []sql.UntypedSqlRow{{"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"}}, + Expected: []sql.UntypedSqlRow{{"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"}}, + Expected: []sql.UntypedSqlRow{{"fabric;color"}, {"shape;color"}}, }, { Query: "SELECT group_concat(DISTINCT `attribute` ORDER BY `attribute`) FROM t", - Expected: []sql.Row{{"color,fabric,shape"}}, + Expected: []sql.UntypedSqlRow{{"color,fabric,shape"}}, }, { Query: "SELECT group_concat(`attribute` ORDER BY `attribute`) FROM t", - Expected: []sql.Row{{"color,color,fabric,shape"}}, + Expected: []sql.UntypedSqlRow{{"color,color,fabric,shape"}}, }, { Query: `SELECT group_concat((SELECT 2)) FROM x;`, - Expected: []sql.Row{{"2,2,2,2,2"}}, + Expected: []sql.UntypedSqlRow{{"2,2,2,2,2"}}, }, { Query: `SELECT group_concat(DISTINCT (SELECT 2)) FROM x;`, - Expected: []sql.Row{{"2"}}, + Expected: []sql.UntypedSqlRow{{"2"}}, }, { Query: "SELECT group_concat(DISTINCT `attribute` ORDER BY `attribute` ASC) FROM t", - Expected: []sql.Row{{"color,fabric,shape"}}, + Expected: []sql.UntypedSqlRow{{"color,fabric,shape"}}, }, { Query: "SELECT group_concat(DISTINCT `attribute` ORDER BY `attribute` DESC) FROM t", - Expected: []sql.Row{{"shape,fabric,color"}}, + Expected: []sql.UntypedSqlRow{{"shape,fabric,color"}}, }, { Query: `SELECT group_concat(pk) FROM nulls`, - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: `SELECT group_concat((SELECT * FROM t LIMIT 1)) from t`, @@ -2681,19 +2681,19 @@ CREATE TABLE tab3 ( }, { Query: "SELECT group_concat(`attribute`) FROM t where o_id=2 order by attribute", - Expected: []sql.Row{{"color,fabric"}}, + Expected: []sql.UntypedSqlRow{{"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"}}, + Expected: []sql.UntypedSqlRow{{"fabric;color"}, {"shape;color"}}, }, { Query: "SELECT group_concat(o_id order by o_id) FROM t WHERE `attribute`='color' order by o_id", - Expected: []sql.Row{{"2,3"}}, + Expected: []sql.UntypedSqlRow{{"2,3"}}, }, { Query: "SELECT group_concat(attribute separator '') FROM t WHERE o_id=2 ORDER BY attribute", - Expected: []sql.Row{{"colorfabric"}}, + Expected: []sql.UntypedSqlRow{{"colorfabric"}}, }, }, }, @@ -2706,7 +2706,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT pk, v1, CONVERT(CONVERT(v1 USING latin1) USING utf8mb4) AS round_trip FROM test WHERE v1 <> CONVERT(CONVERT(v1 USING latin1) USING utf8mb4);", - Expected: []sql.Row{{int64(1), "63273াম", "63273??"}, {int64(3), "8জ্রিয277", "8?????277"}}, + Expected: []sql.UntypedSqlRow{{int64(1), "63273াম", "63273??"}, {int64(3), "8জ্রিয277", "8?????277"}}, }, }, }, @@ -2718,23 +2718,23 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (pk) VALUES (1);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 88}}, + Expected: []sql.UntypedSqlRow{{1, 88}}, }, { Query: "ALTER TABLE test ALTER v1 SET DEFAULT (CONVERT('42', SIGNED));", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO test (pk) VALUES (2);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 88}, {2, 42}}, + Expected: []sql.UntypedSqlRow{{1, 88}, {2, 42}}, }, { Query: "ALTER TABLE test ALTER v2 SET DEFAULT 1;", @@ -2742,7 +2742,7 @@ CREATE TABLE tab3 ( }, { Query: "ALTER TABLE test ALTER v1 DROP DEFAULT;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO test (pk) VALUES (3);", @@ -2754,11 +2754,11 @@ CREATE TABLE tab3 ( }, { // Just confirms that the last INSERT didn't do anything Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, 88}, {2, 42}}, + Expected: []sql.UntypedSqlRow{{1, 88}, {2, 42}}, }, { Query: "ALTER TABLE test ALTER v1 SET DEFAULT 100, alter v1 DROP DEFAULT", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO test (pk) VALUES (2);", @@ -2766,7 +2766,7 @@ CREATE TABLE tab3 ( }, { Query: "ALTER TABLE test ALTER v1 SET DEFAULT 100, alter v1 SET DEFAULT 200", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE test DROP COLUMN v1, alter v1 SET DEFAULT 5000", @@ -2774,7 +2774,7 @@ CREATE TABLE tab3 ( }, { Query: "DESCRIBE test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, ""}, {"v1", "bigint", "NO", "", "200", ""}, }, @@ -2801,75 +2801,75 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT - SUM( DISTINCT - - 71 ) AS col2 FROM tab2 cor0", - Expected: []sql.Row{{float64(-71)}}, + Expected: []sql.UntypedSqlRow{{float64(-71)}}, }, { Query: "SELECT - SUM ( DISTINCT - - 71 ) AS col2 FROM tab2 cor0", - Expected: []sql.Row{{float64(-71)}}, + Expected: []sql.UntypedSqlRow{{float64(-71)}}, }, { Query: "SELECT + MAX( DISTINCT ( - col0 ) ) FROM tab1 AS cor0", - Expected: []sql.Row{{-51}}, + Expected: []sql.UntypedSqlRow{{-51}}, }, { Query: "SELECT SUM( DISTINCT + col1 ) * - 22 - - ( - COUNT( * ) ) col0 FROM tab1 AS cor0", - Expected: []sql.Row{{float64(-1455)}}, + Expected: []sql.UntypedSqlRow{{float64(-1455)}}, }, { Query: "SELECT MIN (DISTINCT col1) from tab1 GROUP BY col0 ORDER BY col0", - Expected: []sql.Row{{14}, {5}, {47}}, + Expected: []sql.UntypedSqlRow{{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)}}, + Expected: []sql.UntypedSqlRow{{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)}}, + Expected: []sql.UntypedSqlRow{{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)}}, + Expected: []sql.UntypedSqlRow{{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)}}, + Expected: []sql.UntypedSqlRow{{float64(7)}}, }, { Query: "SELECT SUM(DISTINCT POWER(v1, 2)) FROM mytable", - Expected: []sql.Row{{float64(5)}}, + Expected: []sql.UntypedSqlRow{{float64(5)}}, }, { Query: "SELECT + + 97 FROM tab1 GROUP BY tab1.col1", - Expected: []sql.Row{{97}, {97}, {97}}, + Expected: []sql.UntypedSqlRow{{97}, {97}, {97}}, }, { Query: "SELECT rand(10) FROM tab1 GROUP BY tab1.col1", - Expected: []sql.Row{{0.5660920659323543}, {0.5660920659323543}, {0.5660920659323543}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{-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}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{-2601}, {-7225}, {-8281}}, }, { Query: "SELECT col0 FROM tab1 AS cor0 GROUP BY cor0.col0", - Expected: []sql.Row{{51}, {85}, {91}}, + Expected: []sql.UntypedSqlRow{{51}, {85}, {91}}, }, { Query: "SELECT - cor0.col0 FROM tab1 AS cor0 GROUP BY cor0.col0", - Expected: []sql.Row{{-51}, {-85}, {-91}}, + Expected: []sql.UntypedSqlRow{{-51}, {-85}, {-91}}, }, { Query: "SELECT col0 BETWEEN 2 and 4 from tab1 group by col0", - Expected: []sql.Row{{false}, {false}, {false}}, + Expected: []sql.UntypedSqlRow{{false}, {false}, {false}}, }, { Query: "SELECT col0, col1 FROM tab1 GROUP by col0;", @@ -2923,7 +2923,7 @@ CREATE TABLE tab3 ( dcim_rackgroup.level FROM dcim_rackgroup order by 2 limit 1`, - Expected: []sql.Row{{1, "5c107f979f434bf7a7820622f18a5211", types.JSONDocument{Val: map[string]interface{}{}}, "Parent Rack Group 1", "parent-rack-group-1", "f0471f313b694d388c8ec39d9590e396", nil, "", uint64(1), uint64(2), uint64(1), uint64(0)}}, + Expected: []sql.UntypedSqlRow{{1, "5c107f979f434bf7a7820622f18a5211", types.JSONDocument{Val: map[string]interface{}{}}, "Parent Rack Group 1", "parent-rack-group-1", "f0471f313b694d388c8ec39d9590e396", nil, "", uint64(1), uint64(2), uint64(1), uint64(0)}}, }, }, }, @@ -2941,23 +2941,23 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: `SELECT * FROM t2`, - Expected: []sql.Row{{1, "1"}, {2, "2"}, {3, "3"}}, + Expected: []sql.UntypedSqlRow{{1, "1"}, {2, "2"}, {3, "3"}}, }, { Query: `SELECT * FROM t3`, - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, }, { Query: `SELECT * FROM t4`, - Expected: []sql.Row{{1, "1"}, {2, "2"}, {3, "3"}}, + Expected: []sql.UntypedSqlRow{{1, "1"}, {2, "2"}, {3, "3"}}, }, { Query: `SELECT * FROM t5`, - Expected: []sql.Row{{1, "1"}}, + Expected: []sql.UntypedSqlRow{{1, "1"}}, }, { Query: `CREATE TABLE test SELECT * FROM t1`, - Expected: []sql.Row{sql.Row{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 3, InsertID: 0, Info: nil, @@ -2982,7 +2982,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT unix_timestamp(timestamp_col) div 60 * 60 as timestamp_col, avg(i) from datetime_table group by 1 order by unix_timestamp(timestamp_col) div 60 * 60", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1577966400), 1.0}, {int64(1578225600), 2.0}, {int64(1578398400), 3.0}}, @@ -3000,7 +3000,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT unix_timestamp(timestamp_col), unix_timestamp(datetime_col) from datetime_table", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"86400.000000", "57600.000000"}, }, }, @@ -3029,7 +3029,7 @@ CREATE TABLE tab3 ( // https://bugs.mysql.com/bug.php?id=109020 Query: `SELECT UNIX_TIMESTAMP(time) DIV 60 * 60 AS "time", avg(value) AS "value" FROM test GROUP BY 1 ORDER BY UNIX_TIMESTAMP(test.time) DIV 60 * 60`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {int64(1625133600), 4.0}, {int64(1625220000), 3.0}, {int64(1625306400), 2.0}, @@ -3049,23 +3049,23 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test;", - Expected: []sql.Row{{1, "b", "b"}, {2, "a", "a"}}, + Expected: []sql.UntypedSqlRow{{1, "b", "b"}, {2, "a", "a"}}, }, { Query: "UPDATE test SET v1 = 3 WHERE v1 = 2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.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"}}, + Expected: []sql.UntypedSqlRow{{1, "c", "b"}, {2, "a", "a"}}, }, { Query: "UPDATE test SET v2 = 3 WHERE 2 = v2;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.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"}}, + Expected: []sql.UntypedSqlRow{{1, "c", "a,b"}, {2, "a", "a"}}, }, }, }, @@ -3080,7 +3080,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{0, 2}, {0, 3}, {1, 2}, {1, 4}}, }, }, }, @@ -3097,7 +3097,7 @@ CREATE TABLE tab3 ( 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{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{ + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{ Matched: 1, Updated: 1, Warnings: 0, @@ -3105,13 +3105,13 @@ CREATE TABLE tab3 ( }, { Query: "SELECT val FROM test2 where pk = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {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{{types.OkResult{RowsAffected: 6, Info: plan.UpdateInfo{ + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 6, Info: plan.UpdateInfo{ Matched: 8, Updated: 6, Warnings: 0, @@ -3119,7 +3119,7 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {10}, {20}, @@ -3128,7 +3128,7 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM test2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {4, 2}, {8, 2}, @@ -3137,7 +3137,7 @@ CREATE TABLE tab3 ( }, { Query: `update test2 inner join (select * from test3 order by val) as t3 on false SET test2.val=t3.val`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{ + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{ Matched: 0, Updated: 0, Warnings: 0, @@ -3154,19 +3154,19 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test WHERE v3 = 4;", - Expected: []sql.Row{{1, 2, 3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}}, }, { Query: "SELECT * FROM test WHERE v3 = 8 AND v2 = 7;", - Expected: []sql.Row{{5, 6, 7, 8}}, + Expected: []sql.UntypedSqlRow{{5, 6, 7, 8}}, }, { Query: "SELECT * FROM test WHERE v3 >= 6 AND v2 >= 6;", - Expected: []sql.Row{{4, 5, 6, 7}, {5, 6, 7, 8}}, + Expected: []sql.UntypedSqlRow{{4, 5, 6, 7}, {5, 6, 7, 8}}, }, { Query: "SELECT * FROM test WHERE v3 = 7 AND v2 >= 6;", - Expected: []sql.Row{{4, 5, 6, 7}}, + Expected: []sql.UntypedSqlRow{{4, 5, 6, 7}}, }, }, }, @@ -3179,19 +3179,19 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test WHERE v1 = 2 AND v2 > 1;", - Expected: []sql.Row{{1, 2, 3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 2, 3, 4}}, }, { Query: "SELECT * FROM test WHERE v2 = 4 AND v3 > 1;", - Expected: []sql.Row{{2, 3, 4, 5}}, + Expected: []sql.UntypedSqlRow{{2, 3, 4, 5}}, }, { Query: "SELECT * FROM test WHERE v3 = 6 AND v1 > 1;", - Expected: []sql.Row{{3, 4, 5, 6}}, + Expected: []sql.UntypedSqlRow{{3, 4, 5, 6}}, }, { Query: "SELECT * FROM test WHERE v1 = 5 AND v3 <= 10 AND v2 >= 1;", - Expected: []sql.Row{{4, 5, 6, 7}}, + Expected: []sql.UntypedSqlRow{{4, 5, 6, 7}}, }, }, }, @@ -3205,11 +3205,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "DELETE FROM `GzaKtwgIya` WHERE `K7t5WY` = '58567047399981325523662211357420045483361289734772861386428.89028';", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT COUNT(*) FROM GzaKtwgIya", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -3223,39 +3223,39 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT COUNT(*) FROM test WHERE number = CONVERT('11981.5923291839784651', DECIMAL)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "INSERT INTO test VALUES (11981.5923291839784651);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT COUNT(*) FROM test WHERE number = CONVERT('11981.5923291839784651', DECIMAL)", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "INSERT INTO test VALUES (119815923291839784651.11981592329183978465111981592329183978465144);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT COUNT(*) FROM test WHERE number = CONVERT('119815923291839784651.1198159232918398', DECIMAL)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "INSERT INTO test VALUES (1.1981592329183978465111981592329183978465111981592329183978465144);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT COUNT(*) FROM test WHERE number = CONVERT('1.1981592329183978', DECIMAL)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "INSERT INTO test VALUES (1.1981592329183978545111981592329183978465111981592329183978465144);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT COUNT(*) FROM test WHERE number = CONVERT('1.1981592329183979', DECIMAL)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "INSERT INTO small_test VALUES (12.1);", @@ -3274,7 +3274,7 @@ CREATE TABLE tab3 ( 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}}, + Expected: []sql.UntypedSqlRow{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}, }, }, }, @@ -3293,7 +3293,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `a` int NOT NULL,\n" + " `b` varchar(10) NOT NULL DEFAULT 'abc',\n" + @@ -3305,7 +3305,7 @@ CREATE TABLE tab3 ( }, { Query: "show create table t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `c` int NOT NULL,\n" + " `d` varchar(10),\n" + @@ -3317,7 +3317,7 @@ CREATE TABLE tab3 ( }, { Query: "show create table t3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t3", "CREATE TABLE `t3` (\n" + " `a` int NOT NULL,\n" + " `b` varchar(100) NOT NULL,\n" + @@ -3328,7 +3328,7 @@ CREATE TABLE tab3 ( }, { Query: "show create table t4", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t4", "CREATE TABLE `t4` (\n" + " `a` int DEFAULT (floor(1)),\n" + " `b` int DEFAULT (coalesce(`a`,10))\n" + @@ -3346,7 +3346,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int NOT NULL,\n" + " PRIMARY KEY (`i`),\n" + @@ -3369,7 +3369,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1, 10) on duplicate key update b = 10", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, }, }, @@ -3382,17 +3382,17 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT count(*) FROM a where x = 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "delete from a where x = 0", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM a where x = 0", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -3407,19 +3407,19 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "delete from a where y = 2", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "delete from a where y = 2", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select * from a where y = 2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from a where y = 5", - Expected: []sql.Row{{4, 5, 6}}, + Expected: []sql.UntypedSqlRow{{4, 5, 6}}, }, }, }, @@ -3434,15 +3434,15 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT v1, v2, v3, hex(v4) FROM hex_nums1;", - Expected: []sql.Row{{2127583643, uint64(8528283758723641735), float64(271938758947012), "148AA875C3CDB9AF8919493926A3D7C6862FEC7F330152F400C0AECB4467508A"}}, + Expected: []sql.UntypedSqlRow{{2127583643, uint64(8528283758723641735), float64(271938758947012), "148AA875C3CDB9AF8919493926A3D7C6862FEC7F330152F400C0AECB4467508A"}}, }, { Query: "SELECT hex(v1), hex(v2), hex(v3), hex(v4) FROM hex_nums1;", - Expected: []sql.Row{{"7ED0599B", "765A8CE4CE74B187", "F753AD20B0C4", "148AA875C3CDB9AF8919493926A3D7C6862FEC7F330152F400C0AECB4467508A"}}, + Expected: []sql.UntypedSqlRow{{"7ED0599B", "765A8CE4CE74B187", "F753AD20B0C4", "148AA875C3CDB9AF8919493926A3D7C6862FEC7F330152F400C0AECB4467508A"}}, }, { Query: "SELECT hex(v1), hex(v2) FROM hex_nums2;", - Expected: []sql.Row{{"765A8CE4CE74B187", "148AA875C3CDB9AF8919493926A3D7C6862FEC7F330152F400C0AECB4467508A"}}, + Expected: []sql.UntypedSqlRow{{"765A8CE4CE74B187", "148AA875C3CDB9AF8919493926A3D7C6862FEC7F330152F400C0AECB4467508A"}}, }, }, }, @@ -3454,11 +3454,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t ADD COLUMN (v2 int), drop primary key, add primary key (v2)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "NO", "PRI", nil, ""}, @@ -3470,7 +3470,7 @@ CREATE TABLE tab3 ( }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "NO", "PRI", nil, ""}, @@ -3490,18 +3490,18 @@ CREATE TABLE tab3 ( }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, // should not be dropped }, }, { Query: "ALTER TABLE t ADD COLUMN (v2 int), ADD INDEX myidx (v2)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "YES", "MUL", nil, ""}, @@ -3513,7 +3513,7 @@ CREATE TABLE tab3 ( }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "YES", "MUL", nil, ""}, @@ -3525,7 +3525,7 @@ CREATE TABLE tab3 ( }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "YES", "MUL", nil, ""}, @@ -3537,7 +3537,7 @@ CREATE TABLE tab3 ( }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "YES", "MUL", nil, ""}, @@ -3545,11 +3545,11 @@ CREATE TABLE tab3 ( }, { Query: "ALTER TABLE t ADD COLUMN (v4 int), ADD INDEX myidx2 (v4)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "YES", "MUL", nil, ""}, @@ -3558,15 +3558,15 @@ CREATE TABLE tab3 ( }, { Query: "ALTER TABLE t ADD COLUMN (v5 int), RENAME INDEX myidx2 TO myidx3", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE t DROP INDEX myidx, ADD INDEX v5idx (v5)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "YES", "", nil, ""}, @@ -3584,7 +3584,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "alter table test add column j int;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -3596,11 +3596,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "alter table test alter column j set default ('[]');", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test", "CREATE TABLE `test` (\n `i` int DEFAULT '999',\n `j` json DEFAULT ('[]')\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, @@ -3614,30 +3614,30 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (pk) VALUES (1);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE test DROP COLUMN v1, ADD COLUMN v2 INT NOT NULL DEFAULT 100", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, ""}, {"v2", "int", "NO", "", "100", ""}, }, }, { Query: "ALTER TABLE TEST MODIFY COLUMN pk BIGINT AUTO_INCREMENT, AUTO_INCREMENT = 100", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO test (v2) values (11)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 100}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 100}}}, }, { Query: "SELECT * from test where pk = 100", - Expected: []sql.Row{{100, 11}}, + Expected: []sql.UntypedSqlRow{{100, 11}}, }, { Query: "ALTER TABLE test DROP COLUMN v2, ADD COLUMN v3 int NOT NULL after v2", @@ -3645,7 +3645,7 @@ CREATE TABLE tab3 ( }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, "auto_increment"}, {"v2", "int", "NO", "", "100", ""}, }, @@ -3656,7 +3656,7 @@ CREATE TABLE tab3 ( }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, "auto_increment"}, {"v2", "int", "NO", "", "100", ""}, }, @@ -3667,18 +3667,18 @@ CREATE TABLE tab3 ( }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, "auto_increment"}, {"v2", "int", "NO", "", "100", ""}, }, }, { Query: "ALTER TABLE test ADD COLUMN (v3 int NOT NULL), add column (v4 int), drop column v2, add column (v5 int NOT NULL)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, "auto_increment"}, {"v3", "int", "NO", "", nil, ""}, {"v4", "int", "YES", "", nil, ""}, @@ -3687,11 +3687,11 @@ CREATE TABLE tab3 ( }, { Query: "ALTER TABLE test ADD COLUMN (v6 int not null), RENAME COLUMN v5 TO mycol, DROP COLUMN v4, ADD COLUMN (v7 int);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "bigint", "NO", "PRI", nil, "auto_increment"}, {"v3", "int", "NO", "", nil, ""}, {"mycol", "int", "NO", "", nil, ""}, @@ -3717,7 +3717,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "show create table t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int NOT NULL,\n" + " UNIQUE KEY `i` (`i`)\n" + @@ -3726,34 +3726,34 @@ CREATE TABLE tab3 ( }, { Query: "describe t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, }, }, { Query: "show columns from t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, }, }, { Skip: true, // supposed to be the first index defined, not in order of columns Query: "describe t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "UNI", nil, ""}, {"j", "int", "NO", "PRI", nil, ""}, }, }, { Query: "describe t3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "MUL", nil, ""}, {"j", "int", "YES", "", nil, ""}, }, }, { Query: "describe t4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "UNI", nil, ""}, {"j", "int", "NO", "PRI", nil, ""}, }, @@ -3763,21 +3763,21 @@ CREATE TABLE tab3 ( // https://github.com/dolthub/dolt/issues/2289 Skip: true, Query: "describe t5;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"j", "int", "NO", "PRI", nil, ""}, }, }, { Query: "describe t6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"j", "int", "NO", "MUL", nil, ""}, }, }, { Query: "describe t7;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"i", "int", "YES", "UNI", nil, ""}, {"j", "int", "NO", "MUL", nil, ""}, @@ -3786,7 +3786,7 @@ CREATE TABLE tab3 ( { Skip: true, // for some reason MUL takes priority over UNI for i Query: "describe t8;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"i", "int", "YES", "MUL", nil, ""}, {"j", "int", "YES", "UNI", nil, ""}, @@ -3804,7 +3804,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"uk1", "int", "NO", "MUL", nil, "auto_increment"}, {"uk2", "int", "YES", "", nil, ""}, @@ -3821,7 +3821,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"mk1", "int", "NO", "MUL", nil, "auto_increment"}, {"mk2", "int", "YES", "", nil, ""}, @@ -3841,7 +3841,7 @@ CREATE TABLE tab3 ( "insert into c values (0,1,0), (1,1,0), (2,2,1), (3,2,1)", }, Query: "select a.* from a join b on a.x = b.x join c where c.x = a.x and b.x = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, {1}, @@ -3896,7 +3896,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "PRI", nil, ""}, {"val", "int", "YES", "", "((`pk` * 2))", "DEFAULT_GENERATED"}, }, @@ -3911,23 +3911,23 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `pk` bigint NOT NULL,\n `v1` varchar(255),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `pk` bigint NOT NULL,\n `v1` varchar(255),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "ALTER TABLE test CHANGE v1 v2 VARCHAR(255) CHARACTER SET utf8mb4 BINARY NOT NULL;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE test;", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `pk` bigint NOT NULL,\n `v2` varchar(255) COLLATE utf8mb4_bin NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `pk` bigint NOT NULL,\n `v2` varchar(255) COLLATE utf8mb4_bin NOT NULL,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "CREATE TABLE test2 (pk BIGINT PRIMARY KEY, v1 VARCHAR(255) CHARACTER SET utf8mb4 BINARY);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW CREATE TABLE test2;", - Expected: []sql.Row{{"test2", "CREATE TABLE `test2` (\n `pk` bigint NOT NULL,\n `v1` varchar(255) COLLATE utf8mb4_bin,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test2", "CREATE TABLE `test2` (\n `pk` bigint NOT NULL,\n `v1` varchar(255) COLLATE utf8mb4_bin,\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -3942,15 +3942,15 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT val FROM decimal_table;", - Expected: []sql.Row{{"-2.5633000000000384"}, {"2.5633000000000370"}, {"0.0000000000000004"}}, + Expected: []sql.UntypedSqlRow{{"-2.5633000000000384"}, {"2.5633000000000370"}, {"0.0000000000000004"}}, }, { Query: "SELECT sum(val) FROM decimal_table;", - Expected: []sql.Row{{"-0.0000000000000010"}}, + Expected: []sql.UntypedSqlRow{{"-0.0000000000000010"}}, }, { Query: "SELECT avg(val) FROM decimal_table;", - Expected: []sql.Row{{"-0.00000000000000033333"}}, + Expected: []sql.UntypedSqlRow{{"-0.00000000000000033333"}}, }, }, }, @@ -3965,15 +3965,15 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT sum(id), sum(val1), sum(val2) FROM float_table ORDER BY id;", - Expected: []sql.Row{{float64(6), -9.322676295501879e-16, 10.000000238418579}}, + Expected: []sql.UntypedSqlRow{{float64(6), -9.322676295501879e-16, 10.000000238418579}}, }, { Query: "SELECT sum(id), sum(val1), sum(val2) FROM float_table ORDER BY id;", - Expected: []sql.Row{{float64(6), -9.322676295501879e-16, 10.000000238418579}}, + Expected: []sql.UntypedSqlRow{{float64(6), -9.322676295501879e-16, 10.000000238418579}}, }, { Query: "SELECT avg(id), avg(val1), avg(val2) FROM float_table ORDER BY id;", - Expected: []sql.Row{{float64(2), -3.107558765167293e-16, 3.333333412806193}}, + Expected: []sql.UntypedSqlRow{{float64(2), -3.107558765167293e-16, 3.333333412806193}}, }, }, }, @@ -3986,7 +3986,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select if(val1 < val2, 'YES', 'NO') from t order by id;", - Expected: []sql.Row{{"NO"}, {"YES"}}, + Expected: []sql.UntypedSqlRow{{"NO"}, {"YES"}}, }, }, }, @@ -3999,11 +3999,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * from `dual`;", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "SELECT 3 from dual;", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "SELECT * from dual;", @@ -4021,31 +4021,31 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select val from numbers;", - Expected: []sql.Row{{1}, {2}, {3}, {2}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {2}, {4}}, }, { Query: "select val as a from numbers having a = val;", - Expected: []sql.Row{{1}, {2}, {3}, {2}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {2}, {4}}, }, { Query: "select val as a from numbers group by val having a = val;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "select val as a from numbers as t1 group by t1.val having a = t1.val;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "select t1.val as a from numbers as t1 group by 1 having a = t1.val;", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, { Query: "select t1.val as a from numbers as t1 having a = t1.val;", - Expected: []sql.Row{{1}, {2}, {3}, {2}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {2}, {4}}, }, { Query: "select count(*) from numbers having count(*) = 5;", - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, { // MySQL returns `Unknown column 'val' in 'having clause'` error for this query, @@ -4056,7 +4056,7 @@ CREATE TABLE tab3 ( }, { Query: "select count(*) from numbers group by val having count(*) < val;", - Expected: []sql.Row{{1}, {1}}, + Expected: []sql.UntypedSqlRow{{1}, {1}}, }, }, }, @@ -4069,39 +4069,39 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select i from t group by i having count(1) = 1 order by i asc", - Expected: []sql.Row{{2}, {4}}, + Expected: []sql.UntypedSqlRow{{2}, {4}}, }, { Query: "select i from t group by i having count(1) != 1 order by i asc", - Expected: []sql.Row{{1}, {3}, {5}}, + Expected: []sql.UntypedSqlRow{{1}, {3}, {5}}, }, { Query: "select * from t where i in (select i from t group by i having count(1) = 1) order by i, t asc;", - Expected: []sql.Row{{2, "b"}, {4, "d"}}, + Expected: []sql.UntypedSqlRow{{2, "b"}, {4, "d"}}, }, { Query: "select * from t where i in (select i from t group by i having count(1) != 1) order by i, t asc;", - Expected: []sql.Row{{1, "a"}, {1, "a2"}, {3, "c"}, {3, "c2"}, {5, "e"}, {5, "e2"}}, + Expected: []sql.UntypedSqlRow{{1, "a"}, {1, "a2"}, {3, "c"}, {3, "c2"}, {5, "e"}, {5, "e2"}}, }, { Query: "select * from t where i in (select i from t where i = 2 group by i having count(1) = 1) order by i, t asc;", - Expected: []sql.Row{{2, "b"}}, + Expected: []sql.UntypedSqlRow{{2, "b"}}, }, { Query: "select * from t where i in (select i from t where i = 3 group by i having count(1) != 1) order by i, t asc;", - Expected: []sql.Row{{3, "c"}, {3, "c2"}}, + Expected: []sql.UntypedSqlRow{{3, "c"}, {3, "c2"}}, }, { Query: "select * from t where i in (select i from t where i > 2 group by i having count(1) != 1) order by i, t asc;", - Expected: []sql.Row{{3, "c"}, {3, "c2"}, {5, "e"}, {5, "e2"}}, + Expected: []sql.UntypedSqlRow{{3, "c"}, {3, "c2"}, {5, "e"}, {5, "e2"}}, }, { Query: "select * from t where i in (select i from t where i > 2 group by i having count(1) != 1 order by i desc) order by i, t asc;", - Expected: []sql.Row{{3, "c"}, {3, "c2"}, {5, "e"}, {5, "e2"}}, + Expected: []sql.UntypedSqlRow{{3, "c"}, {3, "c2"}, {5, "e"}, {5, "e2"}}, }, { Query: "select * from t where i in (select i from t where i > 2 group by i having count(1) != 1) order by i desc, t asc;", - Expected: []sql.Row{{5, "e"}, {5, "e2"}, {3, "c"}, {3, "c2"}}, + Expected: []sql.UntypedSqlRow{{5, "e"}, {5, "e2"}, {3, "c"}, {3, "c2"}}, }, }, }, @@ -4140,35 +4140,35 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select f/2 from floats;", - Expected: []sql.Row{{0.550000011920929}, {0.6000000238418579}, {0.6499999761581421}}, + Expected: []sql.UntypedSqlRow{{0.550000011920929}, {0.6000000238418579}, {0.6499999761581421}}, }, { Query: "select 2/f from floats;", - Expected: []sql.Row{{1.8181817787737895}, {1.6666666004392863}, {1.5384615948919735}}, + Expected: []sql.UntypedSqlRow{{1.8181817787737895}, {1.6666666004392863}, {1.5384615948919735}}, }, { Query: "select d/2 from decimals;", - Expected: []sql.Row{{"0.50000"}, {"1.00000"}, {"1.25000"}}, + Expected: []sql.UntypedSqlRow{{"0.50000"}, {"1.00000"}, {"1.25000"}}, }, { Query: "select 2/d from decimals;", - Expected: []sql.Row{{"2.0000"}, {"1.0000"}, {"0.8000"}}, + Expected: []sql.UntypedSqlRow{{"2.0000"}, {"1.0000"}, {"0.8000"}}, }, { Query: "select f/d from floats, decimals;", - Expected: []sql.Row{{1.2999999523162842}, {1.2000000476837158}, {1.100000023841858}, + Expected: []sql.UntypedSqlRow{{1.2999999523162842}, {1.2000000476837158}, {1.100000023841858}, {0.6499999761581421}, {0.6000000238418579}, {0.550000011920929}, {0.5199999809265137}, {0.48000001907348633}, {0.4400000095367432}}, }, { Query: "select d/f from floats, decimals;", - Expected: []sql.Row{{0.7692307974459868}, {0.8333333002196431}, {0.9090908893868948}, + Expected: []sql.UntypedSqlRow{{0.7692307974459868}, {0.8333333002196431}, {0.9090908893868948}, {1.5384615948919735}, {1.6666666004392863}, {1.8181817787737895}, {1.9230769936149668}, {2.083333250549108}, {2.272727223467237}}, }, { Query: `select f/'a' from floats;`, - Expected: []sql.Row{{nil}, {nil}, {nil}}, + Expected: []sql.UntypedSqlRow{{nil}, {nil}, {nil}}, }, }, }, @@ -4181,15 +4181,15 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select c1 % 2, c2 % 2, c3 % 2 from a;", - Expected: []sql.Row{{"1", 1.111, "1.111"}, {"0", 0.11100000000000021, "0.111"}}, + Expected: []sql.UntypedSqlRow{{"1", 1.111, "1.111"}, {"0", 0.11100000000000021, "0.111"}}, }, { Query: "select c1 % 0.5, c2 % 0.5, c3 % 0.5 from a;", - Expected: []sql.Row{{"0.0", 0.11099999999999999, "0.111"}, {"0.0", 0.11100000000000021, "0.111"}}, + Expected: []sql.UntypedSqlRow{{"0.0", 0.11099999999999999, "0.111"}, {"0.0", 0.11100000000000021, "0.111"}}, }, { Query: "select 20 % c1, 20 % c2, 20 % c3 from a;", - Expected: []sql.Row{{"0", 0.002000000000000224, "0.002"}, {"0", 1.0009999999999981, "1.001"}}, + Expected: []sql.UntypedSqlRow{{"0", 0.002000000000000224, "0.002"}, {"0", 1.0009999999999981, "1.001"}}, }, }, }, @@ -4202,7 +4202,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select a & 2.4, a | 2.4, a ^ 2.4 from num_types;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0), uint64(3), uint64(3)}, {uint64(2), uint64(2), uint64(0)}, {uint64(2), uint64(3), uint64(1)}, @@ -4211,7 +4211,7 @@ CREATE TABLE tab3 ( }, { Query: "select b & 2.4, b | 2.4, b ^ 2.4 from num_types;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0), uint64(3), uint64(3)}, {uint64(0), uint64(3), uint64(3)}, {uint64(2), uint64(2), uint64(0)}, @@ -4220,7 +4220,7 @@ CREATE TABLE tab3 ( }, { Query: "select c & 2.4, c | 2.4, c ^ 2.4 from num_types;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(0), uint64(3), uint64(3)}, {uint64(2), uint64(2), uint64(0)}, {uint64(0), uint64(6), uint64(6)}, @@ -4238,56 +4238,56 @@ CREATE TABLE tab3 ( // 1901 - 2155 are interpreted as 1901 - 2155 { Query: "INSERT INTO t VALUES (1, '1901'), (2, 1901);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO t VALUES (3, '2000'), (4, 2000);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO t VALUES (5, '2155'), (6, 2155);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, // 1 - 69 are interpreted as 2001 - 2069 { Query: "INSERT INTO t VALUES (7, '1'), (8, 1);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO t VALUES (9, '35'), (10, 35);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO t VALUES (11, '69'), (12, 69);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, // 70 - 99 are interpreted as 1970 - 1999 { Query: "INSERT INTO t VALUES (13, '70'), (14, 70);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO t VALUES (15, '85'), (16, 85);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "INSERT INTO t VALUES (17, '99'), (18, 99);", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, // '0', and '00' are interpreted as 2000 { Query: "INSERT INTO t VALUES (19, '0'), (20, '00');", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, // 0 is interpreted as 0000 { Query: "INSERT INTO t VALUES (21, 0)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, // Assert that returned values are correct. { Query: "SELECT * from t order by pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, int16(1901)}, {2, int16(1901)}, {3, int16(2000)}, @@ -4345,12 +4345,12 @@ CREATE TABLE tab3 ( 'val11', 'val12', 'val13', 'val14', 'val15', 'val16', 'val17' ); `, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { SkipResultCheckOnServerEngine: true, // the datetime returned is not non-zero Query: "SELECT * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { 1, 0, @@ -4383,7 +4383,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "insert into t values (5.2443381514267e+18);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, }, }, @@ -4410,7 +4410,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select uv.u from uv join xy on binary xy.x = binary uv.u;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -4427,11 +4427,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select (case e when 'a' then 42 end) from enums", - Expected: []sql.Row{{42}}, + Expected: []sql.UntypedSqlRow{{42}}, }, { Query: "select (case 'a' when e then 42 end) from enums", - Expected: []sql.Row{{42}}, + Expected: []sql.UntypedSqlRow{{42}}, }, }, }, @@ -4443,11 +4443,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO setenumtest VALUES (1, 1, 1), (2, 1, 1), (3, 3, 1), (4, 1, 3);", - Expected: []sql.Row{{types.NewOkResult(4)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(4)}}, }, { Query: "UPDATE setenumtest SET v1 = 2, v2 = 2 WHERE pk = 2;", - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ Matched: 1, @@ -4458,7 +4458,7 @@ CREATE TABLE tab3 ( }, { Query: "SELECT * FROM setenumtest ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a", "a"}, {2, "b", "b"}, {3, "c", "a"}, @@ -4467,15 +4467,15 @@ CREATE TABLE tab3 ( }, { Query: "DELETE FROM setenumtest WHERE v1 = 3;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "DELETE FROM setenumtest WHERE v2 = 3;", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SELECT * FROM setenumtest ORDER BY pk;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a", "a"}, {2, "b", "b"}, }, @@ -4491,15 +4491,15 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT SUM(b) OVER (PARTITION BY a ORDER BY b) FROM t ORDER BY 1;", - Expected: []sql.Row{{float64(1)}, {float64(3)}, {float64(4)}, {float64(6)}, {float64(9)}, {float64(15)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}, {float64(3)}, {float64(4)}, {float64(6)}, {float64(9)}, {float64(15)}}, }, { Query: "SELECT SUM(b) OVER (ORDER BY b) FROM t ORDER BY 1;", - Expected: []sql.Row{{float64(1)}, {float64(3)}, {float64(6)}, {float64(10)}, {float64(15)}, {float64(21)}}, + Expected: []sql.UntypedSqlRow{{float64(1)}, {float64(3)}, {float64(6)}, {float64(10)}, {float64(15)}, {float64(21)}}, }, { Query: "SELECT SUM(b) OVER (PARTITION BY a ORDER BY b), SUM(b) OVER (ORDER BY b) FROM t ORDER BY 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(1), float64(1)}, {float64(3), float64(3)}, {float64(4), float64(10)}, @@ -4519,15 +4519,15 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT SUM(b) OVER (PARTITION BY a) FROM t ORDER BY 1;", - Expected: []sql.Row{{float64(6)}, {float64(6)}, {float64(6)}, {float64(15)}, {float64(15)}, {float64(15)}}, + Expected: []sql.UntypedSqlRow{{float64(6)}, {float64(6)}, {float64(6)}, {float64(15)}, {float64(15)}, {float64(15)}}, }, { Query: "SELECT SUM(b) OVER () FROM t ORDER BY 1;", - Expected: []sql.Row{{float64(21)}, {float64(21)}, {float64(21)}, {float64(21)}, {float64(21)}, {float64(21)}}, + Expected: []sql.UntypedSqlRow{{float64(21)}, {float64(21)}, {float64(21)}, {float64(21)}, {float64(21)}, {float64(21)}}, }, { Query: "SELECT SUM(b) OVER (PARTITION BY a), SUM(b) OVER () FROM t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {float64(6), float64(21)}, {float64(6), float64(21)}, {float64(6), float64(21)}, @@ -4546,7 +4546,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT @testValue;", - Expected: []sql.Row{{"809826404100301269648758758005707100"}}, + Expected: []sql.UntypedSqlRow{{"809826404100301269648758758005707100"}}, }, }, }, @@ -4559,11 +4559,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select d div 314990 from t order by d;", - Expected: []sql.Row{{0}, {0}, {70}}, + Expected: []sql.UntypedSqlRow{{0}, {0}, {70}}, }, { Query: "select d / 314990 from t order by d;", - Expected: []sql.Row{{"-0.01584177275469"}, {"0.00000634940792"}, {"70.91202260389219"}}, + Expected: []sql.UntypedSqlRow{{"-0.01584177275469"}, {"0.00000634940792"}, {"70.91202260389219"}}, }, }, }, @@ -4609,7 +4609,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select i, find_in_set('a', s) from set_tbl;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 0}, @@ -4622,7 +4622,7 @@ CREATE TABLE tab3 ( }, { Query: "select i, find_in_set('A', s) from collate_tbl;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {1, 1}, {2, 0}, @@ -4635,7 +4635,7 @@ CREATE TABLE tab3 ( }, { Query: "select i, find_in_set('a', s) from enum_tbl;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 1}, {1, 0}, {2, 0}, @@ -4651,13 +4651,13 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select COLUMN_NAME, DATA_TYPE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='c';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"coalesce(NULL,1)", "int"}, }, }, @@ -4671,7 +4671,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO a VALUES (1, 1)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO a VALUES (1, 1)", @@ -4688,23 +4688,23 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "show tables;", - Expected: []sql.Row{{"t1"}, {"v1"}}, + Expected: []sql.UntypedSqlRow{{"t1"}, {"v1"}}, }, { Query: "rename table v1 to view1", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, }, { Query: "show tables;", - Expected: []sql.Row{{"t1"}, {"view1"}}, + Expected: []sql.UntypedSqlRow{{"t1"}, {"view1"}}, }, { Query: "rename table view1 to newViewName, t1 to newTableName", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, }, { Query: "show tables;", - Expected: []sql.Row{{"newTableName"}, {"newViewName"}}, + Expected: []sql.UntypedSqlRow{{"newTableName"}, {"newViewName"}}, }, }, }, @@ -4717,7 +4717,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "show tables;", - Expected: []sql.Row{{"t1"}, {"v1"}}, + Expected: []sql.UntypedSqlRow{{"t1"}, {"v1"}}, }, { Query: "alter table v1 rename to view1", @@ -4725,7 +4725,7 @@ CREATE TABLE tab3 ( }, { Query: "show tables;", - Expected: []sql.Row{{"t1"}, {"v1"}}, + Expected: []sql.UntypedSqlRow{{"t1"}, {"v1"}}, }, }, }, @@ -4739,12 +4739,12 @@ CREATE TABLE tab3 ( // To match MySQL's behavior, this comes from the operating system's timezone setting // TODO: the "global" shouldn't be necessary here, but GMS goes to session without it Query: `select @@global.system_time_zone;`, - Expected: []sql.Row{{gmstime.SystemTimezoneOffset()}}, + Expected: []sql.UntypedSqlRow{{gmstime.SystemTimezoneOffset()}}, }, { // The default time_zone setting for MySQL is SYSTEM, which means timezone comes from @@system_time_zone Query: `select @@time_zone;`, - Expected: []sql.Row{{"SYSTEM"}}, + Expected: []sql.UntypedSqlRow{{"SYSTEM"}}, }, }, }, @@ -4754,42 +4754,42 @@ CREATE TABLE tab3 ( { // Smoke test that NOW() and UTC_TIMESTAMP() return non-null values with the SYSTEM time zone Query: `select @@time_zone, NOW() IS NOT NULL, UTC_TIMESTAMP() IS NOT NULL;`, - Expected: []sql.Row{{"SYSTEM", true, true}}, + Expected: []sql.UntypedSqlRow{{"SYSTEM", true, true}}, }, { // CURTIME() returns the same time as NOW() with the SYSTEM timezone // TODO: TIME(NOW()) would be simpler test logic, but doesn't work correctly here. Query: `select @@time_zone, NOW() LIKE CONCAT('%', CURTIME(), '%');`, - Expected: []sql.Row{{"SYSTEM", true}}, + Expected: []sql.UntypedSqlRow{{"SYSTEM", true}}, }, { // Set the timezone set to UTC as an offset Query: `set @@time_zone='+00:00';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // When the session's time zone is set to UTC, NOW() and UTC_TIMESTAMP() should return the same value Query: `select @@time_zone, NOW(6) = UTC_TIMESTAMP();`, - Expected: []sql.Row{{"+00:00", true}}, + Expected: []sql.UntypedSqlRow{{"+00:00", true}}, }, { // CURTIME() returns the same time as NOW() with UTC's timezone offset Query: `select @@time_zone, NOW() LIKE CONCAT('%', CURTIME(), '%');`, - Expected: []sql.Row{{"+00:00", true}}, + Expected: []sql.UntypedSqlRow{{"+00:00", true}}, }, { Query: `set @@time_zone='+02:00';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // When the session's time zone is set to +2:00, NOW() should report two hours ahead of UTC_TIMESTAMP() Query: `select @@time_zone, TIMESTAMPDIFF(MINUTE, NOW(6), UTC_TIMESTAMP());`, - Expected: []sql.Row{{"+02:00", -120}}, + Expected: []sql.UntypedSqlRow{{"+02:00", -120}}, }, { // CURTIME() returns the same time as NOW() with a +2:00 timezone offset Query: `select @@time_zone, NOW() LIKE CONCAT('%', CURTIME(), '%');`, - Expected: []sql.Row{{"+02:00", true}}, + Expected: []sql.UntypedSqlRow{{"+02:00", true}}, }, }, }, @@ -4805,13 +4805,13 @@ CREATE TABLE tab3 ( // When reading back the datetime and timestamp values in the same time zone we entered them, // we should get the exact same results back. Query: `select * from timezonetest;`, - Expected: []sql.Row{{1, + Expected: []sql.UntypedSqlRow{{1, time.Date(2020, time.February, 14, 12, 0, 0, 0, time.UTC), time.Date(2020, time.February, 14, 12, 0, 0, 0, time.UTC)}}, }, { Query: `set @@time_zone='-08:00';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // TODO: Unskip after adding support for converting timestamp values to/from session time_zone @@ -4819,24 +4819,24 @@ CREATE TABLE tab3 ( // After changing the session's time zone, we should get back a different result for the timestamp // column, but the same result for the datetime column. Query: `select * from timezonetest;`, - Expected: []sql.Row{{1, + Expected: []sql.UntypedSqlRow{{1, time.Date(2020, time.February, 14, 12, 0, 0, 0, time.UTC), time.Date(2020, time.February, 14, 4, 0, 0, 0, time.UTC)}}, }, { Query: `set @@time_zone='+5:00';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // Test with explicit timezone in datetime literal Query: `insert into timezonetest values(3, '2020-02-16 12:00:00 +0800 CST', '2020-02-16 12:00:00 +0800 CST');`, - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { // TODO: Unskip after adding support for converting timestamp values to/from session time_zone Skip: true, Query: `select * from timezonetest;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, time.Date(2020, time.February, 14, 12, 0, 0, 0, time.UTC), time.Date(2020, time.February, 14, 17, 0, 0, 0, time.UTC)}, {3, time.Date(2020, time.February, 16, 9, 0, 0, 0, time.UTC), @@ -4844,13 +4844,13 @@ CREATE TABLE tab3 ( }, { Query: `set @@time_zone='+0:00';`, - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { // TODO: Unskip after adding support for converting timestamp values to/from session time_zone Skip: true, Query: `select * from timezonetest;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, time.Date(2020, time.February, 14, 12, 0, 0, 0, time.UTC), time.Date(2020, time.February, 14, 12, 0, 0, 0, time.UTC)}, {3, time.Date(2020, time.February, 16, 9, 0, 0, 0, time.UTC), @@ -4872,7 +4872,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT pk FROM tab2 WHERE ((((((col0 IN (SELECT col3 FROM tab2 WHERE ((col1 = 672.71)) AND col4 IN (SELECT col1 FROM tab2 WHERE ((col4 > 169.88 OR col0 > 939 AND ((col3 > 578))))) AND col0 >= 377) AND col4 >= 817.87 AND (col4 > 597.59)) OR col4 >= 434.59 AND ((col4 < 158.43)))))) AND col0 < 303) OR ((col0 > 549)) AND (col4 BETWEEN 816.92 AND 983.96) OR (col3 BETWEEN 421 AND 96);", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -4885,11 +4885,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "update t set i = 0 where false", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 0}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, InsertID: 0, Info: plan.UpdateInfo{Matched: 0}}}}, }, { Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -4906,11 +4906,11 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "create index idx_one on TABLE_ONE (vAL1);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table TABLE_one;", - Expected: []sql.Row{{"table_One", + Expected: []sql.UntypedSqlRow{{"table_One", "CREATE TABLE `table_One` (\n" + " `Id` int NOT NULL,\n" + " `Val1` int,\n" + @@ -4920,18 +4920,18 @@ CREATE TABLE tab3 ( }, { Query: "show index from TABLE_one;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"table_One", 0, "PRIMARY", 1, "Id", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"table_One", 1, "idx_one", 1, "Val1", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}, }, }, { Query: "create index idx_one on TABLEtwo (VAL2, VAL3);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table TABLETWO;", - Expected: []sql.Row{{"TableTwo", "CREATE TABLE `TableTwo` (\n" + + Expected: []sql.UntypedSqlRow{{"TableTwo", "CREATE TABLE `TableTwo` (\n" + " `iD` int NOT NULL,\n" + " `VAL2` int,\n" + " `vAL3` int,\n" + @@ -4941,7 +4941,7 @@ CREATE TABLE tab3 ( }, { Query: "show index from tABLEtwo;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"TableTwo", 0, "PRIMARY", 1, "iD", nil, 0, nil, nil, "", "BTREE", "", "", "YES", nil}, {"TableTwo", 1, "idx_one", 1, "VAL2", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}, {"TableTwo", 1, "idx_one", 2, "vAL3", nil, 0, nil, nil, "YES", "BTREE", "", "", "YES", nil}, @@ -4949,15 +4949,15 @@ CREATE TABLE tab3 ( }, { Query: "drop index IDX_ONE on TABLE_one;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "drop index IDX_ONE on TABLEtwo;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table TABLE_one;", - Expected: []sql.Row{{"table_One", + Expected: []sql.UntypedSqlRow{{"table_One", "CREATE TABLE `table_One` (\n" + " `Id` int NOT NULL,\n" + " `Val1` int,\n" + @@ -4966,7 +4966,7 @@ CREATE TABLE tab3 ( }, { Query: "show create table TABLETWO;", - Expected: []sql.Row{{"TableTwo", "CREATE TABLE `TableTwo` (\n" + + Expected: []sql.UntypedSqlRow{{"TableTwo", "CREATE TABLE `TableTwo` (\n" + " `iD` int NOT NULL,\n" + " `VAL2` int,\n" + " `vAL3` int,\n" + @@ -5000,31 +5000,31 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SET time_zone = '+07:00';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT UNIX_TIMESTAMP('2023-09-25 07:02:57');", - Expected: []sql.Row{{1695600177}}, + Expected: []sql.UntypedSqlRow{{1695600177}}, }, { Query: "SELECT UNIX_TIMESTAMP(CONVERT_TZ('2023-09-25 07:02:57', '+00:00', @@session.time_zone));", - Expected: []sql.Row{{"1695625377.000000"}}, + Expected: []sql.UntypedSqlRow{{"1695625377.000000"}}, }, { Query: "SET time_zone = '+00:00';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT UNIX_TIMESTAMP('2023-09-25 07:02:57');", - Expected: []sql.Row{{1695625377}}, + Expected: []sql.UntypedSqlRow{{1695625377}}, }, { Query: "SET time_zone = '-06:00';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT UNIX_TIMESTAMP('2023-09-25 07:02:57');", - Expected: []sql.Row{{1695646977}}, + Expected: []sql.UntypedSqlRow{{1695646977}}, }, }, }, @@ -5053,15 +5053,15 @@ CREATE TABLE tab3 ( }, { Query: "RENAME TABLE d TO a;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SELECT * FROM b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "ALTER TABLE a RENAME COLUMN col1 TO newcol;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // TODO: View definition should have 'SELECT *' be expanded to each column of the referenced table @@ -5094,93 +5094,93 @@ CREATE TABLE tab3 ( { // surprisingly, this works Query: "select db1.t1.i from db1.t1 where db1.``.i > 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select db1.t1.i from db1.t1 where db1.t1.i > 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select db1.t1.i from db1.t1 order by db1.t1.i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select db1.t1.i from db1.t1 group by db1.t1.i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select db1.t1.i from db1.t1 having db1.t1.i > 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select (select db1.t1.i from db1.t1 order by db1.t1.i)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select i from (select db1.t1.i from db1.t1 order by db1.t1.i) as t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "with cte as (select db1.t1.i from db1.t1 order by db1.t1.i) select * from cte", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select i, j from db1.t1 inner join db2.t2 on 20 * i = j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, }, }, { Query: "select db1.t1.i, db2.t2.j from db1.t1 inner join db2.t2 on 20 * db1.t1.i = db2.t2.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, }, }, { Query: "select i, j from db1.t1 join db2.t2 order by i, j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, }, }, { Query: "select i, j from db1.t1 join db2.t2 group by i order by j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, }, }, { Query: "select db1.t1.i, db2.t2.j from db1.t1 join db2.t2 group by db1.t1.i order by db2.t2.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, }, }, { Skip: true, // incorrectly throws Not unique table/alias: t1 Query: "select db1.t1.i, db2.t1.i from db1.t1 join db2.t1 order by db1.t1, db2.t1.i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, }, }, { // Aliasing solves it Query: "select a.i, b.i from db1.t1 a join db2.t1 b order by a.i, b.i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10}, }, }, @@ -5195,7 +5195,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t order by `100`", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 1}, {1, 2}, }, @@ -5206,7 +5206,7 @@ CREATE TABLE tab3 ( }, { Query: "select i as `200`, `100` from t order by `200`", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 1}, }, @@ -5221,7 +5221,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t order by -999", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, {2, 1}, }, @@ -5260,7 +5260,7 @@ CREATE TABLE tab3 ( t2 on t1.id = t2.id and t1.a = t2.b;`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -5286,7 +5286,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT pk FROM tab2 WHERE col4 IS NULL OR col0 > 560 AND (col3 < 848) OR (col3 > 883) OR (((col4 >= 539.78 AND col3 <= 953))) OR ((col3 IN (258)) OR (col3 IN (583,234,372)) AND col4 >= 488.43)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {63}, }, }, @@ -5302,7 +5302,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t where (((v1>25 and v2 between 23 and 54) or (v1<>40 and v3>90)) or (v1<>7 and v4<=78));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 26, 24, 91, 0}, }, }, @@ -5318,7 +5318,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select pk, col0 from t where (col0 in (73,69)) or col0 in (4,12,3,17,70,20) or (col0 in (39) or (col1 < 69.67));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 22}, }, }, @@ -5335,52 +5335,52 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "update t set i = default where i = 100;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, "a"}, {200, "b"}, }, }, { Query: "update t set j = default where i = 200;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, "a"}, {200, "abcdef"}, }, }, { Query: "update t set i = default, j = default;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2, Info: plan.UpdateInfo{Matched: 2, Updated: 2}}}, }, }, { Query: "select * from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, "abcdef"}, {10, "abcdef"}, }, }, { Query: "update t2 set i = default", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, {nil}, {nil}, @@ -5397,74 +5397,74 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t0 where i > 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i > 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i > 0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i > 0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i > 1.0 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i > 1.1 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i > -0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i > -0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i > -0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i > -0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i > -1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i > -1.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5473,71 +5473,71 @@ CREATE TABLE tab3 ( { Query: "select * from t0 where i >= 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i >= 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i >= 0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i >= 0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i >= 1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i >= 1.1 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i >= -0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i >= -0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i >= -0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i >= -0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i >= -1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5545,7 +5545,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i >= -1.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5554,41 +5554,41 @@ CREATE TABLE tab3 ( { Query: "select * from t0 where i < 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i < 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i < 0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i < 0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i < 1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i < 1.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5597,68 +5597,68 @@ CREATE TABLE tab3 ( { Query: "select * from t0 where i < -0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i < -0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i < -0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i < -0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i < -1.0 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i < -1.1 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i <= 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i <= 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i <= 0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i <= 0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i <= 1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5666,7 +5666,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i <= 1.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5675,94 +5675,94 @@ CREATE TABLE tab3 ( { Query: "select * from t0 where i <= -0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, }, { Query: "select * from t0 where i <= -0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i <= -0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i <= -0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i <= -1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i <= -1.1 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from t0 where i = 0.1 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = 0.5 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = 0.9 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = -0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from t0 where i = -0.1 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = -0.5 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = -0.9 order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t0 where i = -1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, }, }, { Query: "select * from t0 where i != 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {1}, }, }, { Query: "select * from t0 where i != 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5770,7 +5770,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i != 0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5778,7 +5778,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i != 0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5787,14 +5787,14 @@ CREATE TABLE tab3 ( { Query: "select * from t0 where i != -0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {1}, }, }, { Query: "select * from t0 where i != -0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5802,7 +5802,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i != -0.5 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5810,7 +5810,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i != -0.9 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5818,7 +5818,7 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i != -1.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, @@ -5826,13 +5826,13 @@ CREATE TABLE tab3 ( { Query: "select * from t0 where i <= 0.0 and i >= 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from t0 where i <= 0.1 or i >= 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5840,13 +5840,13 @@ CREATE TABLE tab3 ( }, { Query: "select * from t0 where i > 0.1 and i >= 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t0 where i > 0.1 or i >= 0.1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -5862,14 +5862,14 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t0 where i >= 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, }, }, { Query: "select * from t0 where i <= 0.0 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, }, @@ -5877,7 +5877,7 @@ CREATE TABLE tab3 ( { // cot(-939932070) = -1.1919623754564008 Query: "SELECT * from t0 where (cot(-939932070) < i);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {0}, {1}, @@ -5894,28 +5894,28 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t where (d in (null, 1));", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t where (f in (null, 1));", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // select count to avoid floating point comparison Query: "select count(*) from t where (d in (null, 0.8));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { // This actually matches MySQL behavior Query: "select * from t where (f in (null, 0.8));", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // select count to avoid floating point comparison Query: "select count(*) from t where (f in (null, cast(0.8 as float)));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -5933,25 +5933,25 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t where (b in (-''));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from t where (b in (false/'1'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from t_idx where (b in (-''));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from t_idx where (b in (false/'1'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, @@ -5969,25 +5969,25 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select * from t where (v in (-''));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "select * from t where (v in (false/'1'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "select * from t_idx where (v in (-''));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, { Query: "select * from t_idx where (v in (false/'1'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, }, }, @@ -6006,7 +6006,7 @@ CREATE TABLE tab3 ( { Skip: true, Query: "select * from t where (v in (0.0, 123));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, {"0.0"}, {"123"}, @@ -6016,7 +6016,7 @@ CREATE TABLE tab3 ( { Skip: true, Query: "select * from t_idx where (v in (0.0, 123));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"0"}, {"0.0"}, {"123"}, @@ -6036,13 +6036,13 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select a.i from (select 'test' as name) sq join a on sq.name = a.name join b on b.i between a.start and a.end;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from (select 'test' as name, 1 as x, 2 as y, 3 as z) sq join a on sq.name = a.name join b on b.i between a.start and a.end;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"test", 1, 2, 3, 1, 603000, 605001, "test", 605000}, }, }, @@ -6059,7 +6059,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "update child set i = 1 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 0, Info: plan.UpdateInfo{Matched: 0, Updated: 0}}}, }, }, @@ -6076,14 +6076,14 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT t0.c0, t1.c1 FROM t0 LEFT JOIN t1 ON true;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {1, 1}, }, }, { Query: "SELECT t0.c0, t1.c1 FROM t0 LEFT JOIN t1 ON ('a' NOT BETWEEN false AND false) WHERE 1 UNION ALL SELECT t0.c0, t1.c1 FROM t0 LEFT JOIN t1 ON ('a' NOT BETWEEN false AND false) WHERE (NOT 1) UNION ALL SELECT t0.c0, t1.c1 FROM t0 LEFT JOIN t1 ON ('a' NOT BETWEEN false AND false) WHERE (1 IS NULL);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, }, }, @@ -6103,7 +6103,7 @@ CREATE TABLE tab3 ( {Name: "dEF", Type: types.Int32}, }, Query: "select * from t ", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, @@ -6113,7 +6113,7 @@ CREATE TABLE tab3 ( {Name: "dEF", Type: types.Int32}, }, Query: "select * from (select * from t) sqa", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 2}, }, }, @@ -6131,19 +6131,19 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t1, t0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1", 1}, }, }, { Query: "SELECT (t1.c1 = t0.c0) FROM t1, t0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT * FROM t1, t0 WHERE t1.c1 = t0.c0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1", 1}, }, }, @@ -6161,19 +6161,19 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t1, t0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1", 1}, }, }, { Query: "SELECT (t1.c1 = t0.c0) FROM t1, t0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {true}, }, }, { Query: "SELECT * FROM t1, t0 WHERE t1.c1 = t0.c0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"1", 1}, }, }, @@ -6218,7 +6218,7 @@ CREATE TABLE tab3 ( jc.archived = jc.id, jc.archived_at = now() where jp.id > 0 and jp.name != "never" limit 100`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 8, Info: plan.UpdateInfo{Matched: 8, Updated: 8}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 8, Info: plan.UpdateInfo{Matched: 8, Updated: 8}}}}, }, // do without limit to use `plan.Sort` instead of `plan.TopN` { @@ -6227,7 +6227,7 @@ CREATE TABLE tab3 ( set jp.archived = 0, jp.archived_at = null, jc.archived = 0, jc.archived_at = null where jp.id > 0 and jp.name != "never"`, - Expected: []sql.Row{{types.OkResult{RowsAffected: 8, Info: plan.UpdateInfo{Matched: 8, Updated: 8}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 8, Info: plan.UpdateInfo{Matched: 8, Updated: 8}}}}, }, }, }, @@ -6240,13 +6240,13 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "select count(distinct i, j) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select count(distinct cast(i as decimal), cast(j as decimal)) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -6266,21 +6266,21 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT /*+ LOOKUP_JOIN(t0,t1) JOIN_ORDER(t0,t1) */ * FROM t1 INNER JOIN t0 ON ((t0.c0)=(t1.c0));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "a"}, {1, "1"}, }, }, { Query: "INSERT INTO t0(c0) VALUES ('2abc');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Skip: true, Query: "SELECT /*+ LOOKUP_JOIN(t0,t1) JOIN_ORDER(t0,t1) */ * FROM t1 INNER JOIN t0 ON ((t0.c0)=(t1.c0));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "a"}, {1, "1"}, {2, "2abc"}, @@ -6299,7 +6299,7 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: `SELECT - col2 AS col0 FROM tab2 GROUP BY col0, col2 HAVING NOT + + col2 <= - col0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-87}, {-79}, {-58}, @@ -6307,7 +6307,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT -col2 AS col0 FROM tab2 GROUP BY col0, col2 HAVING NOT col2 <= - col0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-87}, {-79}, {-58}, @@ -6315,7 +6315,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT -col2 AS col0 FROM tab2 GROUP BY col0, col2 HAVING col2 > -col0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-87}, {-79}, {-58}, @@ -6323,7 +6323,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT 500 * col2 AS col0 FROM tab2 GROUP BY col0, col2 HAVING col2 > -col0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {43500}, {39500}, {29000}, @@ -6332,7 +6332,7 @@ CREATE TABLE tab3 ( { Query: `select col2-100 as col0 from tab2 group by col0 having col0 > 0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-13}, {-21}, {-42}, @@ -6340,11 +6340,11 @@ CREATE TABLE tab3 ( }, { Query: `select col2-100 as col0 from tab2 group by 1 having col0 > 0;`, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: `select col0, count(col0) as c from tab2 group by col0 having c > 0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15, 1}, {91, 1}, {92, 1}, @@ -6352,7 +6352,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT col0 as a FROM tab2 GROUP BY a HAVING col0 = a;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15}, {91}, {92}, @@ -6360,7 +6360,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT col0 as a FROM tab2 GROUP BY col0 HAVING col0 = a;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15}, {91}, {92}, @@ -6368,7 +6368,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT col0 as a FROM tab2 GROUP BY col0, a HAVING col0 = a;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15}, {91}, {92}, @@ -6376,7 +6376,7 @@ CREATE TABLE tab3 ( }, { Query: `SELECT col0 as a FROM tab2 HAVING col0 = a;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15}, {91}, {92}, @@ -6384,7 +6384,7 @@ CREATE TABLE tab3 ( }, { Query: `select col0, (select col1 having col0 > 0) as asdf from tab2 where col0 < 1000;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15, 61}, {91, 59}, {92, 41}, @@ -6392,7 +6392,7 @@ CREATE TABLE tab3 ( }, { Query: `select col0, sum(col1 * col2) as val from tab2 group by col0 having sum(col1 * col2) > 0;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {15, 5307.0}, {91, 4661.0}, {92, 2378.0}, @@ -6425,23 +6425,23 @@ CREATE TABLE tab3 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT col2 IN ( 98 + col0 / 99 ) from tab0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT col2 IN ( 98 + 97 / 99 ) from tab0;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {false}, }, }, { Query: "SELECT * FROM tab0 WHERE col2 IN ( 98 + 97 / 99 );", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT ALL * FROM tab0 AS cor0 WHERE col2 IN ( 39 + + 89, col0 + + col1 + + ( - ( - col0 ) ) / col2, + ( col0 ) + - 99, + col1, + col2 * - + col2 * - 12 + col1 + - 66 );", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -6460,7 +6460,7 @@ WHERE b1 in (213, 55, 992, 922, 619, 972, 654, 130, 88, 141, 679, 761) OR (a1=145 AND b1=818); `, - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -6538,7 +6538,7 @@ where b6 = a8 ; `, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, }, }, @@ -6553,7 +6553,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "show create table t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int DEFAULT (convert(NOW(), signed))\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -6561,7 +6561,7 @@ where }, { Query: "show create table t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `i` int DEFAULT (convert(NOW(6), signed))\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, @@ -6580,37 +6580,37 @@ where Assertions: []ScriptTestAssertion{ { Query: "select cast(b as char) from t where b < cast('def' as binary(3));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select cast(b as char) from t where b = cast('def' as binary(3));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Query: "select cast(b as char) from t where b > cast('def' as binary(3));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: "select cast(b as char(3)) from tt where b < cast('def' as binary(10));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select cast(b as char(3)) from tt where b = cast('def' as binary(10));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Query: "select cast(b as char(3)) from tt where b > cast('def' as binary(10));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, @@ -6625,32 +6625,32 @@ where Assertions: []ScriptTestAssertion{ { Query: "select * from vt where v = 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Query: "select * from vt where v < 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select * from vt where v > 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: "select * from vt where v <= 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select * from vt where v >= 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, {"ghi"}, }, @@ -6658,31 +6658,31 @@ where { Query: "select * from vt where v = 'defdef';", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from vt where v < 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select * from vt where v > 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: "select * from vt where v <= 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select * from vt where v >= 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, @@ -6691,26 +6691,26 @@ where { Skip: true, Query: `select * from vt where v = 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Skip: true, Query: `select * from vt where v < 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: `select * from vt where v > 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: `select * from vt where v <= 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, @@ -6718,7 +6718,7 @@ where { Skip: true, Query: `select * from vt where v >= 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, {"ghi"}, }, @@ -6726,32 +6726,32 @@ where { Query: "select * from vt where v = cast('def' as char(6));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Query: "select * from vt where v < cast('def' as char(6));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select * from vt where v > cast('def' as char(6));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: "select * from vt where v <= cast('def' as char(6));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select * from vt where v >= cast('def' as char(6));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, {"ghi"}, }, @@ -6767,32 +6767,32 @@ where Assertions: []ScriptTestAssertion{ { Query: "select cast(v as char(3)) from vt where v = 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Query: "select cast(v as char(3)) from vt where v < 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "select cast(v as char(3)) from vt where v > 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: "select cast(v as char(3)) from vt where v <= 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select cast(v as char(3)) from vt where v >= 'def';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, {"ghi"}, }, @@ -6800,31 +6800,31 @@ where { Query: "select cast(v as char(3)) from vt where v = 'defdef';", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select cast(v as char(3)) from vt where v < 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select cast(v as char(3)) from vt where v > 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: "select cast(v as char(3)) from vt where v <= 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, }, { Query: "select cast(v as char(3)) from vt where v >= 'defdef';", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, @@ -6833,26 +6833,26 @@ where { Skip: true, Query: `select cast(v as char(3)) from vt where v = 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, }, }, { Skip: true, Query: `select cast(v as char(3)) from vt where v < 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: `select cast(v as char(3)) from vt where v > 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ghi"}, }, }, { Query: `select cast(v as char(3)) from vt where v <= 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"def"}, }, @@ -6860,7 +6860,7 @@ where { Skip: true, Query: `select cast(v as char(3)) from vt where v >= 'def\0\0';`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def"}, {"ghi"}, }, @@ -6880,13 +6880,13 @@ where }, { Query: "insert into t1 (b, a) values ('1234567890', '12345')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select a, b from t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"12345", "1234567890"}, }, }, @@ -6897,13 +6897,13 @@ where }, { Query: "insert into t2 (b, a) values ('1234567890', '12345')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select a, b from t2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"12345", "1234567890"}, }, }, @@ -6919,7 +6919,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select i, json_search(j, 'all', 'abc') from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, types.MustJSON(`"$.a"`)}, {1, types.MustJSON(`"$.b"`)}, {2, types.MustJSON(`"$.c"`)}, @@ -6930,7 +6930,7 @@ where }, { Query: "select i, json_search(j, 'all', 'def') from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, nil}, {1, nil}, {2, nil}, @@ -6941,7 +6941,7 @@ where }, { Query: "select i, json_search(j, 'all', 'abc', '', '$.a', '$.b') from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, types.MustJSON(`"$.a"`)}, {1, types.MustJSON(`"$.b"`)}, {2, nil}, @@ -6963,25 +6963,25 @@ where Assertions: []ScriptTestAssertion{ { Query: "show create database def_db", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"def_db", "CREATE DATABASE `def_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin */"}, }, }, { Query: "show create database latin1_db", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1_db", "CREATE DATABASE `latin1_db` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */"}, }, }, { Query: "show create database bin_db", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"bin_db", "CREATE DATABASE `bin_db` /*!40100 DEFAULT CHARACTER SET binary COLLATE binary */"}, }, }, { Query: "show create database mb3_db", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mb3_db", "CREATE DATABASE `mb3_db` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci */"}, }, }, @@ -6996,20 +6996,20 @@ where Assertions: []ScriptTestAssertion{ { Query: "select @@global.character_set_server, @@global.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4_0900_bin"}, }, }, { Query: "select @@session.character_set_server, @@session.collation_server;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1", "latin1_swedish_ci"}, }, }, { // Interestingly, session actually takes priority over global Query: "show create database latin1_db", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"latin1_db", "CREATE DATABASE `latin1_db` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */"}, }, }, @@ -7032,7 +7032,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " KEY `i` (`i`),\n" + @@ -7045,7 +7045,7 @@ where // MySQL preserves the other that indexes are created // We store them in a map, so we have to sort to have some consistency Query: "show create table tt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"tt", "CREATE TABLE `tt` (\n" + " `i` int,\n" + " KEY `i` (`i`),\n" + @@ -7068,7 +7068,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select * from (t1)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -7076,7 +7076,7 @@ where }, { Query: "select * from (((((t1)))))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -7084,7 +7084,7 @@ where }, { Query: "select * from (((((t1 as t11)))))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -7092,35 +7092,35 @@ where }, { Query: "select * from (t1) join t2 where t1.i = t2.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 3}, }, }, { Query: "select * from t1 join (t2) where t1.i = t2.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 3}, }, }, { Query: "select * from (t1) join (t2) where t1.i = t2.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 3}, }, }, { Query: "select * from ((((t1)))) join ((((t2)))) where t1.i = t2.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 3}, }, }, { Query: "select * from (t1 as t11) join (t2 as t22) where t11.i = t22.j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {3, 3}, }, @@ -7147,13 +7147,13 @@ where }, { Query: "insert into t(b) values (X'9876543210');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "insert into t(bi) values (X'9876543210');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -7177,7 +7177,7 @@ where // TODO: server engine is not respecting timezone SkipResultCheckOnServerEngine: true, Query: "select i, unix_timestamp(v) from t1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, "946730096.000000"}, {1, "946730096.100000"}, {2, "946730096.120000"}, @@ -7201,7 +7201,7 @@ where ExpectedColumns: sql.Schema{ {Name: "123", Type: types.Int8, Nullable: false}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -7210,7 +7210,7 @@ where ExpectedColumns: sql.Schema{ {Name: "abc", Type: types.Int8, Nullable: false}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -7219,7 +7219,7 @@ where ExpectedColumns: sql.Schema{ {Name: "abc", Type: types.Text, Nullable: false}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, @@ -7228,7 +7228,7 @@ where ExpectedColumns: sql.Schema{ {Name: "2000-01-02", Type: types.Int8, Nullable: false}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -7237,7 +7237,7 @@ where ExpectedColumns: sql.Schema{ {Name: "abc", Type: types.Text, Nullable: false}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2001-02-03"}, }, }, @@ -7281,19 +7281,19 @@ where Assertions: []ScriptTestAssertion{ { Query: "select * from t where (t1, t2) in (('ABC', 'DEF'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", "DEF"}, }, }, { Query: "select * from t where (t1, t2) in (('ABC', 'def'));", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ABC", "DEF"}, }, }, { Query: "select * from t where (t1, t2) in (('abc', 'DEF'));", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -7306,7 +7306,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select * from t where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {1}, {1}, @@ -7323,19 +7323,19 @@ where Assertions: []ScriptTestAssertion{ { Query: "select validate_password_strength('')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select validate_password_strength('123')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select validate_password_strength('1234')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {50}, }, }, @@ -7345,7 +7345,7 @@ where }, { Query: "select validate_password_strength('ABCabc123!@!#')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {25}, }, }, @@ -7368,7 +7368,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select validate_password_strength('ABCabc!@#')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100}, }, }, @@ -7378,7 +7378,7 @@ where }, { Query: "select validate_password_strength('ABCabc!!!!123456789012345678901234567890')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {50}, }, }, @@ -7401,13 +7401,13 @@ where Assertions: []ScriptTestAssertion{ { Query: "select validate_password_strength('abcabc!@#123')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100}, }, }, { Query: "select validate_password_strength('ABCABC!@#123')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100}, }, }, @@ -7417,7 +7417,7 @@ where }, { Query: "select validate_password_strength('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456!?!?!?')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {50}, }, }, @@ -7440,7 +7440,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select validate_password_strength('abcABC123')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100}, }, }, @@ -7450,7 +7450,7 @@ where }, { Query: "select validate_password_strength('abcABC123!@#$%^&*() ')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {50}, }, }, @@ -7475,7 +7475,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select i, e, e + 0 from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a", float64(1)}, {2, "b", float64(2)}, {3, "c", float64(3)}, @@ -7483,13 +7483,13 @@ where }, { Query: "alter table t modify column e enum('c', 'a', 'b');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "select i, e, e + 0 from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a", float64(2)}, {2, "b", float64(3)}, {3, "c", float64(1)}, @@ -7497,13 +7497,13 @@ where }, { Query: "alter table t modify column e enum('asdf', 'a', 'b', 'c');", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "select i, e, e + 0 from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "a", float64(2)}, {2, "b", float64(3)}, {3, "c", float64(4)}, @@ -7523,7 +7523,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "describe t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"port1", "bigint", "NO", "", nil, ""}, {"port2", "bigint", "NO", "", nil, ""}, {"port3", "bigint", "NO", "", nil, ""}, @@ -7540,7 +7540,7 @@ where Assertions: []ScriptTestAssertion{ { Query: "select i, (case e when 'abc' then e when 'def' then e when 'ghi' then e end) as e from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "abc"}, {2, "def"}, {3, "ghi"}, @@ -7550,7 +7550,7 @@ where // https://github.com/dolthub/dolt/issues/8598 Skip: true, Query: "select i, (case e when 'abc' then e when 'def' then e when 'ghi' then 'something' end) as e from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "abc"}, {2, "def"}, {3, "something"}, @@ -7560,7 +7560,7 @@ where // https://github.com/dolthub/dolt/issues/8598 Skip: true, Query: "select i, (case e when 'abc' then e when 'def' then e when 'ghi' then 123 end) as e from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "abc"}, {2, "def"}, {3, "123"}, @@ -7579,7 +7579,7 @@ where { Skip: true, Query: "select i, cast(e as signed) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, {3, 3}, @@ -7588,7 +7588,7 @@ where { Skip: true, Query: "select i, cast(e as char) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "abc"}, {2, "def"}, {3, "ghi"}, @@ -7608,15 +7608,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select st_aswkt(p) from test", - Expected: []sql.Row{{"POINT(123.456 7.89)"}}, + Expected: []sql.UntypedSqlRow{{"POINT(123.456 7.89)"}}, }, { Query: "show create table test", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `p` point DEFAULT (point(123.456,7.89)),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `p` point DEFAULT (point(123.456,7.89)),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"p", "point", "YES", "", "(point(123.456,7.89))", "DEFAULT_GENERATED"}, }, @@ -7632,15 +7632,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select st_aswkt(l) from test", - Expected: []sql.Row{{"LINESTRING(1 2,3 4)"}}, + Expected: []sql.UntypedSqlRow{{"LINESTRING(1 2,3 4)"}}, }, { Query: "show create table test", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `l` linestring DEFAULT (linestring(point(1,2),point(3,4))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `l` linestring DEFAULT (linestring(point(1,2),point(3,4))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"l", "linestring", "YES", "", "(linestring(point(1,2),point(3,4)))", "DEFAULT_GENERATED"}, }, @@ -7656,15 +7656,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select st_aswkt(p) from test", - Expected: []sql.Row{{"POLYGON((0 0,1 1,2 2,0 0))"}}, + Expected: []sql.UntypedSqlRow{{"POLYGON((0 0,1 1,2 2,0 0))"}}, }, { Query: "show create table test", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `p` polygon DEFAULT (polygon(linestring(point(0,0),point(1,1),point(2,2),point(0,0)))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `p` polygon DEFAULT (polygon(linestring(point(0,0),point(1,1),point(2,2),point(0,0)))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"p", "polygon", "YES", "", "(polygon(linestring(point(0,0),point(1,1),point(2,2),point(0,0))))", "DEFAULT_GENERATED"}, }, @@ -7680,15 +7680,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select st_aswkt(g) from test", - Expected: []sql.Row{{"POINT(123.456 7.89)"}}, + Expected: []sql.UntypedSqlRow{{"POINT(123.456 7.89)"}}, }, { Query: "show create table test", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `g` geometry DEFAULT (point(123.456,7.89)),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `g` geometry DEFAULT (point(123.456,7.89)),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"g", "geometry", "YES", "", "(point(123.456,7.89))", "DEFAULT_GENERATED"}, }, @@ -7704,15 +7704,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select st_aswkt(g) from test", - Expected: []sql.Row{{"LINESTRING(1 2,3 4)"}}, + Expected: []sql.UntypedSqlRow{{"LINESTRING(1 2,3 4)"}}, }, { Query: "show create table test", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `g` geometry DEFAULT (linestring(point(1,2),point(3,4))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `g` geometry DEFAULT (linestring(point(1,2),point(3,4))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"g", "geometry", "YES", "", "(linestring(point(1,2),point(3,4)))", "DEFAULT_GENERATED"}, }, @@ -7728,15 +7728,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select st_aswkt(g) from test", - Expected: []sql.Row{{"POLYGON((0 0,1 1,2 2,0 0))"}}, + Expected: []sql.UntypedSqlRow{{"POLYGON((0 0,1 1,2 2,0 0))"}}, }, { Query: "show create table test", - Expected: []sql.Row{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `g` geometry DEFAULT (polygon(linestring(point(0,0),point(1,1),point(2,2),point(0,0)))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"test", "CREATE TABLE `test` (\n `i` int NOT NULL,\n `g` geometry DEFAULT (polygon(linestring(point(0,0),point(1,1),point(2,2),point(0,0)))),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "describe test", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "PRI", nil, ""}, {"g", "geometry", "YES", "", "(polygon(linestring(point(0,0),point(1,1),point(2,2),point(0,0))))", "DEFAULT_GENERATED"}}, }, @@ -7751,7 +7751,7 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from null_default", - Expected: []sql.Row{{0, nil, nil, nil, nil}}, + Expected: []sql.UntypedSqlRow{{0, nil, nil, nil, nil}}, }, }, }, @@ -7763,15 +7763,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table tab0", - Expected: []sql.Row{{"tab0", "CREATE TABLE `tab0` (\n `i` int NOT NULL,\n `g` geometry /*!80003 SRID 4326 */ DEFAULT (point(1,1)),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"tab0", "CREATE TABLE `tab0` (\n `i` int NOT NULL,\n `g` geometry /*!80003 SRID 4326 */ DEFAULT (point(1,1)),\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "INSERT INTO tab0 VALUES (1, ST_GEOMFROMTEXT(ST_ASWKT(POINT(1,2)), 4326))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select i, ST_ASWKT(g) FROM tab0", - Expected: []sql.Row{{1, "POINT(1 2)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(1 2)"}}, }, { Query: "INSERT INTO tab0 VALUES (2, ST_GEOMFROMTEXT(ST_ASWKT(POINT(2,4))))", @@ -7779,11 +7779,11 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "INSERT INTO tab0 VALUES (2, ST_GEOMFROMTEXT(ST_ASWKT(LINESTRING(POINT(1, 6),POINT(4, 3))), 4326))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select i, ST_ASWKT(g) FROM tab0", - Expected: []sql.Row{{1, "POINT(1 2)"}, {2, "LINESTRING(1 6,4 3)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(1 2)"}, {2, "LINESTRING(1 6,4 3)"}}, }, }, }, @@ -7795,15 +7795,15 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table tab1", - Expected: []sql.Row{{"tab1", "CREATE TABLE `tab1` (\n `i` int NOT NULL,\n `l` linestring /*!80003 SRID 0 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"tab1", "CREATE TABLE `tab1` (\n `i` int NOT NULL,\n `l` linestring /*!80003 SRID 0 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "INSERT INTO tab1 VALUES (1, LINESTRING(POINT(0, 0),POINT(2, 2)))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select i, ST_ASWKT(l) FROM tab1", - Expected: []sql.Row{{1, "LINESTRING(0 0,2 2)"}}, + Expected: []sql.UntypedSqlRow{{1, "LINESTRING(0 0,2 2)"}}, }, { Query: "INSERT INTO tab1 VALUES (2, ST_GEOMFROMTEXT(ST_ASWKT(LINESTRING(POINT(1, 6),POINT(4, 3))), 4326))", @@ -7811,7 +7811,7 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "select i, ST_ASWKT(l) FROM tab1", - Expected: []sql.Row{{1, "LINESTRING(0 0,2 2)"}}, + Expected: []sql.UntypedSqlRow{{1, "LINESTRING(0 0,2 2)"}}, }, }, }, @@ -7823,19 +7823,19 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE tab2 ADD COLUMN p POINT NOT NULL SRID 0", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table tab2", - Expected: []sql.Row{{"tab2", "CREATE TABLE `tab2` (\n `i` int NOT NULL,\n `p` point NOT NULL /*!80003 SRID 0 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"tab2", "CREATE TABLE `tab2` (\n `i` int NOT NULL,\n `p` point NOT NULL /*!80003 SRID 0 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "INSERT INTO tab2 VALUES (1, POINT(2, 2))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select i, ST_ASWKT(p) FROM tab2", - Expected: []sql.Row{{1, "POINT(2 2)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(2 2)"}}, }, { Query: "INSERT INTO tab2 VALUES (2, ST_GEOMFROMTEXT(ST_ASWKT(POINT(1, 6)), 4326))", @@ -7843,19 +7843,19 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "select i, ST_ASWKT(p) FROM tab2", - Expected: []sql.Row{{1, "POINT(2 2)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(2 2)"}}, }, { Query: "ALTER TABLE tab2 CHANGE COLUMN p p POINT NOT NULL", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "INSERT INTO tab2 VALUES (2, ST_GEOMFROMTEXT(ST_ASWKT(POINT(1, 6)), 4326))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select i, ST_ASWKT(p) FROM tab2", - Expected: []sql.Row{{1, "POINT(2 2)"}, {2, "POINT(1 6)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(2 2)"}, {2, "POINT(1 6)"}}, }, { Query: "ALTER TABLE tab2 CHANGE COLUMN p p POINT NOT NULL SRID 4326", @@ -7863,15 +7863,15 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "delete from tab2 where i = 1", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE tab2 CHANGE COLUMN p p POINT NOT NULL SRID 4326", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table tab2", - Expected: []sql.Row{{"tab2", "CREATE TABLE `tab2` (\n `i` int NOT NULL,\n `p` point NOT NULL /*!80003 SRID 4326 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"tab2", "CREATE TABLE `tab2` (\n `i` int NOT NULL,\n `p` point NOT NULL /*!80003 SRID 4326 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, }, }, @@ -7883,19 +7883,19 @@ var SpatialScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table tab3", - Expected: []sql.Row{{"tab3", "CREATE TABLE `tab3` (\n `i` int NOT NULL,\n `y` polygon NOT NULL,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"tab3", "CREATE TABLE `tab3` (\n `i` int NOT NULL,\n `y` polygon NOT NULL,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "INSERT INTO tab3 VALUES (1, polygon(linestring(point(0,0),point(8,0),point(12,9),point(0,9),point(0,0))))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select i, ST_ASWKT(y) FROM tab3", - Expected: []sql.Row{{1, "POLYGON((0 0,8 0,12 9,0 9,0 0))"}}, + Expected: []sql.UntypedSqlRow{{1, "POLYGON((0 0,8 0,12 9,0 9,0 0))"}}, }, { Query: "ALTER TABLE tab3 MODIFY COLUMN y POLYGON NOT NULL SRID 0", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "ALTER TABLE tab3 MODIFY COLUMN y POLYGON NOT NULL SRID 4326", @@ -7903,15 +7903,15 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "select i, ST_ASWKT(y) FROM tab3", - Expected: []sql.Row{{1, "POLYGON((0 0,8 0,12 9,0 9,0 0))"}}, + Expected: []sql.UntypedSqlRow{{1, "POLYGON((0 0,8 0,12 9,0 9,0 0))"}}, }, { Query: "ALTER TABLE tab3 MODIFY COLUMN y GEOMETRY NULL SRID 0", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select i, ST_ASWKT(y) FROM tab3", - Expected: []sql.Row{{1, "POLYGON((0 0,8 0,12 9,0 9,0 0))"}}, + Expected: []sql.UntypedSqlRow{{1, "POLYGON((0 0,8 0,12 9,0 9,0 0))"}}, }, }, }, @@ -7929,17 +7929,17 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "CREATE TABLE table3 (i int primary key, p point srid 3857);", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table table2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"table2", "CREATE TABLE `table2` (\n `i` int NOT NULL,\n `g` geometry /*!80003 SRID 3857 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, { Query: "SELECT i, ST_ASWKT(p) FROM table1;", - Expected: []sql.Row{{1, "POINT(5 1)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(5 1)"}}, }, { Query: "INSERT INTO table1 VALUES (2, POINT(2, 5))", @@ -7947,7 +7947,7 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "SELECT i, ST_ASWKT(p) FROM table1;", - Expected: []sql.Row{{1, "POINT(5 1)"}}, + Expected: []sql.UntypedSqlRow{{1, "POINT(5 1)"}}, }, { Query: "ALTER TABLE table1 CHANGE COLUMN p p linestring srid 4326", @@ -7959,15 +7959,15 @@ var SpatialScriptTests = []ScriptTest{ }, { Query: "ALTER TABLE table1 CHANGE COLUMN p p geometry srid 4326", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show create table table1", - Expected: []sql.Row{{"table1", "CREATE TABLE `table1` (\n `i` int NOT NULL,\n `p` geometry /*!80003 SRID 4326 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"table1", "CREATE TABLE `table1` (\n `i` int NOT NULL,\n `p` geometry /*!80003 SRID 4326 */,\n PRIMARY KEY (`i`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}}, }, { Query: "INSERT INTO table1 VALUES (2, ST_SRID(LINESTRING(POINT(0, 0),POINT(2, 2)),4326))", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "ALTER TABLE table1 CHANGE COLUMN p p point srid 4326", @@ -8044,7 +8044,7 @@ var SpatialIndexScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table geom", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "geom", "CREATE TABLE `geom` (\n" + @@ -8079,19 +8079,19 @@ var SpatialIndexScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table geom_tbl add spatial index (g)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table geom_tbl", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"geom_tbl", "CREATE TABLE `geom_tbl` (\n `g` geometry NOT NULL /*!80003 SRID 0 */,\n SPATIAL KEY `g` (`g`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, { Query: "select count(*) from geom_tbl where st_intersects(g, st_geomfromtext('polygon((0 0,0 10,10 10,10 0,0 0))'))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -8106,19 +8106,19 @@ var SpatialIndexScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table geom_tbl add spatial index (g)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table geom_tbl", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"geom_tbl", "CREATE TABLE `geom_tbl` (\n `i` int NOT NULL,\n `j` int NOT NULL,\n `g` geometry NOT NULL /*!80003 SRID 0 */,\n PRIMARY KEY (`i`,`j`),\n SPATIAL KEY `g` (`g`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, }, }, { Query: "select count(*) from geom_tbl where st_intersects(g, st_geomfromtext('polygon((0 0,0 10,10 10,10 0,0 0))'))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -8153,21 +8153,21 @@ var PreparedScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "prepare cnt from 'select count(*) from a';", - Expected: []sql.Row{{types.OkResult{Info: plan.PrepareInfo{}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{Info: plan.PrepareInfo{}}}}, }, { Query: "execute cnt", - Expected: []sql.Row{{3}}, + Expected: []sql.UntypedSqlRow{{3}}, }, { Query: "insert into a values (3), (4)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "execute cnt", - Expected: []sql.Row{{5}}, + Expected: []sql.UntypedSqlRow{{5}}, }, }, }, @@ -8199,19 +8199,19 @@ var PreparedScriptTests = []ScriptTest{ }, { Query: "prepare s from 'select 1'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, { Query: "execute s", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "deallocate prepare s", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{}}, }, }, @@ -8231,7 +8231,7 @@ var PreparedScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "prepare s from 'select ?'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, @@ -8241,7 +8241,7 @@ var PreparedScriptTests = []ScriptTest{ }, { Query: "execute s using @abc", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {nil}, }, }, @@ -8251,25 +8251,25 @@ var PreparedScriptTests = []ScriptTest{ }, { Query: "execute s using @a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "execute s using @b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100}, }, }, { Query: "execute s using @c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, }, }, { Query: "deallocate prepare s", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{}}, }, }, @@ -8296,13 +8296,13 @@ var PreparedScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "execute s using @d;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"2001-02-03"}, }, }, { Query: "execute s using @dt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2001, time.February, 3, 12, 34, 56, 0, time.UTC)}, }, }, @@ -8310,27 +8310,27 @@ var PreparedScriptTests = []ScriptTest{ // types.Timespan not supported as bindvar Skip: true, Query: "execute s using @t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"12:34:56"}, }, }, { Query: "execute s using @ts;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2001, time.February, 3, 12, 34, 56, 0, time.UTC)}, }, }, { SkipResultCheckOnServerEngine: true, Query: "execute sd using @d;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { SkipResultCheckOnServerEngine: true, Query: "execute sdt using @dt;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, @@ -8339,21 +8339,21 @@ var PreparedScriptTests = []ScriptTest{ Skip: true, SkipResultCheckOnServerEngine: true, Query: "execute st using @t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { SkipResultCheckOnServerEngine: true, Query: "execute sts using @ts;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { // TODO: should also select t when we fix that Query: "select d, dt, ts from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {time.Date(2001, time.February, 3, 0, 0, 0, 0, time.UTC), nil, nil}, {nil, time.Date(2001, time.February, 3, 12, 34, 56, 0, time.UTC), nil}, {nil, nil, time.Date(2001, time.February, 3, 12, 34, 56, 0, time.UTC)}, @@ -8373,7 +8373,7 @@ var PreparedScriptTests = []ScriptTest{ { Skip: true, Query: "execute s using @d;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123.45"}, }, }, @@ -8381,14 +8381,14 @@ var PreparedScriptTests = []ScriptTest{ Skip: true, SkipResultCheckOnServerEngine: true, Query: "execute sd using @d;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123.45"}, }, }, { Skip: true, Query: "select * from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123.45"}, }, }, @@ -8404,7 +8404,7 @@ var PreparedScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "prepare s from 'insert into t values (?,?)'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, @@ -8415,19 +8415,19 @@ var PreparedScriptTests = []ScriptTest{ { SkipResultCheckOnServerEngine: true, // execute depends on prepare stmt for whether to use 'query' or 'exec' from go sql driver. Query: "execute s using @a, @b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from t order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123, "abc"}, }, }, { Query: "deallocate prepare s", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{}}, }, }, @@ -8465,13 +8465,13 @@ var PreparedScriptTests = []ScriptTest{ }, { Query: "prepare stmt from @a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, { Query: "execute stmt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -8479,37 +8479,37 @@ var PreparedScriptTests = []ScriptTest{ }, { Query: "prepare stmt from @b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, { Query: "execute stmt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "prepare stmt from @c", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, { Query: "execute stmt using @num", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "prepare stmt from @d", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, { Query: "execute stmt", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -8529,13 +8529,13 @@ var PreparedScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "prepare s from 'SELECT `t1`.`username`, COUNT(`t1`.`id`) AS `ct` FROM ((SELECT `t2`.`id`, `t2`.`content`, `t3`.`username` FROM `tweet` AS `t2` INNER JOIN `users` AS `t3` ON (`t2`.`user_id` = `t3`.`id`) WHERE (`t3`.`username` = ?)) UNION (SELECT `t4`.`id`, `t4`.`content`, `t5`.`username` FROM `tweet` AS `t4` INNER JOIN `users` AS `t5` ON (`t4`.`user_id` = `t5`.`id`) WHERE (`t5`.`username` IN (?, ?)))) AS `t1` GROUP BY `t1`.`username` ORDER BY COUNT(`t1`.`id`) DESC'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{Info: plan.PrepareInfo{}}}, }, }, { Query: "execute s using @u3, @u2, @u4", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -8549,7 +8549,7 @@ var PreparedScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE mytable DROP COLUMN col2", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, }, }, @@ -8627,7 +8627,7 @@ var PreparedScriptTests = []ScriptTest{ "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" + "")), }, - Expected: []sql.Row{{types.OkResult{ + Expected: []sql.UntypedSqlRow{{types.OkResult{ RowsAffected: 1, InsertID: 1, }}}, @@ -8658,7 +8658,7 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO a VALUES (1, 1)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "INSERT INTO a VALUES (1, 1)", @@ -8674,11 +8674,11 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "ALTER TABLE t ADD COLUMN (v2 int), drop primary key, add primary key (v2)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "NO", "PRI", nil, ""}, @@ -8690,7 +8690,7 @@ var BrokenScriptTests = []ScriptTest{ }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "", nil, ""}, {"v1", "int", "YES", "", nil, ""}, {"v2", "int", "NO", "PRI", nil, ""}, @@ -8700,11 +8700,11 @@ var BrokenScriptTests = []ScriptTest{ // This last modification ends up with a UNIQUE constraint on pk // This is caused by Table.dropColumnFromSchema, not dropping the pkOrdinal, but this causes other problems specific to GMS Query: "ALTER TABLE t ADD column `v4` int NOT NULL, ADD column `v5` int NOT NULL, DROP COLUMN `v1`, ADD COLUMN `v6` int NOT NULL, DROP COLUMN `v2`, ADD COLUMN v7 int NOT NULL", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "DESCRIBE t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"pk", "int", "NO", "", nil, ""}, {"v4", "int", "NO", "", nil, ""}, {"v5", "int", "NO", "", nil, ""}, @@ -8723,7 +8723,7 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT `t1`.`id`, `t1`.`name` FROM `person` AS `t1` WHERE (`t1`.`name` REGEXP 'N[1,3]') ORDER BY `t1`.`name`;", - Expected: []sql.Row{{1, "n1"}, {3, "n3"}}, + Expected: []sql.UntypedSqlRow{{1, "n1"}, {3, "n3"}}, }, }, }, @@ -8742,7 +8742,7 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT DISTINCT YM.YW AS YW,\n (SELECT YW FROM YF WHERE YF.XB = YM.XB) AS YF_YW,\n (\n SELECT YW\n FROM yp\n WHERE\n yp.XJ = YM.XJ AND\n (yp.XL = YM.XL OR (yp.XL IS NULL AND YM.XL IS NULL)) AND\n yp.XT = nd.XT\n ) AS YJ,\n XE AS XE,\n XI AS YO,\n XK AS XK,\n XM AS XM,\n CASE\n WHEN YM.XO <> 'Z'\n THEN YM.XO\n ELSE NULL\n END AS XO\n FROM (\n SELECT YW, XB, XC, XE, XF, XI, XJ, XK,\n CASE WHEN XL = 'Z' OR XL = 'Z' THEN NULL ELSE XL END AS XL,\n XM, XO\n FROM XA\n ) YM\n INNER JOIN XS nd\n ON nd.XV = XF\n WHERE\n XB IN (SELECT XB FROM YF) AND\n (XF IS NOT NULL AND XF <> 'Z')\n UNION\n SELECT DISTINCT YL.YW AS YW,\n (\n SELECT YW\n FROM YF\n WHERE YF.XB = YL.XB\n ) AS YF_YW,\n (\n SELECT YW FROM yp\n WHERE\n yp.XJ = YL.XJ AND\n (yp.XL = YL.XL OR (yp.XL IS NULL AND YL.XL IS NULL)) AND\n yp.XT = YN.XT\n ) AS YJ,\n XE AS XE,\n XI AS YO,\n XK AS XK,\n XM AS XM,\n CASE WHEN YL.XO <> 'Z' THEN YL.XO ELSE NULL END AS XO\n FROM (\n SELECT YW, XB, XC, XE, XF, XI, XJ, XK,\n CASE WHEN XL = 'Z' OR XL = 'Z' THEN NULL ELSE XL END AS XL,\n XM, XO\n FROM XA\n ) YL\n INNER JOIN XS YN\n ON YN.XC = YL.XC\n WHERE\n XB IN (SELECT XB FROM YF) AND \n (XF IS NULL OR XF = 'Z');", - Expected: []sql.Row{{"", "", "", "", "", "", "", ""}}, + Expected: []sql.UntypedSqlRow{{"", "", "", "", "", "", "", ""}}, }, }, }, @@ -8754,7 +8754,7 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "alter table tbl_i add column j int, add check (j < 10);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, @@ -8770,15 +8770,15 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from v1;", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "rename table t1 to t2;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "show tables;", - Expected: []sql.Row{{"myview"}, {"t2"}, {"v1"}}, + Expected: []sql.UntypedSqlRow{{"myview"}, {"t2"}, {"v1"}}, }, { Query: "select * from v1;", @@ -8786,12 +8786,12 @@ var BrokenScriptTests = []ScriptTest{ }, { Query: "show create view v1;", - Expected: []sql.Row{{"v1", "CREATE VIEW `v1` AS select * from t1", "utf8mb4", "utf8mb4_0900_bin"}}, + Expected: []sql.UntypedSqlRow{{"v1", "CREATE VIEW `v1` AS select * from t1", "utf8mb4", "utf8mb4_0900_bin"}}, ExpectedWarningsCount: 1, }, { Query: "show warnings;", - Expected: []sql.Row{{"Warning", 1356, "View 'v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them"}}, + Expected: []sql.UntypedSqlRow{{"Warning", 1356, "View 'v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them"}}, }, }, }, @@ -8804,15 +8804,15 @@ var BrokenScriptTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SET SESSION time_zone = '-05:00';", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "SELECT DATE_FORMAT(ts, '%H:%i:%s'), DATE_FORMAT(dt, '%H:%i:%s') from timezone_test;", - Expected: []sql.Row{{"11:47:00", "08:47:00"}}, + Expected: []sql.UntypedSqlRow{{"11:47:00", "08:47:00"}}, }, { Query: "SELECT UNIX_TIMESTAMP(ts), UNIX_TIMESTAMP(dt) from timezone_test;", - Expected: []sql.Row{{float64(1676393220), float64(1676382420)}}, + Expected: []sql.UntypedSqlRow{{float64(1676393220), float64(1676382420)}}, }, }, }, @@ -8824,23 +8824,23 @@ var CreateDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE DATABASE testdb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "USE testdb", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DATABASE()", - Expected: []sql.Row{{"testdb"}}, + Expected: []sql.UntypedSqlRow{{"testdb"}}, }, { Query: "CREATE TABLE test (pk int primary key)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW TABLES", - Expected: []sql.Row{{"test"}}, + Expected: []sql.UntypedSqlRow{{"test"}}, }, }, }, @@ -8849,23 +8849,23 @@ var CreateDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE DATABASE IF NOT EXISTS testdb2", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "USE testdb2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DATABASE()", - Expected: []sql.Row{{"testdb2"}}, + Expected: []sql.UntypedSqlRow{{"testdb2"}}, }, { Query: "CREATE TABLE test (pk int primary key)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW TABLES", - Expected: []sql.Row{{"test"}}, + Expected: []sql.UntypedSqlRow{{"test"}}, }, }, }, @@ -8874,23 +8874,23 @@ var CreateDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "CREATE SCHEMA testdb3", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "USE testdb3", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DATABASE()", - Expected: []sql.Row{{"testdb3"}}, + Expected: []sql.UntypedSqlRow{{"testdb3"}}, }, { Query: "CREATE TABLE test (pk int primary key)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "SHOW TABLES", - Expected: []sql.Row{{"test"}}, + Expected: []sql.UntypedSqlRow{{"test"}}, }, }, }, @@ -8903,19 +8903,19 @@ var CreateDatabaseScripts = []ScriptTest{ }, { Query: "CREATE DATABASE newtestdb CHARACTER SET utf8mb4 ENCRYPTION='N'", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SHOW WARNINGS /* 1 */", - Expected: []sql.Row{{"Warning", 1235, "Setting CHARACTER SET, COLLATION and ENCRYPTION are not supported yet"}}, + Expected: []sql.UntypedSqlRow{{"Warning", 1235, "Setting CHARACTER SET, COLLATION and ENCRYPTION are not supported yet"}}, }, { Query: "CREATE DATABASE newtest1db DEFAULT COLLATE binary ENCRYPTION='Y'", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "SHOW WARNINGS /* 2 */", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"Warning", 1235, "Setting CHARACTER SET, COLLATION and ENCRYPTION are not supported yet"}, }, }, @@ -8925,11 +8925,11 @@ var CreateDatabaseScripts = []ScriptTest{ }, { Query: "CREATE DATABASE IF NOT EXISTS mydb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SHOW WARNINGS /* 3 */", - Expected: []sql.Row{{"Note", 1007, "Can't create database mydb; database exists "}}, + Expected: []sql.UntypedSqlRow{{"Note", 1007, "Can't create database mydb; database exists "}}, }, }, }, @@ -8941,11 +8941,11 @@ var DropDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DROP DATABASE mydb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SELECT DATABASE()", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { // TODO: incorrect error returned because the currentdb is not set to empty @@ -8963,11 +8963,11 @@ var DropDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "USE testdb", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "DROP DATABASE testdb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "USE testdb", @@ -8984,11 +8984,11 @@ var DropDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DROP DATABASE TESTDB", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SELECT DATABASE()", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "USE testdb", @@ -9004,7 +9004,7 @@ var DropDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DROP SCHEMA TESTDB", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "USE testdb", @@ -9021,23 +9021,23 @@ var DropDatabaseScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "DROP DATABASE IF EXISTS mydb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, }, { Query: "SHOW WARNINGS", - Expected: []sql.Row{{"Note", 1008, "Can't drop database mydb; database doesn't exist "}}, + Expected: []sql.UntypedSqlRow{{"Note", 1008, "Can't drop database mydb; database doesn't exist "}}, }, { Query: "DROP DATABASE IF EXISTS testdb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SHOW WARNINGS", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "SELECT DATABASE()", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "USE testdb", @@ -9045,11 +9045,11 @@ var DropDatabaseScripts = []ScriptTest{ }, { Query: "DROP DATABASE IF EXISTS testdb", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0}}}, }, { Query: "SHOW WARNINGS", - Expected: []sql.Row{{"Note", 1008, "Can't drop database testdb; database doesn't exist "}}, + Expected: []sql.UntypedSqlRow{{"Note", 1008, "Can't drop database testdb; database doesn't exist "}}, }, }, }, diff --git a/enginetest/queries/stats_queries.go b/enginetest/queries/stats_queries.go index 496d803237..a29ee69775 100644 --- a/enginetest/queries/stats_queries.go +++ b/enginetest/queries/stats_queries.go @@ -34,11 +34,11 @@ var StatisticsQueries = []ScriptTest{ { SkipResultCheckOnServerEngine: true, // the non-interface types are not identified over the wire result Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "t", "i", stats.NewStatistic(3, 3, 0, 24, time.Now(), sql.NewStatQualifier("mydb", "", "t", "primary"), []string{"i"}, []sql.Type{types.Int64}, []sql.HistogramBucket{ - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(1)}, nil, nil), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(2)}, nil, nil), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(3)}, nil, nil), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(1)}, nil, nil), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(2)}, nil, nil), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(3)}, nil, nil), }, sql.IndexClassDefault, nil), }, }, @@ -54,26 +54,26 @@ var StatisticsQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "analyze table t update histogram on (i) using data '{\"row_count\": 40, \"distinct_count\": 40, \"null_count\": 1, \"buckets\": [{\"row_count\": 20, \"distinct_count\": 20, \"upper_bound\": [50], \"bound_count\": 1}, {\"row_count\": 20, \"distinct_count\": 20, \"upper_bound\": [80], \"bound_count\": 1}]}'", - Expected: []sql.Row{{"t", "histogram", "status", "OK"}}, + Expected: []sql.UntypedSqlRow{{"t", "histogram", "status", "OK"}}, }, { SkipResultCheckOnServerEngine: true, // the non-interface types are not identified over the wire result Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "t", "i", stats.NewStatistic(40, 40, 1, 0, time.Now(), sql.NewStatQualifier("mydb", "", "t", "primary"), []string{"i"}, []sql.Type{types.Int64}, []sql.HistogramBucket{ - stats.NewHistogramBucket(20, 20, 0, 1, sql.Row{float64(50)}, nil, nil), - stats.NewHistogramBucket(20, 20, 0, 1, sql.Row{float64(80)}, nil, nil), + stats.NewHistogramBucket(20, 20, 0, 1, sql.UntypedSqlRow{float64(50)}, nil, nil), + stats.NewHistogramBucket(20, 20, 0, 1, sql.UntypedSqlRow{float64(80)}, nil, nil), }, sql.IndexClassDefault, nil), }, }, }, { Query: "analyze table t drop histogram on (i)", - Expected: []sql.Row{{"t", "histogram", "status", "OK"}}, + Expected: []sql.UntypedSqlRow{{"t", "histogram", "status", "OK"}}, }, { Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -88,17 +88,17 @@ var StatisticsQueries = []ScriptTest{ { SkipResultCheckOnServerEngine: true, // the non-interface types are not identified over the wire result Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "t", "i", stats.NewStatistic(3, 3, 0, 48, time.Now(), sql.NewStatQualifier("mydb", "", "t", "primary"), []string{"i"}, []sql.Type{types.Int64}, []sql.HistogramBucket{ - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(1)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(2)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(3)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(1)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(2)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(3)}, nil, []sql.Row{}), }, sql.IndexClassDefault, nil), }, {"mydb", "t", "j", stats.NewStatistic(3, 3, 0, 48, time.Now(), sql.NewStatQualifier("mydb", "", "t", "j"), []string{"j"}, []sql.Type{types.Int64}, []sql.HistogramBucket{ - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(4)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(5)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{int64(6)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(4)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(5)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{int64(6)}, nil, []sql.Row{}), }, sql.IndexClassDefault, nil), }, }, @@ -116,12 +116,12 @@ var StatisticsQueries = []ScriptTest{ { SkipResultCheckOnServerEngine: true, // the non-interface types are not identified over the wire result Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"mydb", "t", "i", stats.NewStatistic(4, 4, 0, 32, time.Now(), sql.NewStatQualifier("mydb", "", "t", "primary"), []string{"i"}, []sql.Type{types.Float64}, []sql.HistogramBucket{ - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{float64(1.25)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{float64(7.5)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{float64(10.5)}, nil, []sql.Row{}), - stats.NewHistogramBucket(1, 1, 0, 1, sql.Row{float64(45.25)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{float64(1.25)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{float64(7.5)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{float64(10.5)}, nil, []sql.Row{}), + stats.NewHistogramBucket(1, 1, 0, 1, sql.UntypedSqlRow{float64(45.25)}, nil, []sql.Row{}), }, sql.IndexClassDefault, nil), }, }, @@ -137,7 +137,7 @@ var StatisticsQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -151,7 +151,7 @@ var StatisticsQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM information_schema.column_statistics", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -237,7 +237,7 @@ analyze table xy update histogram on (x,y) using data Assertions: []ScriptTestAssertion{ { Query: "select * from xy where x > 4 and y = 1 and w = 'a'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, ExpectedIndexes: []string{"y"}, }, }, diff --git a/enginetest/queries/table_func_scripts.go b/enginetest/queries/table_func_scripts.go index 8653775372..93d1830376 100644 --- a/enginetest/queries/table_func_scripts.go +++ b/enginetest/queries/table_func_scripts.go @@ -28,11 +28,11 @@ var TableFunctionScriptTests = []ScriptTest{ "insert into xy values (0,1), (1,2), (2,3)", }, Query: "select y from table_func('z',2) join xy t on y = z", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "select * from sequence_table('y',2) seq1 where y in (select SEQ2.x from table_func('x', 1) seq2)", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Name: "undefined table function", @@ -72,59 +72,59 @@ var TableFunctionScriptTests = []ScriptTest{ { Name: "basic table function", Query: "SELECT * from simple_table_function(123);", - Expected: []sql.Row{{"foo", 123}}, + Expected: []sql.UntypedSqlRow{{"foo", 123}}, }, { Name: "basic table function", Query: "SELECT * from simple_TABLE_function(123);", - Expected: []sql.Row{{"foo", 123}}, + Expected: []sql.UntypedSqlRow{{"foo", 123}}, }, { Name: "aggregate function applied to a table function", Query: "SELECT count(*) from simple_TABLE_function(123);", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Name: "projection of table function", Query: "SELECT one from simple_TABLE_function(123);", - Expected: []sql.Row{{"foo"}}, + Expected: []sql.UntypedSqlRow{{"foo"}}, }, { Name: "nested expressions in table function arguments", Query: "SELECT * from simple_TABLE_function(concat('f', 'o', 'o'));", - Expected: []sql.Row{{"foo", 123}}, + Expected: []sql.UntypedSqlRow{{"foo", 123}}, }, { Name: "filtering table function results", Query: "SELECT * from simple_TABLE_function(123) where one='foo';", - Expected: []sql.Row{{"foo", 123}}, + Expected: []sql.UntypedSqlRow{{"foo", 123}}, }, { Name: "filtering table function results to no results", Query: "SELECT * from simple_TABLE_function(123) where one='none';", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Name: "grouping table function results", Query: "SELECT count(one) from simple_TABLE_function(123) group by one;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Name: "table function as subquery", Query: "SELECT * from (select * from simple_TABLE_function(123)) as tf;", - Expected: []sql.Row{{"foo", 123}}, + Expected: []sql.UntypedSqlRow{{"foo", 123}}, }, { Query: "select * from sequence_table('x', 5)", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select sequence_table.x from sequence_table('x', 5)", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select sequence_table.x from sequence_table('x', 5)", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select * from sequence_table('x', 5) join sequence_table('y', 5) on x = y", @@ -136,15 +136,15 @@ var TableFunctionScriptTests = []ScriptTest{ }, { Query: "select * from sequence_table('x', 2) where x is not null", - Expected: []sql.Row{{0}, {1}}, + Expected: []sql.UntypedSqlRow{{0}, {1}}, }, { Query: "select seq.x from sequence_table('x', 5) as seq", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select seq.x from sequence_table('x', 5) seq", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select not_seq.x from sequence_table('x', 5) as seq", @@ -152,31 +152,31 @@ var TableFunctionScriptTests = []ScriptTest{ }, { Query: "select /*+ MERGE_JOIN(seq1,seq2) JOIN_ORDER(seq2,seq1) */ seq1.x, seq2.y from sequence_table('x', 5) seq1 join sequence_table('y', 5) seq2 on seq1.x = seq2.y", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}, ExpectedIndexes: []string{"y", "x"}, }, { Query: "select /*+ LOOKUP_JOIN(seq1,seq2) JOIN_ORDER(seq2,seq1) */ seq1.x, seq2.y from sequence_table('x', 5) seq1 join sequence_table('y', 5) seq2 on seq1.x = seq2.y", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}, ExpectedIndexes: []string{"x"}, }, { Query: "select /*+ MERGE_JOIN(seq1,seq2) JOIN_ORDER(seq2,seq1) */ * from sequence_table('x', 5) seq1 join sequence_table('y', 5) seq2 on x = 0", - Expected: []sql.Row{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}}, ExpectedIndexes: []string{"x"}, }, { Query: "select /*+ LOOKUP_JOIN(seq1,seq2) */ * from sequence_table('x', 5) seq1 join sequence_table('y', 5) seq2 on x = 0", - Expected: []sql.Row{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}}, ExpectedIndexes: []string{"x"}, }, { Query: "with cte as (select seq.x from sequence_table('x', 5) seq) select cte.x from cte", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select sq.x from (select seq.x from sequence_table('x', 5) seq) sq", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Query: "select seq.x from (select seq.x from sequence_table('x', 5) seq) sq", @@ -184,41 +184,41 @@ var TableFunctionScriptTests = []ScriptTest{ }, { Query: "select sq.xx from (select seq.x as xx from sequence_table('x', 5) seq) sq", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Name: "sequence_table allows point lookups", Query: "select * from sequence_table('x', 5) where x = 2", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, ExpectedIndexes: []string{"x"}, }, { Name: "sequence_table allows range lookups", Query: "select * from sequence_table('x', 5) where x >= 1 and x <= 3", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, ExpectedIndexes: []string{"x"}, }, { Name: "basic behavior of point_lookup_table", Query: "select seq.x from point_lookup_table('x', 5) seq", - Expected: []sql.Row{{0}, {1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{0}, {1}, {2}, {3}, {4}}, }, { Name: "point_lookup_table allows point lookups", Query: "select * from point_lookup_table('x', 5) where x = 2", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, ExpectedIndexes: []string{"x"}, }, { Name: "point_lookup_table disallows range lookups", Query: "select * from point_lookup_table('x', 5) where x >= 1 and x <= 3", - Expected: []sql.Row{{1}, {2}, {3}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}}, ExpectedIndexes: []string{}, }, { Name: "point_lookup_table disallows merge join", Query: "select /*+ MERGE_JOIN(l,r) */ * from point_lookup_table('x', 5) l join point_lookup_table('y', 5) r where x = y", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}, JoinTypes: []plan.JoinType{plan.JoinTypeLookup}, ExpectedIndexes: []string{"y"}, }, diff --git a/enginetest/queries/transaction_queries.go b/enginetest/queries/transaction_queries.go index 7eb53514b5..93e3dc3608 100644 --- a/enginetest/queries/transaction_queries.go +++ b/enginetest/queries/transaction_queries.go @@ -40,23 +40,23 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set @@autocommit = 0;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set @@autocommit = 0;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ select @@autocommit;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "/* client b */ select @@autocommit;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, { Query: "/* client a */ start transaction;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t;", @@ -64,7 +64,7 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ create table t(pk int primary key);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { // Trigger a query error to make sure explicit transaction is still @@ -74,15 +74,15 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ commit;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ start transaction;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select count(*) from t;", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, }, }, @@ -95,19 +95,19 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ insert into t values (3, 3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, }, }, @@ -120,65 +120,65 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "/* client b */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, { Query: "/* client a */ insert into t values (3,3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client a */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, }, }, @@ -191,37 +191,37 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ insert into t values (2,2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, // should commit any pending transaction { Query: "/* client b */ set autocommit = on", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, // client a sees the committed transaction from client b when it begins a new transaction { Query: "/* client a */ set autocommit = on", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, }, }, @@ -234,7 +234,7 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { // Trigger an analyzer error to make sure transaction state is managed correctly @@ -243,11 +243,11 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { // Trigger an analyzer error to make sure state for the explicitly started @@ -257,20 +257,20 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, // After commit, autocommit turns back on { Query: "/* client a */ insert into t values (3, 3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, }, }, @@ -283,71 +283,71 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ insert into t values (3, 3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client a */ rollback", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client a */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client b */ rollback", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, }, }, @@ -360,115 +360,115 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ insert into t values (3, 3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ savepoint spa1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ savepoint spb1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (4, 4)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ insert into t values (5, 5)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ savepoint spa2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ savepoint spb2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (6, 6)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ insert into t values (7, 7)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}, {6, 6}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}, {5, 5}, {7, 7}}, }, { Query: "/* client a */ rollback to SPA2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ rollback to spB2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {4, 4}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}, {5, 5}}, }, { Query: "/* client a */ rollback to sPa2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ rollback to Spb2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {4, 4}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}, {5, 5}}, }, { Query: "/* client a */ rollback to spA1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ rollback to SPb1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client a */ rollback to spa2", @@ -480,35 +480,35 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ rollback to Spa1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ rollback to spB1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client a */ rollback", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client a */ rollback to spa1", @@ -529,43 +529,43 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client b */ insert into t values (3, 3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ savepoint spa1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ savepoint spb1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ release savepoint Spa1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ release savepoint sPb1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ rollback to spa1", @@ -577,11 +577,11 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, }, }, @@ -594,55 +594,55 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ savepoint spa1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (3, 3)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ savepoint spa2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (4, 4)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ savepoint SPA1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ insert into t values (5, 5)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}}, }, { Query: "/* client a */ rollback to Spa1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}, {4, 4}}, }, { Query: "/* client a */ rollback to spa2", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client a */ rollback to spa1", @@ -666,236 +666,236 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client b */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client c */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, // Client a starts by insert into t { Query: "/* client a */ insert into t (y) values (2)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, { Query: "/* client c*/ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, // Client b inserts into t { Query: "/* client b */ insert into t (y) values (3)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 3}}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, }, }, { Query: "/* client c */ select * from t order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, // Client c inserts into t2 { Query: "/* client c */ insert into t2 (y) values (11)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 11}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 11}}}, }, { Query: "/* client a */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}}, + Expected: []sql.UntypedSqlRow{{10, 10}}, }, { Query: "/* client b */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}}, + Expected: []sql.UntypedSqlRow{{10, 10}}, }, { Query: "/* client c */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}}, }, // Client a inserts into t2 { Query: "/* client a */ insert into t2 (y) values (12)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 12}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 12}}}, }, { Query: "/* client a */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {12, 12}}, }, { Query: "/* client b */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}}, + Expected: []sql.UntypedSqlRow{{10, 10}}, }, { Query: "/* client c */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}}, }, // Client a commits { Query: "/* client a */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {3, 3}}, }, { Query: "/* client b */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}}, + Expected: []sql.UntypedSqlRow{{10, 10}}, }, { Query: "/* client c */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}}, }, { Query: "/* client c */ select * from t order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, // Client b commits { Query: "/* client b */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client a */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {12, 12}}, }, { Query: "/* client c */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}}, }, { Query: "/* client c */ select * from t order by x", - Expected: []sql.Row{{1, 1}}, + Expected: []sql.UntypedSqlRow{{1, 1}}, }, // Client c commits { Query: "/* client c */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client a */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {12, 12}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client b */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}, {12, 12}}, }, // Client a starts transactions { Query: "/* client a */ start transaction", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client b */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client c */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client a */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}, {12, 12}}, }, { Query: "/* client b */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}, {12, 12}}, }, { Query: "/* client c */ select * from t2 order by x", - Expected: []sql.Row{{10, 10}, {11, 11}, {12, 12}}, + Expected: []sql.UntypedSqlRow{{10, 10}, {11, 11}, {12, 12}}, }, // Client a does a skip ahead { Query: "/* client a */ insert into t values (10, 10)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 12}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 12}}}, }, { Query: "/* client b */ insert into t (y) values (11)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 11}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 11}}}, }, // Client c skips ahead { Query: "/* client c */ insert into t values (50, 50)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 11}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 11}}}, }, { Query: "/* client b */ insert into t (y) values (51)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 51}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 51}}}, }, { Query: "/* client a */ select * from t order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}, {10, 10}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}, {50, 50}}, }, { Query: "/* client a */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client c */ commit", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { 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}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{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}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}, {10, 10}, {11, 11}, {50, 50}, {51, 51}}, }, // Client a does a simple insert to ensure merging worked { Query: "/* client a */ insert into t values (NULL, 52)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 52}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 52}}}, }, { 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}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}, {10, 10}, {11, 11}, {50, 50}, {51, 51}, {52, 52}}, }, }, }, @@ -908,23 +908,23 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ insert into t2 (y) values (2)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 2}}}, }, { Query: "/* client b */ select * from t2 order by x", - Expected: []sql.Row{{1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}}, }, { Query: "/* client b */ insert into t2 (y) values (3)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 3}}}, }, { Query: "/* client a */ select * from t2 order by x", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 3}}, }, { Query: "/* client a */ alter table t2 modify column x int", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, InsertID: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, InsertID: 0}}}, }, { Query: "/* client a */ INSERT INTO t2 values (NULL, 3)", @@ -932,19 +932,19 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ DROP TABLE t2", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, InsertID: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, InsertID: 0}}}, }, { Query: "/* client a */ CREATE table t2 (x int PRIMARY KEY AUTO_INCREMENT, y int)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 0, InsertID: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 0, InsertID: 0}}}, }, { Query: "/* client a */ insert into t2 (y) values (4)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "/* client a */ SELECT * FROM t2", - Expected: []sql.Row{{1, 4}}, + Expected: []sql.UntypedSqlRow{{1, 4}}, }, }, }, @@ -958,19 +958,19 @@ var TransactionTests = []TransactionTest{ Assertions: []ScriptTestAssertion{ { Query: "/* client a */ set autocommit = off", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "/* client a */ create temporary table tmp(pk int primary key)", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "/* client a */ START TRANSACTION READ ONLY", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client a */ INSERT INTO tmp VALUES (1)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ insert into t2 values (1, 1)", @@ -987,11 +987,11 @@ var TransactionTests = []TransactionTest{ { Query: "/* client a */ alter table t2 add val2 int", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "/* client a */ select * from t2", - Expected: []sql.Row{{0, 0, nil}}, + Expected: []sql.UntypedSqlRow{{0, 0, nil}}, }, { Query: "/* client a */ create temporary table tmp2(pk int primary key)", @@ -999,15 +999,15 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ COMMIT", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ START TRANSACTION READ ONLY", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "/* client b */ SELECT * FROM t2", - Expected: []sql.Row{{0, 0, nil}}, + Expected: []sql.UntypedSqlRow{{0, 0, nil}}, }, }, }, @@ -1028,7 +1028,7 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ insert into t1 values (1, 1)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ insert into t1 values (1, 2)", @@ -1036,15 +1036,15 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client a */ insert into t1 values (2, 2)", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "/* client a */ select * from t1 order by pk", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}}, }, { Query: "/* client b */ select * from t1 order by pk", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0}}, }, { Query: "/* client a */ commit", @@ -1056,11 +1056,11 @@ var TransactionTests = []TransactionTest{ }, { Query: "/* client b */ select * from t1 order by pk", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}}, }, { Query: "/* client a */ select * from t1 order by pk", - Expected: []sql.Row{{0, 0}, {1, 1}, {2, 2}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {1, 1}, {2, 2}}, }, }, }, diff --git a/enginetest/queries/trigger_queries.go b/enginetest/queries/trigger_queries.go index bc13cb6991..e609f1f505 100644 --- a/enginetest/queries/trigger_queries.go +++ b/enginetest/queries/trigger_queries.go @@ -36,19 +36,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from a order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, {2, 2}, {3, 3}, }, }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, { Query: "insert into a values (4,0), (5,0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -65,19 +65,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from a order by j", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0}, {0, 1}, {0, 2}, }, }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, }, }, { Query: "insert into a values (0,0), (0,0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -94,19 +94,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "insert into a values (7), (9)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -124,19 +124,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "insert into a values (7), (9)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -154,13 +154,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {3}, {5}, {8}, }, }, @@ -177,19 +177,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "insert into a values (7), (9)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -206,19 +206,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select z from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "insert into a values (7,8), (9,10)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -236,19 +236,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "insert into a values (7), (9)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -266,13 +266,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {3}, {5}, {8}, }, }, @@ -292,19 +292,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 0, 0}, {1, 1, 2}, {2, 2, 4}, {3, 3, 6}, {4, 4, 8}, }, }, { Query: "select x from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "select y from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -318,7 +318,7 @@ var TriggerTests = []ScriptTest{ "insert into a values (1)", }, Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -330,7 +330,7 @@ var TriggerTests = []ScriptTest{ "insert into x values (1, 10, 100)", }, Query: "select * from x order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 100, 0}, }, }, @@ -344,7 +344,7 @@ var TriggerTests = []ScriptTest{ "insert into x values (1, 10, 100), (2, 20, 200)", }, Query: "select *, @@auto_increment_increment from x order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 100, 0, 3}, {3, 200, 0, 3}, }, @@ -358,13 +358,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a (y, x) values (5,7), (9,11)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select x, y from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14, 15}, {22, 27}, }, @@ -380,13 +380,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a (y, x) values (5,7), (9,11)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select x, y, z from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14, 15, 25}, {22, 27, 25}, }, @@ -408,7 +408,7 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 3}, {2, -440}, {6, -880}, }, }, @@ -434,19 +434,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 3}, {2, -440}, {6, -880}, }, }, { Query: "SELECT * FROM test2 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6, 44}, {18, 88}, }, }, { Query: "SELECT * FROM test3 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, -440}, {30, -880}, }, }, @@ -465,19 +465,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from foo.a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from foo.b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "insert into foo.a values (7), (9)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -500,7 +500,7 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM testStr", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"joe's:1", "jill's:2", "stan\"s:3"}, }, }, @@ -520,19 +520,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, {8}, }, }, { Query: "update a set x = x + 1 where x = 5", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -557,13 +557,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {3}, {5}, {6}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {7}, }, }, @@ -582,13 +582,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {3}, {5}, {6}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {6}, {8}, {10}, }, }, @@ -606,19 +606,19 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, {8}, }, }, { Query: "update a set x = x + 1 where x = 5", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -643,13 +643,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {3}, {5}, {6}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {7}, }, }, @@ -668,13 +668,13 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {3}, {5}, {6}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {6}, {8}, {10}, }, }, @@ -689,7 +689,7 @@ var TriggerTests = []ScriptTest{ "update a set x = x + 1", }, Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, {21}, }, }, @@ -702,7 +702,7 @@ var TriggerTests = []ScriptTest{ "update a set x = x + 1", }, Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, }, }, @@ -715,7 +715,7 @@ var TriggerTests = []ScriptTest{ "update a set x = x + 1, y = y + 1", }, Query: "select x, y from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5, 5}, {31, 31}, }, @@ -729,7 +729,7 @@ var TriggerTests = []ScriptTest{ "update a set x = x + 1, y = y + 1", }, Query: "select x, y from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {6, 7}, {32, 41}, }, @@ -746,14 +746,14 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x, y from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 3}, {11, 20}, }, }, { Query: "select z from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100}, }, }, @@ -770,7 +770,7 @@ var TriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, -70}, {1, -100}, }, }, @@ -791,23 +791,23 @@ BEGIN THEN SET new.stat_id = new.stat_id * -1; END IF; END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "update test set stat_id=2 where stat_id=1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "select * from test order by stat_id;", - Expected: []sql.Row{{-2}, {-1}}, + Expected: []sql.UntypedSqlRow{{-2}, {-1}}, }, { Query: "update test set stat_id=-2 where stat_id=-1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "select * from test;", - Expected: []sql.Row{{-2}, {-2}}, + Expected: []sql.UntypedSqlRow{{-2}, {-2}}, }, }, }, @@ -826,23 +826,23 @@ BEGIN THEN SET new.stat_id = new.stat_id * -1; END IF; END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "update test set stat_id=2 where stat_id=1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "select * from test order by stat_id;", - Expected: []sql.Row{{-2}, {-1}}, + Expected: []sql.UntypedSqlRow{{-2}, {-1}}, }, { Query: "update test set stat_id=-2 where stat_id=-1;", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}}, }, { Query: "select * from test;", - Expected: []sql.Row{{-2}, {-2}}, + Expected: []sql.UntypedSqlRow{{-2}, {-2}}, }, }, }, @@ -860,19 +860,19 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, }, }, { Query: "delete from a where x = 5", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -891,13 +891,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, @@ -916,13 +916,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {3}, {5}, {7}, {8}, }, }, @@ -940,19 +940,19 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, {5}, {7}, }, }, { Query: "delete from a where x = 0", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -971,13 +971,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {9}, }, }, @@ -996,13 +996,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {8}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {4}, {6}, {9}, }, }, @@ -1020,13 +1020,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, {8}, }, }, @@ -1045,11 +1045,11 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "select * from a order by 1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select x from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {9}, }, }, @@ -1124,19 +1124,19 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into a values (2), (3), (5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {33}, {35}, {55}, }, }, @@ -1153,13 +1153,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-1}, {3}, }, }, @@ -1178,13 +1178,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-23}, {-11}, }, }, @@ -1202,7 +1202,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "update a set x = x * 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 3, Info: plan.UpdateInfo{ @@ -1214,13 +1214,13 @@ END;`, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, {6}, {10}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {33}, {35}, {55}, }, }, @@ -1240,7 +1240,7 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "update a set x = x * 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 3, Info: plan.UpdateInfo{ @@ -1252,13 +1252,13 @@ END;`, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, {6}, {10}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {26}, {33}, {34}, {35}, {39}, {51}, {55}, {65}, {85}, }, }, @@ -1276,17 +1276,17 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "delete from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {33}, {35}, {55}, }, }, @@ -1306,17 +1306,17 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "delete from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {26}, {33}, {34}, {35}, {39}, {51}, {55}, {65}, {85}, }, }, @@ -1342,13 +1342,13 @@ END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(2)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-23}, {-11}, }, }, @@ -1356,7 +1356,7 @@ END;`, Query: "select y from b order by 1", // This result is a bit counter-intutitive: it doesn't match the inserted row, because all 4 triggers run their // update statement twice on the rows in b, once for each row inserted into a - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {-167}, {-95}, }, }, @@ -1377,13 +1377,13 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select id, is_dirty from is_dirty", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, { Query: "update trigger_on_update set id = 1, first = 'george', last = 'smith' where id = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { types.OkResult{ RowsAffected: 0, @@ -1397,7 +1397,7 @@ end;`, }, { Query: "select id, is_dirty from is_dirty", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1}, }, }, @@ -1428,7 +1428,7 @@ end;`, }, { Query: "select id from rn", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, }, }, @@ -1452,7 +1452,7 @@ end;`, }, { Query: "select id from t1", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1476,19 +1476,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "select z from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {28}, {42}, }, }, @@ -1508,19 +1508,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "select z from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {28}, {42}, }, }, @@ -1539,19 +1539,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "select z from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {28}, {42}, }, }, @@ -1570,19 +1570,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "select z from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {28}, {42}, }, }, @@ -1601,19 +1601,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, { Query: "select z from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {28}, {42}, }, }, @@ -1636,15 +1636,15 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select y from b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select z from c;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1664,15 +1664,15 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select y from b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select z from c;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1692,15 +1692,15 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select y from b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select z from c;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1720,15 +1720,15 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select y from b;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select z from c;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -1749,19 +1749,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select y from b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "select z from c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -1783,19 +1783,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select y from b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "select z from c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -1817,19 +1817,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select y from b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "select z from c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -1851,19 +1851,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "select x from a;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select y from b;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {5}, }, }, { Query: "select z from c;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, }, }, @@ -1889,7 +1889,7 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (3)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, @@ -1899,19 +1899,19 @@ end;`, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, }, }, { Query: "select z from c order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, @@ -1929,7 +1929,7 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "show create trigger a1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "a1", // Trigger "", // sql_mode @@ -1943,7 +1943,7 @@ end;`, }, { Query: "show create trigger b1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "b1", // Trigger "", // sql_mode @@ -1975,7 +1975,7 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "show triggers", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "t1", // Trigger "INSERT", // Event @@ -2032,7 +2032,7 @@ end;`, }, { Query: "show triggers from mydb", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "t1", // Trigger "INSERT", // Event @@ -2089,7 +2089,7 @@ end;`, }, { Query: "show triggers like '%cc'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "t3", // Trigger "INSERT", // Event @@ -2120,7 +2120,7 @@ end;`, }, { Query: "show triggers where `event` = 'INSERT'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "t1", // Trigger "INSERT", // Event @@ -2164,7 +2164,7 @@ end;`, }, { Query: "show triggers where timing = 'AFTER'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "t3", // Trigger "INSERT", // Event @@ -2182,7 +2182,7 @@ end;`, }, { Query: "show triggers where timing = 'BEFORE' and `Table` like '%bb'", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ { "t1", // Trigger "INSERT", // Event @@ -2234,15 +2234,15 @@ end;`, }, { Query: "drop trigger t4", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "drop trigger t3", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "drop trigger if exists t5", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "drop trigger t5", @@ -2250,18 +2250,18 @@ end;`, }, { Query: "select trigger_name from information_schema.triggers order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1"}, {"t2"}, }, }, { Query: "drop trigger if exists t2", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "select trigger_name from information_schema.triggers order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1"}, }, }, @@ -2287,11 +2287,11 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "drop table a", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select trigger_name from information_schema.triggers order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t3"}, {"t4"}, {"t5"}, @@ -2302,11 +2302,11 @@ end;`, }, { Query: "drop table if exists b, d, e", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select trigger_name from information_schema.triggers order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t5"}, {"t6"}, }, @@ -2329,11 +2329,11 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "drop table a", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "show triggers", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -2356,19 +2356,19 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "insert into mytable () values ();", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "insert into mytable (sometext) values ('hello');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "insert into mytable values (10, 'goodbye');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from mytable order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, "hello"}, {3, "goodbye"}, @@ -2394,23 +2394,23 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "insert into mytable () values ();", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "insert into mytable (sometext) values ('hello');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "insert into mytable values (10, 'goodbye');", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "insert into mytable () values (), ();", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from mytable order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, "hello"}, {3, "goodbye"}, @@ -2428,7 +2428,7 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "create trigger insert_into_b after insert on a for each row insert into b values (new.x + 1)", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "insert into a values (1), (3), (5)", @@ -2436,23 +2436,23 @@ end;`, }, { Query: "create table b (y int primary key)", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "insert into a values (1), (3), (5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3}}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {4}, {6}, }, }, @@ -2467,7 +2467,7 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "CREATE TRIGGER ins_film AFTER INSERT ON film FOR EACH ROW BEGIN INSERT INTO film_text (film_id, title, description) VALUES (new.film_id, new.title, new.description); END;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: `CREATE TRIGGER upd_film AFTER UPDATE ON film FOR EACH ROW BEGIN @@ -2479,11 +2479,11 @@ end;`, film_id=new.film_id WHERE film_id=old.film_id; END IF; END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CREATE TRIGGER del_film AFTER DELETE ON film FOR EACH ROW BEGIN DELETE FROM film_text WHERE film_id = old.film_id; END;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "INSERT INTO `film` VALUES (3,'ADAPTATION HOLES','An Astounding Reflection in A Baloon Factory'),(4,'AFFAIR PREJUDICE','A Fanciful Documentary in A Shark Tank')", @@ -2499,39 +2499,39 @@ end;`, }, { Query: "CREATE TABLE film_text (film_id smallint NOT NULL, title varchar(255) NOT NULL, description text, PRIMARY KEY (film_id))", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "SELECT COUNT(*) FROM film", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "INSERT INTO `film` VALUES (3,'ADAPTATION HOLES','An Astounding Reflection in A Baloon Factory'),(4,'AFFAIR PREJUDICE','A Fanciful Documentary in A Shark Tank')", - Expected: []sql.Row{{types.OkResult{RowsAffected: 2, InsertID: 0}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 2, InsertID: 0}}}, }, { Query: "SELECT COUNT(*) FROM film", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, }, { Query: "SELECT COUNT(*) FROM film_text", - Expected: []sql.Row{{2}}, + Expected: []sql.UntypedSqlRow{{2}}, }, { Query: "UPDATE film SET title = 'DIFFERENT MOVIE' WHERE title = 'ADAPTATION HOLES'", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 1, Warnings: 0}}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 0, Info: plan.UpdateInfo{Matched: 1, Updated: 1, Warnings: 0}}}}, }, { Query: "SELECT COUNT(*) FROM film_text WHERE title = 'DIFFERENT MOVIE'", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, }, { Query: "DELETE FROM film WHERE title = 'DIFFERENT MOVIE'", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1}}}, }, { Query: "SELECT COUNT(*) FROM film_text WHERE title = 'DIFFERENT MOVIE'", - Expected: []sql.Row{{0}}, + Expected: []sql.UntypedSqlRow{{0}}, }, }, }, @@ -2545,17 +2545,17 @@ end;`, Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM t0;", - Expected: []sql.Row{{1, 2, "abc"}, {2, 3, "def"}}, + Expected: []sql.UntypedSqlRow{{1, 2, "abc"}, {2, 3, "def"}}, }, { Query: `CREATE PROCEDURE add_entry(i INT, s TEXT) BEGIN IF i > 50 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'too big number'; END IF; INSERT INTO t0 (v1, v2) VALUES (i, s); END;`, - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "CREATE TRIGGER trig AFTER INSERT ON t0 FOR EACH ROW BEGIN CALL back_up(NEW.v1, NEW.v2); END;", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "INSERT INTO t0 (v1, v2) VALUES (5, 'ggg');", @@ -2563,20 +2563,20 @@ INSERT INTO t0 (v1, v2) VALUES (i, s); END;`, }, { Query: "CREATE PROCEDURE back_up(num INT, msg TEXT) INSERT INTO t1 (v1, v2) VALUES (num*2, msg);", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { SkipResultCheckOnServerEngine: true, // call depends on stored procedure stmt for whether to use 'query' or 'exec' from go sql driver. Query: "CALL add_entry(4, 'aaa');", - Expected: []sql.Row{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, InsertID: 1}}}, }, { Query: "SELECT * FROM t0;", - Expected: []sql.Row{{1, 2, "abc"}, {2, 3, "def"}, {3, 4, "aaa"}}, + Expected: []sql.UntypedSqlRow{{1, 2, "abc"}, {2, 3, "def"}, {3, 4, "aaa"}}, }, { Query: "SELECT * FROM t1;", - Expected: []sql.Row{{1, 8, "aaa"}}, + Expected: []sql.UntypedSqlRow{{1, 8, "aaa"}}, }, { Query: "CALL add_entry(54, 'bbb');", @@ -2607,13 +2607,13 @@ INSERT INTO t0 (v1, v2) VALUES (i, s); END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {21}, {32}, {43}, @@ -2630,13 +2630,13 @@ INSERT INTO t0 (v1, v2) VALUES (i, s); END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {11}, {12}, {13}, @@ -2653,13 +2653,13 @@ INSERT INTO t0 (v1, v2) VALUES (i, s); END;`, Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {11}, {12}, {13}, @@ -2684,13 +2684,13 @@ end; Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2698,7 +2698,7 @@ end; }, { Query: "select * from t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, {20}, {30}, @@ -2724,13 +2724,13 @@ end; Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2738,7 +2738,7 @@ end; }, { Query: "select * from t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10}, {20}, {30}, @@ -2764,13 +2764,13 @@ end; Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2778,7 +2778,7 @@ end; }, { Query: "select * from t2;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -2805,13 +2805,13 @@ end; Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1), (2), (3);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -2819,7 +2819,7 @@ end; }, { Query: "select * from t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {11}, {12}, {13}, @@ -2848,19 +2848,19 @@ end; Assertions: []ScriptTestAssertion{ { Query: "insert into t1 values (1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t1 order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t2 order by j;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1000}, {3000}, }, @@ -2906,13 +2906,13 @@ for each row Assertions: []ScriptTestAssertion{ { Query: "delete from t1 where id = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {2}, @@ -2921,7 +2921,7 @@ for each row }, { Query: "select * from tt order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {10}, {20}, @@ -2929,15 +2929,15 @@ for each row }, { Query: "select * from t1;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t2;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t3;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -2988,13 +2988,13 @@ for each row Assertions: []ScriptTestAssertion{ { Query: "delete from t1 where id = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {2}, @@ -3004,7 +3004,7 @@ for each row }, { Query: "select * from tt order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {20}, {30}, {9999}, @@ -3012,15 +3012,15 @@ for each row }, { Query: "select * from t1;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t2;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t3;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -3070,13 +3070,13 @@ for each row Assertions: []ScriptTestAssertion{ { Query: "insert into t1 values (1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(1)}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, {3}, @@ -3087,7 +3087,7 @@ for each row }, { Query: "select * from tt order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 100}, {2, 200}, {3, 300}, @@ -3095,23 +3095,23 @@ for each row }, { Query: "select * from ttt order by i;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, { Query: "select * from t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, 10}, }, }, { Query: "select * from t3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3, 100, 12}, }, }, @@ -3166,13 +3166,13 @@ for each row Assertions: []ScriptTestAssertion{ { Query: "update t1 set i = 2 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {0}, {0}, @@ -3195,7 +3195,7 @@ for each row }, { Query: "select * from tt order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 100}, {2, 200}, {3, 0}, @@ -3203,25 +3203,25 @@ for each row }, { Query: "select * from ttt order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "select * from t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: "select * from t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 20}, }, }, { Query: "select * from t3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 10, 100}, }, }, @@ -3281,13 +3281,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select x from b order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, @@ -3297,7 +3297,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, @@ -3313,13 +3313,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select x from b order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, @@ -3329,7 +3329,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, @@ -3346,13 +3346,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3362,7 +3362,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3379,13 +3379,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3395,7 +3395,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3413,13 +3413,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select x from b order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3429,7 +3429,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3447,13 +3447,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select x from b order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3463,7 +3463,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3483,15 +3483,15 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from a", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from b", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "insert into a values (0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -3501,13 +3501,13 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, @@ -3527,15 +3527,15 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from a", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "select * from b", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "insert into a values (0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, @@ -3545,13 +3545,13 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from a", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, }, }, @@ -3569,7 +3569,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3581,7 +3581,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3591,7 +3591,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3608,7 +3608,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3620,7 +3620,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3630,7 +3630,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3648,7 +3648,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3660,7 +3660,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3670,7 +3670,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3688,7 +3688,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3700,7 +3700,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3710,7 +3710,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3728,7 +3728,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3740,7 +3740,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3750,7 +3750,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3768,7 +3768,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3780,7 +3780,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3790,7 +3790,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -3808,19 +3808,19 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (2), (3), (5)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(3)}, }, }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {33}, {35}, {55}, }, }, @@ -3830,13 +3830,13 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, {3}, {5}, }, }, { Query: "select y from b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {14}, {21}, {22}, {33}, {35}, {55}, }, }, @@ -3854,13 +3854,13 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into a values (1), (2)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, { Query: "select x from b order by x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, @@ -3870,7 +3870,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {2}, }, }, @@ -3888,7 +3888,7 @@ var RollbackTriggerTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update a set i = 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{ RowsAffected: 1, Info: plan.UpdateInfo{ @@ -3900,7 +3900,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3910,7 +3910,7 @@ var RollbackTriggerTests = []ScriptTest{ }, { Query: "select * from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, }, }, @@ -3932,11 +3932,11 @@ var BrokenTriggerQueries = []ScriptTest{ // Should produce new keys 2, 3, but instead produces a duplicate key error { Query: "insert into mytable () values (), ();", - Expected: []sql.Row{{types.NewOkResult(2)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(2)}}, }, { Query: "select * from mytable order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, nil}, {3, nil}, @@ -3961,13 +3961,13 @@ var BrokenTriggerQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM test ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, 2}, {1, 3}, {2, -440}, }, }, { Query: "SELECT * FROM test2 ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, -440}, }, }, @@ -3989,13 +3989,13 @@ var BrokenTriggerQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select x from foo.a order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {3}, {5}, {6}, {8}, }, }, { Query: "select y from foo.b order by 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1}, {3}, {7}, }, }, @@ -4015,13 +4015,13 @@ var BrokenTriggerQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT * FROM a ORDER BY 1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 11}, {2, 13}, {3, 15}, }, }, { Query: "SELECT * FROM b ORDER BY x", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {4}, }, }, @@ -4039,19 +4039,19 @@ var BrokenTriggerQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select * from a order by i", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, {2, 0}, {3, 0}, }, }, { Query: "select x from b", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {3}, }, }, { Query: "insert into a values (4,0), (5,0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 2}}, }, }, diff --git a/enginetest/queries/type_wire_queries.go b/enginetest/queries/type_wire_queries.go index a0e70493ff..087c4278aa 100644 --- a/enginetest/queries/type_wire_queries.go +++ b/enginetest/queries/type_wire_queries.go @@ -22,7 +22,7 @@ type TypeWireTest struct { Name string SetUpScript []string Queries []string - Results [][]sql.Row + Results [][]sql.UntypedSqlRow } // TypeWireTests are used to ensure that types are properly represented over the wire (vs being directly returned from @@ -41,7 +41,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75", "-26"}, {"0", "0"}, {"107", "25"}, {"108", "25"}}, {{"-26", "-75"}, {"0", "0"}, {"25", "107"}, {"25", "108"}}, {{"-52", "-74"}, {"0", "1"}, {"50", "108"}, {"50", "109"}}, @@ -60,7 +60,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-76", "-2532"}, {"-75", "-2532"}, {"0", "0"}, {"2547", "3325"}, {"2548", "3325"}}, {{"-2532", "-76"}, {"-2532", "-75"}, {"0", "0"}, {"3325", "2547"}, {"3325", "2548"}}, {{"-5064", "-75"}, {"-5064", "-74"}, {"0", "1"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -79,7 +79,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75", "-2532"}, {"0", "0"}, {"2547", "3325"}, {"2548", "3325"}}, {{"-2532", "-75"}, {"0", "0"}, {"3325", "2547"}, {"3325", "2548"}}, {{"-5064", "-74"}, {"0", "1"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -98,7 +98,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75", "-2532"}, {"0", "0"}, {"2547", "3325"}, {"2548", "3325"}}, {{"-2532", "-75"}, {"0", "0"}, {"3325", "2547"}, {"3325", "2548"}}, {{"-5064", "-74"}, {"0", "1"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -117,7 +117,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75", "-2532"}, {"0", "0"}, {"2547", "3325"}, {"2548", "3325"}}, {{"-2532", "-75"}, {"0", "0"}, {"3325", "2547"}, {"3325", "2548"}}, {{"-5064", "-74"}, {"0", "1"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -136,7 +136,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"0", "0"}, {"25", "25"}, {"32", "126"}, {"43", "126"}}, {{"0", "0"}, {"25", "25"}, {"126", "32"}, {"126", "43"}}, {{"0", "1"}, {"50", "26"}, {"252", "33"}, {"252", "44"}}, @@ -155,7 +155,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"0", "0"}, {"25", "2530"}, {"2547", "3325"}, {"2548", "3325"}}, {{"0", "0"}, {"2530", "25"}, {"3325", "2547"}, {"3325", "2548"}}, {{"0", "1"}, {"5060", "26"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -174,7 +174,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"0", "1"}, {"75", "2532"}, {"2547", "3325"}, {"2548", "3325"}}, {{"1", "0"}, {"2532", "75"}, {"3325", "2547"}, {"3325", "2548"}}, {{"2", "1"}, {"5064", "76"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -193,7 +193,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"0", "1"}, {"75", "2532"}, {"2547", "3325"}, {"2548", "3325"}}, {{"1", "0"}, {"2532", "75"}, {"3325", "2547"}, {"3325", "2548"}}, {{"2", "1"}, {"5064", "76"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -212,7 +212,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"0", "1"}, {"75", "2532"}, {"2547", "3325"}, {"2548", "3325"}}, {{"1", "0"}, {"2532", "75"}, {"3325", "2547"}, {"3325", "2548"}}, {{"2", "1"}, {"5064", "76"}, {"6650", "2548"}, {"6650", "2549"}}, @@ -231,7 +231,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75.11", "-2532"}, {"0", "0"}, {"2547.2", "3325"}}, {{"-2532", "-75.11"}, {"0", "0"}, {"3325", "2547.2"}}, {{"-5064", "-74.11000061035156"}, {"0", "1"}, {"6650", "2548.199951171875"}}, @@ -250,7 +250,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75.11", "-2532"}, {"0", "0"}, {"2547.2", "3325"}}, {{"-2532", "-75.11"}, {"0", "0"}, {"3325", "2547.2"}}, {{"-5064", "-74.11"}, {"0", "1"}, {"6650", "2548.2"}}, @@ -269,7 +269,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1*2, pk+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-75", "-2532.35600"}, {"0", "0.00000"}, {"2547", "3325.00000"}}, {{"-2532.35600", "-75"}, {"0.00000", "0"}, {"3325.00000", "2547"}}, {{"-5064.71200", "-74"}, {"0.00000", "1"}, {"6650.00000", "2548"}}, @@ -288,7 +288,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v2, v1, pk FROM test ORDER BY pk;`, `SELECT v1*1, pk/10, v2+1 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"\x00\x00\x00\x00\x00\x00\x00", "\x00", "\x00\x00\x00"}, {"\x00\x00\x00\x00\x00\x00K", "\x00", "\x0020"}, {"\x00\x00\x00\x00\x00\t\xf3", "", "\x00 \xfd"}}, {{"\x00\x00\x00", "\x00", "\x00\x00\x00\x00\x00\x00\x00"}, {"\x0020", "\x00", "\x00\x00\x00\x00\x00\x00K"}, {"\x00 \xfd", "", "\x00\x00\x00\x00\x00\t\xf3"}}, {{"0", "0.0000", "1"}, {"0", "7.5000", "12849"}, {"1", "254.7000", "3326"}}, @@ -307,7 +307,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT v1+3, pk+2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1901", "1902"}, {"1950", "1951"}, {"1979", "1986"}}, {{"1902", "1901"}, {"1951", "1950"}, {"1986", "1979"}}, {{"1905", "1903"}, {"1954", "1952"}, {"1989", "1981"}}, @@ -331,7 +331,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT DATE_ADD('2022-10-26', INTERVAL 1 MINUTE);`, `SELECT DATE_ADD('2022-10-26', INTERVAL 1 HOUR);`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1980-04-12 12:02:11", "2000-01-01 00:00:00"}, {"1999-11-28 13:06:33", "2022-01-14 15:08:44"}}, {{"1980-04-12 12:02:11", "2000-01-01 00:00:00"}, {"1999-11-28 13:06:33", "2022-01-14 15:08:44"}}, {{"2000-01-01 00:00:00", "1980-04-12 12:02:11"}, {"2022-01-14 15:08:44", "1999-11-28 13:06:33"}}, @@ -359,7 +359,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT DATE_ADD('2022-10-26', INTERVAL 1 MINUTE);`, `SELECT DATE_ADD('2022-10-26', INTERVAL 1 HOUR);`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1000-04-12 12:02:11", "2000-01-01 00:00:00"}, {"1999-11-28 13:06:33", "2022-01-14 15:08:44"}}, {{"1000-04-12 12:02:11", "2000-01-01 00:00:00"}, {"1999-11-28 13:06:33", "2022-01-14 15:08:44"}}, {{"2000-01-01 00:00:00", "1000-04-12 12:02:11"}, {"2022-01-14 15:08:44", "1999-11-28 13:06:33"}}, @@ -387,7 +387,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT DATE_ADD(DATE('2022-10-26'), INTERVAL 1 QUARTER);`, `SELECT DATE_ADD(DATE('2022-10-26'), INTERVAL 1 YEAR);`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1000-04-12", "2000-01-01"}, {"1999-11-28", "2022-01-14"}}, {{"1000-04-12", "2000-01-01"}, {"1999-11-28", "2022-01-14"}}, {{"2000-01-01", "1000-04-12"}, {"2022-01-14", "1999-11-28"}}, @@ -415,7 +415,7 @@ var TypeWireTests = []TypeWireTest{ //`SELECT DATE_ADD(TIMEDIFF('12:13:14', '0:0:0'), INTERVAL 1 MINUTE);`, //`SELECT DATE_ADD(TIMEDIFF('12:13:14', '0:0:0'), INTERVAL 1 HOUR);`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"-800:00:00", "-120:12:20"}, {"00:00:00", "00:00:00"}, {"10:26:57", "30:53:14"}}, {{"-800:00:00", "-120:12:20"}, {"00:00:00", "00:00:00"}, {"10:26:57", "30:53:14"}}, {{"-120:12:20", "-800:00:00"}, {"00:00:00", "00:00:00"}, {"30:53:14", "10:26:57"}}, @@ -434,7 +434,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "a-c", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "a-c"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"a-cr", "2", "123"}, {"__2r", "3", "456"}}, @@ -454,7 +454,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, `SELECT DATE_ADD('2022-10-26 13:14:15', INTERVAL 1 DAY);`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -474,7 +474,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc\x00\x00", "def\x00\x00\x00\x00\x00\x00\x00"}, {"2", "a-c\x00\x00", "123\x00\x00\x00\x00\x00\x00\x00"}, {"3", "__2\x00\x00", "456\x00\x00\x00\x00\x00\x00\x00"}}, {{"1", "def\x00\x00\x00\x00\x00\x00\x00", "abc\x00\x00"}, {"2", "123\x00\x00\x00\x00\x00\x00\x00", "a-c\x00\x00"}, {"3", "456\x00\x00\x00\x00\x00\x00\x00", "__2\x00\x00"}}, {{"abc\x00\x00r", "1", "def\x00\x00\x00\x00\x00\x00\x00"}, {"a-c\x00\x00r", "2", "123\x00\x00\x00\x00\x00\x00\x00"}, {"__2\x00\x00r", "3", "456\x00\x00\x00\x00\x00\x00\x00"}}, @@ -493,7 +493,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -512,7 +512,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -531,7 +531,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -550,7 +550,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -569,7 +569,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -588,7 +588,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -607,7 +607,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -626,7 +626,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -645,7 +645,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v2, v1 FROM test ORDER BY pk;`, `SELECT CONCAT(v1, "r"), pk, v2 FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "abc", "def"}, {"2", "c-ax", "123"}, {"3", "__2", "456"}}, {{"1", "def", "abc"}, {"2", "123", "c-ax"}, {"3", "456", "__2"}}, {{"abcr", "1", "def"}, {"c-axr", "2", "123"}, {"__2r", "3", "456"}}, @@ -664,7 +664,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v1 FROM test ORDER BY pk;`, `SELECT v1, pk FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"a", "x"}, {"b", "x"}}, {{"a", "x"}, {"b", "x"}}, {{"x", "a"}, {"x", "b"}}, @@ -683,7 +683,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v1 FROM test ORDER BY pk;`, `SELECT v1, pk FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"", "w"}, {"b", "y"}, {"b,c", "w,x,y"}}, {{"", "w"}, {"b", "y"}, {"b,c", "w,x,y"}}, {{"w", ""}, {"y", "b"}, {"w,x,y", "b,c"}}, @@ -700,7 +700,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v1 FROM test ORDER BY pk;`, `SELECT pk, ST_ASWKT(v1) FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ { {"1", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40})}, {"2", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40})}, @@ -730,7 +730,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v1 FROM test ORDER BY pk;`, `SELECT pk, ST_ASWKT(v1) FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ { {"1", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40})}, {"2", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x0B, 0x40, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x16, 0x40})}, @@ -759,7 +759,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v1 FROM test ORDER BY pk;`, `SELECT pk, ST_ASWKT(v1) FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ { {"1", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40})}, {"2", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40})}, @@ -785,7 +785,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT pk, v1 FROM test ORDER BY pk;`, `SELECT pk, ST_ASWKT(v1) FROM test ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ { {"1", string([]byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F})}, }, @@ -810,7 +810,7 @@ var TypeWireTests = []TypeWireTest{ `SELECT v1, pk FROM test ORDER BY pk;`, `SELECT pk, JSON_ARRAYAGG(v1) FROM (SELECT * FROM test ORDER BY pk) as sub GROUP BY v1 ORDER BY pk;`, }, - Results: [][]sql.Row{ + Results: [][]sql.UntypedSqlRow{ {{"1", "[\"a\",1]"}, {"2", "{\"key1\":\"value1\",\"key2\":\"value2\"}"}}, {{"[\"a\",1]", "1"}, {"{\"key1\":\"value1\",\"key2\":\"value2\"}", "2"}}, {{"1", "[[\"a\",1]]"}, {"2", "[{\"key1\":\"value1\",\"key2\":\"value2\"}]"}}, diff --git a/enginetest/queries/update_queries.go b/enginetest/queries/update_queries.go index 946e8da286..caa1924bf7 100644 --- a/enginetest/queries/update_queries.go +++ b/enginetest/queries/update_queries.go @@ -27,93 +27,93 @@ import ( var UpdateTests = []WriteQueryTest{ { WriteQuery: "UPDATE mytable SET s = 'updated';", - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(3, 3)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}}, }, { WriteQuery: "UPDATE mytable SET S = 'updated';", - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(3, 3)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}}, }, { WriteQuery: "UPDATE mytable SET s = 'updated' WHERE i > 9999;", - ExpectedWriteResult: []sql.Row{{newUpdateResult(0, 0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(0, 0)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "updated"}, {int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(3, 3)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM floattable WHERE i = 2;", - ExpectedSelect: []sql.Row{{int64(2), float32(3.0), float64(4.5)}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT f32 FROM floattable WHERE i = 1;", - ExpectedSelect: []sql.Row{{float32(4.0)}}, + ExpectedSelect: []sql.UntypedSqlRow{{float32(4.0)}}, }, { WriteQuery: "UPDATE mytable SET s = 'first row' WHERE i = 1;", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(2, 2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(2, 2)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "updated"}, {int64(3), "updated"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "updated"}, {int64(3), "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(1), "first row"}, {int64(2), "updated"}, {int64(3), "third row"}}, }, { WriteQuery: "UPDATE mytable SET s = 'updated';", - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(3, 3)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "updated"}, {int64(2), "updated"}, {int64(3), "updated"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM mytable;", - ExpectedSelect: []sql.Row{{int64(1), "first row"}, {int64(2), "second row"}, {int64(3), "updated"}}, + ExpectedSelect: []sql.UntypedSqlRow{{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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM typestable;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ int64(1), int8(2), int16(3), @@ -135,9 +135,9 @@ var UpdateTests = []WriteQueryTest{ }, { WriteQuery: "UPDATE typestable SET ti = '2020-03-06 00:00:00', da = '2020-03-06';", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM typestable;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ int64(1), int8(2), int16(3), @@ -160,9 +160,9 @@ var UpdateTests = []WriteQueryTest{ { SkipServerEngine: true, // datetime returned is non-zero over the wire WriteQuery: "UPDATE typestable SET da = '0000-00-00', ti = '0000-00-00 00:00:00';", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM typestable;", - ExpectedSelect: []sql.Row{{ + ExpectedSelect: []sql.UntypedSqlRow{{ int64(1), int8(2), int16(3), @@ -184,288 +184,288 @@ var UpdateTests = []WriteQueryTest{ }, { 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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 1, 2, 3, 4}, + {0, 1, 11, 11, 12, 13, 14}, + {1, 0, 21, 21, 22, 23, 24}, + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {int64(1), "first row"}, + {int64(2), "second row"}, + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 1, 2, 3, 4}, + {0, 1, 11, 11, 12, 13, 14}, + {1, 0, 20, 21, 22, 23, 24}, + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 1, 1, 2, 3, 4}, + {1, 11, 11, 12, 13, 14}, + {2, 20, 21, 22, 23, 24}, + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM one_pk where pk < 1", - ExpectedSelect: []sql.Row{ - sql.NewRow(0, 1, 1, 2, 3, 4), + ExpectedSelect: []sql.UntypedSqlRow{ + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 1, 1, 2, 3, 4}, + {1, 11, 11, 12, 13, 14}, + {2, 20, 21, 22, 23, 24}, + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 1, 2, 2, 3, 4}, + {1, 11, 12, 12, 13, 14}, + {2, 20, 21, 22, 23, 24}, + {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(6, 6)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(6, 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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 2, 1, 2, 3, 4}, + {0, 1, 12, 11, 12, 13, 14}, + {1, 0, 22, 21, 22, 23, 24}, + {1, 1, 32, 31, 32, 33, 34}, }, }, { WriteQuery: `update mytable h join mytable on h.i = mytable.i and h.s <> mytable.s set h.i = mytable.i+1;`, - ExpectedWriteResult: []sql.Row{{newUpdateResult(0, 0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(0, 0)}}, SelectQuery: "select * from mytable", - ExpectedSelect: []sql.Row{{1, "first row"}, {2, "second row"}, {3, "third row"}}, + ExpectedSelect: []sql.UntypedSqlRow{{1, "first row"}, {2, "second row"}, {3, "third row"}}, }, { WriteQuery: `UPDATE othertable CROSS JOIN tabletest set othertable.i2 = othertable.i2 * 10`, // cross join - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {"third", 10}, + {"second", 20}, + {"first", 30}, }, }, { WriteQuery: `UPDATE tabletest cross join tabletest as t2 set tabletest.i = tabletest.i * 10`, // cross join - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {10, "first row"}, + {20, "second row"}, + {30, "third row"}, }, }, { WriteQuery: `UPDATE othertable cross join tabletest set tabletest.i = tabletest.i * 10`, // cross join - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {10, "first row"}, + {20, "second row"}, + {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`, // cross join - ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 1, 2, 3, 4}, + {0, 1, 10, 11, 12, 13, 14}, + {1, 0, 20, 21, 22, 23, 24}, + {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'`, // cross join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {"third", 1}, + {"second", 2}, + {"fourth", 3}, }, }, { WriteQuery: `UPDATE tabletest cross join tabletest as t2 set t2.i = t2.i * 10`, // cross join - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {10, "first row"}, + {20, "second row"}, + {30, "third row"}, }, }, { WriteQuery: `UPDATE othertable LEFT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.s2 = 'fourth'`, // left join - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {"fourth", 1}, + {"fourth", 2}, + {"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`, // left join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "first row"}, + {2, "second row"}, + {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`, // left join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "first row"}, + {2, "second row"}, + {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`, // left join - ExpectedWriteResult: []sql.Row{{newUpdateResult(3, 3)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 2, 3, 4}, + {1, 11, 11, 12, 13, 14}, + {2, 21, 21, 22, 23, 24}, + {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`, // left join - ExpectedWriteResult: []sql.Row{{newUpdateResult(0, 0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 2, 3, 4}, + {1, 10, 11, 12, 13, 14}, + {2, 20, 21, 22, 23, 24}, + {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`, // left join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 2, 3, 4}, + {1, 11, 11, 12, 13, 14}, + {2, 20, 21, 22, 23, 24}, + {3, 30, 31, 32, 33, 34}, }, }, { WriteQuery: `UPDATE othertable RIGHT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.s2 = 'fourth'`, // right join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {"third", 1}, + {"second", 2}, + {"fourth", 3}, }, }, { WriteQuery: `UPDATE othertable RIGHT JOIN tabletest on othertable.i2=3 and tabletest.i=3 SET othertable.i2 = othertable.i2 + 1`, // right join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {"third", 1}, + {"second", 2}, + {"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';`, // right join - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "updated"}, + {2, "second row"}, + {3, "third row"}, }, }, { WriteQuery: `UPDATE IGNORE 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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 1, 1, 2, 3, 4}, + {0, 1, 11, 11, 12, 13, 14}, + {1, 0, 21, 21, 22, 23, 24}, + {1, 1, 31, 31, 32, 33, 34}, }, }, { WriteQuery: `UPDATE IGNORE one_pk JOIN one_pk one_pk2 on one_pk.pk = one_pk2.pk SET one_pk.pk = 10`, - ExpectedWriteResult: []sql.Row{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 4, Updated: 1, Warnings: 0}}}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 4, Updated: 1, Warnings: 0}}}}, SelectQuery: "SELECT * FROM one_pk;", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, 10, 11, 12, 13, 14), - sql.NewRow(2, 20, 21, 22, 23, 24), - sql.NewRow(3, 30, 31, 32, 33, 34), - sql.NewRow(10, 0, 1, 2, 3, 4), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, 10, 11, 12, 13, 14}, + {2, 20, 21, 22, 23, 24}, + {3, 30, 31, 32, 33, 34}, + {10, 0, 1, 2, 3, 4}, }, }, { WriteQuery: "with t (n) as (select (1) from dual) UPDATE mytable set s = concat('updated ', i) where i in (select n from t)", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "select * from mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, "updated 1"), - sql.NewRow(2, "second row"), - sql.NewRow(3, "third row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "updated 1"}, + {2, "second row"}, + {3, "third row"}, }, }, { WriteQuery: "with recursive t (n) as (select (1) from dual union all select n + 1 from t where n < 2) UPDATE mytable set s = concat('updated ', i) where i in (select n from t)", - ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(2, 2)}}, SelectQuery: "select * from mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, "updated 1"), - sql.NewRow(2, "updated 2"), - sql.NewRow(3, "third row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "updated 1"}, + {2, "updated 2"}, + {3, "third row"}, }, }, } @@ -473,21 +473,21 @@ var UpdateTests = []WriteQueryTest{ var SpatialUpdateTests = []WriteQueryTest{ { WriteQuery: "UPDATE point_table SET p = point(123.456,789);", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 1)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM point_table;", - ExpectedSelect: []sql.Row{{int64(5), types.Point{X: 123.456, Y: 789}}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(5), types.Point{X: 123.456, Y: 789}}}, }, { WriteQuery: "UPDATE line_table SET l = linestring(point(1.2,3.4),point(5.6,7.8));", - ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(2, 2)}}, SelectQuery: "SELECT * FROM line_table;", - ExpectedSelect: []sql.Row{{int64(0), types.LineString{Points: []types.Point{{X: 1.2, Y: 3.4}, {X: 5.6, Y: 7.8}}}}, {int64(1), types.LineString{Points: []types.Point{{X: 1.2, Y: 3.4}, {X: 5.6, Y: 7.8}}}}}, + ExpectedSelect: []sql.UntypedSqlRow{{int64(0), types.LineString{Points: []types.Point{{X: 1.2, Y: 3.4}, {X: 5.6, Y: 7.8}}}}, {int64(1), types.LineString{Points: []types.Point{{X: 1.2, Y: 3.4}, {X: 5.6, Y: 7.8}}}}}, }, { WriteQuery: "UPDATE polygon_table SET p = polygon(linestring(point(1,1),point(1,-1),point(-1,-1),point(-1,1),point(1,1)));", - ExpectedWriteResult: []sql.Row{{newUpdateResult(2, 2)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(2, 2)}}, SelectQuery: "SELECT * FROM polygon_table;", - ExpectedSelect: []sql.Row{ + ExpectedSelect: []sql.UntypedSqlRow{ {int64(0), types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 1, Y: 1}, {X: 1, Y: -1}, {X: -1, Y: -1}, {X: -1, Y: 1}, {X: 1, Y: 1}}}}}}, {int64(1), types.Polygon{Lines: []types.LineString{{Points: []types.Point{{X: 1, Y: 1}, {X: 1, Y: -1}, {X: -1, Y: -1}, {X: -1, Y: 1}, {X: 1, Y: 1}}}}}}, }, @@ -498,23 +498,23 @@ var SpatialUpdateTests = []WriteQueryTest{ 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)}}, // TODO: Should be matched = 6 + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(8, 6)}}, // TODO: Should be matched = 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), + ExpectedSelect: []sql.UntypedSqlRow{ + {0, 0, 2, 1, 2, 3, 4}, + {0, 1, 12, 11, 12, 13, 14}, + {1, 0, 22, 21, 22, 23, 24}, + {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)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, SelectQuery: "SELECT * FROM othertable;", - ExpectedSelect: []sql.Row{ - sql.NewRow("third", 1), - sql.NewRow("second", 2), - sql.NewRow("fourth", 3), + ExpectedSelect: []sql.UntypedSqlRow{ + {"third", 1}, + {"second", 2}, + {"fourth", 3}, }, }, } @@ -592,22 +592,22 @@ var GenericUpdateErrorTests = []GenericErrorQueryTest{ var UpdateIgnoreTests = []WriteQueryTest{ { WriteQuery: "UPDATE IGNORE mytable SET i = 2 where i = 1", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, SelectQuery: "SELECT * FROM mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, "first row"), - sql.NewRow(2, "second row"), - sql.NewRow(3, "third row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "first row"}, + {2, "second row"}, + {3, "third row"}, }, }, { WriteQuery: "UPDATE IGNORE mytable SET i = i+1 where i = 1", - ExpectedWriteResult: []sql.Row{{newUpdateResult(1, 0)}}, + ExpectedWriteResult: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, SelectQuery: "SELECT * FROM mytable order by i", - ExpectedSelect: []sql.Row{ - sql.NewRow(1, "first row"), - sql.NewRow(2, "second row"), - sql.NewRow(3, "third row"), + ExpectedSelect: []sql.UntypedSqlRow{ + {1, "first row"}, + {2, "second row"}, + {3, "third row"}, }, }, } @@ -624,55 +624,55 @@ var UpdateIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE IGNORE pkTable set pk = pk + 1, val = val + 1", - Expected: []sql.Row{{newUpdateResult(3, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(3, 1)}}, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * FROM pkTable order by pk", - Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {4, 4}}, }, { Query: "UPDATE IGNORE idxTable set val = val + 1", - Expected: []sql.Row{{newUpdateResult(3, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(3, 1)}}, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * FROM idxTable order by pk", - Expected: []sql.Row{{1, 1}, {2, 2}, {3, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {3, 4}}, }, { Query: "UPDATE IGNORE pkTable set val = val + 1 where pk = 2", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, }, { Query: "SELECT * FROM pkTable order by pk", - Expected: []sql.Row{{1, 1}, {2, 3}, {4, 4}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 3}, {4, 4}}, }, { Query: "UPDATE IGNORE pkTable SET pk = NULL", - Expected: []sql.Row{{newUpdateResult(3, 3)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(3, 3)}}, ExpectedWarning: mysql.ERBadNullError, }, { Query: "SELECT * FROM pkTable order by pk", - Expected: []sql.Row{{0, 1}, {0, 3}, {0, 4}}, + Expected: []sql.UntypedSqlRow{{0, 1}, {0, 3}, {0, 4}}, }, { Query: "UPDATE IGNORE pkTable SET val = NULL", - Expected: []sql.Row{{newUpdateResult(3, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(3, 1)}}, }, { Query: "SELECT * FROM pkTable order by pk", - Expected: []sql.Row{{0, 0}, {0, 3}, {0, 4}}, + Expected: []sql.UntypedSqlRow{{0, 0}, {0, 3}, {0, 4}}, }, { Query: "UPDATE IGNORE idxTable set pk = pk + 1, val = val + 1", // two bad updates - Expected: []sql.Row{{newUpdateResult(3, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(3, 1)}}, ExpectedWarning: mysql.ERDupEntry, }, { Query: "SELECT * FROM idxTable order by pk", - Expected: []sql.Row{{1, 1}, {2, 2}, {4, 5}}, + Expected: []sql.UntypedSqlRow{{1, 1}, {2, 2}, {4, 5}}, }, }, }, @@ -685,21 +685,21 @@ var UpdateIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE IGNORE t1 SET v1 = 'dsddads'", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, ExpectedWarning: mysql.ERTruncatedWrongValueForField, }, { Query: "SELECT * FROM t1", - Expected: []sql.Row{{1, 0, 1}}, + Expected: []sql.UntypedSqlRow{{1, 0, 1}}, }, { Query: "UPDATE IGNORE t1 SET pk = 'dasda', v2 = 'dsddads'", - Expected: []sql.Row{{newUpdateResult(1, 1)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 1)}}, ExpectedWarning: mysql.ERTruncatedWrongValueForField, }, { Query: "SELECT * FROM t1", - Expected: []sql.Row{{0, 0, 0}}, + Expected: []sql.UntypedSqlRow{{0, 0, 0}}, }, }, }, @@ -714,12 +714,12 @@ var UpdateIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE IGNORE objects SET color = 'orange' where id = 2", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, ExpectedWarning: mysql.ErNoReferencedRow2, }, { Query: "SELECT * FROM objects ORDER BY id", - Expected: []sql.Row{{1, "truck", "red"}, {2, "ball", "green"}, {3, "shoe", "blue"}}, + Expected: []sql.UntypedSqlRow{{1, "truck", "red"}, {2, "ball", "green"}, {3, "shoe", "blue"}}, }, }, }, @@ -733,12 +733,12 @@ var UpdateIgnoreScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "UPDATE IGNORE checksTable SET pk = pk + 1 where pk = 4", - Expected: []sql.Row{{newUpdateResult(1, 0)}}, + Expected: []sql.UntypedSqlRow{{newUpdateResult(1, 0)}}, ExpectedWarning: mysql.ERUnknownError, }, { Query: "SELECT * from checksTable ORDER BY pk", - Expected: []sql.Row{{1}, {2}, {3}, {4}}, + Expected: []sql.UntypedSqlRow{{1}, {2}, {3}, {4}}, }, }, }, @@ -857,7 +857,7 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP\n" + @@ -867,7 +867,7 @@ var OnUpdateExprScripts = []ScriptTest{ { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ZeroTime}, {2, ZeroTime}, {3, ZeroTime}, @@ -875,14 +875,14 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, ZeroTime}, {3, ZeroTime}, {10, Dec15_1_30}, @@ -890,13 +890,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 100", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Dec15_1_30}, {100, Dec15_1_30}, {100, Dec15_1_30}, @@ -905,13 +905,13 @@ var OnUpdateExprScripts = []ScriptTest{ { // updating timestamp itself blocks on update Query: "update t set ts = timestamp('2020-10-2')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Oct2Midnight}, {100, Oct2Midnight}, {100, Oct2Midnight}, @@ -928,7 +928,7 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp(3) DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP(3)\n" + @@ -938,7 +938,7 @@ var OnUpdateExprScripts = []ScriptTest{ { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ZeroTime}, {2, ZeroTime}, {3, ZeroTime}, @@ -946,14 +946,14 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, ZeroTime}, {3, ZeroTime}, {10, Dec15_1_30}, @@ -961,13 +961,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 100", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Dec15_1_30}, {100, Dec15_1_30}, {100, Dec15_1_30}, @@ -976,13 +976,13 @@ var OnUpdateExprScripts = []ScriptTest{ { // updating timestamp itself blocks on update Query: "update t set ts = timestamp('2020-10-2')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Oct2Midnight}, {100, Oct2Midnight}, {100, Oct2Midnight}, @@ -999,7 +999,7 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp(6) DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP(6)\n" + @@ -1009,7 +1009,7 @@ var OnUpdateExprScripts = []ScriptTest{ { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ZeroTime}, {2, ZeroTime}, {3, ZeroTime}, @@ -1017,14 +1017,14 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, ZeroTime}, {3, ZeroTime}, {10, Dec15_1_30}, @@ -1032,13 +1032,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 100", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Dec15_1_30}, {100, Dec15_1_30}, {100, Dec15_1_30}, @@ -1047,13 +1047,13 @@ var OnUpdateExprScripts = []ScriptTest{ { // updating timestamp itself blocks on update Query: "update t set ts = timestamp('2020-10-2')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Oct2Midnight}, {100, Oct2Midnight}, {100, Oct2Midnight}, @@ -1070,7 +1070,7 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1079,7 +1079,7 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, Jan1Noon}, {2, Jan1Noon}, {3, Jan1Noon}, @@ -1087,13 +1087,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, Jan1Noon}, {3, Jan1Noon}, {10, Dec15_1_30}, @@ -1101,13 +1101,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 100", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Dec15_1_30}, {100, Dec15_1_30}, {100, Dec15_1_30}, @@ -1116,13 +1116,13 @@ var OnUpdateExprScripts = []ScriptTest{ { // updating timestamp itself blocks on update Query: "update t set ts = timestamp('2020-10-2')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Oct2Midnight}, {100, Oct2Midnight}, {100, Oct2Midnight}, @@ -1139,7 +1139,7 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp\n" + @@ -1148,13 +1148,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp default 0 on update current_timestamp;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1163,7 +1163,7 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, nil}, {2, nil}, {3, nil}, @@ -1171,13 +1171,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, nil}, {3, nil}, {10, Dec15_1_30}, @@ -1185,13 +1185,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 100", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Dec15_1_30}, {100, Dec15_1_30}, {100, Dec15_1_30}, @@ -1199,13 +1199,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set ts = timestamp('2020-10-2')", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 3, Info: plan.UpdateInfo{Matched: 3, Updated: 3}}}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, Oct2Midnight}, {100, Oct2Midnight}, {100, Oct2Midnight}, @@ -1222,7 +1222,7 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show create table t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int NOT NULL,\n" + " `ts` timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,\n" + @@ -1234,7 +1234,7 @@ var OnUpdateExprScripts = []ScriptTest{ { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ZeroTime, ZeroTime}, {2, ZeroTime, ZeroTime}, {3, ZeroTime, ZeroTime}, @@ -1242,14 +1242,14 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, ZeroTime, ZeroTime}, {3, ZeroTime, ZeroTime}, {10, Dec15_1_30, Dec15_1_30}, @@ -1257,14 +1257,14 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "update t set ts = timestamp('2020-10-2') where i = 2", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, Oct2Midnight, Dec15_1_30}, {3, ZeroTime, ZeroTime}, {10, Dec15_1_30, Dec15_1_30}, @@ -1283,14 +1283,14 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update t set i = 10 where i = 1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from t order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2, ZeroTime, ZeroTime}, {3, ZeroTime, ZeroTime}, {10, Oct2Midnight, Dec15_1_30}, @@ -1312,19 +1312,19 @@ var OnUpdateExprScripts = []ScriptTest{ { SkipResultCheckOnServerEngine: true, Query: "select * from b order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0, ZeroTime, ZeroTime}, }, }, { Query: "update a set i = 10;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from b order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, Dec15_1_30, Dec15_1_30}, }, }, @@ -1344,19 +1344,19 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "insert into t values (1);", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1}}, }, }, { Query: "select * from a order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, Dec15_1_30, Dec15_1_30}, }, }, { Query: "select * from b order by i;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, Dec15_1_30, Dec15_1_30}, }, }, @@ -1374,14 +1374,14 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "update parent set i = 10;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { SkipResultCheckOnServerEngine: true, Query: "select * from child;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {10, ZeroTime}, }, }, @@ -1399,13 +1399,13 @@ var OnUpdateExprScripts = []ScriptTest{ // call depends on stored procedure stmt for whether to use 'query' or 'exec' from go sql driver. SkipResultCheckOnServerEngine: true, Query: "call p();", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.OkResult{RowsAffected: 1, Info: plan.UpdateInfo{Matched: 1, Updated: 1}}}, }, }, { Query: "select * from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, Dec15_1_30}, }, }, @@ -1419,13 +1419,13 @@ var OnUpdateExprScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "create table t1 (i int, ts timestamp on update now())", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t1", "CREATE TABLE `t1` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1434,13 +1434,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t2 (i int, ts timestamp on update now(0))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t2;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t2", "CREATE TABLE `t2` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1449,13 +1449,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t3 (i int, ts timestamp on update localtime)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t3;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t3", "CREATE TABLE `t3` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1464,13 +1464,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t4 (i int, ts timestamp on update localtime())", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t4;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t4", "CREATE TABLE `t4` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1479,13 +1479,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t5 (i int, ts timestamp on update localtime(0))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t5;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t5", "CREATE TABLE `t5` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1494,13 +1494,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t6 (i int, ts timestamp on update localtimestamp)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t6;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t6", "CREATE TABLE `t6` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1509,13 +1509,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t7 (i int, ts timestamp on update localtimestamp())", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t7;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t7", "CREATE TABLE `t7` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1524,13 +1524,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "create table t8 (i int, ts timestamp on update localtimestamp(0))", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t8;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t8", "CREATE TABLE `t8` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1539,13 +1539,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update now()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1554,13 +1554,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update now(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1569,13 +1569,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update localtime", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1584,13 +1584,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update localtime()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1599,13 +1599,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update localtime(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1614,13 +1614,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update localtimestamp", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1629,13 +1629,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update localtimestamp()", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + @@ -1644,13 +1644,13 @@ var OnUpdateExprScripts = []ScriptTest{ }, { Query: "alter table t modify column ts timestamp on update localtimestamp(0)", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {types.NewOkResult(0)}, }, }, { Query: "show create table t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"t", "CREATE TABLE `t` (\n" + " `i` int,\n" + " `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" + diff --git a/enginetest/queries/variable_queries.go b/enginetest/queries/variable_queries.go index 056771d00b..fc5d993295 100644 --- a/enginetest/queries/variable_queries.go +++ b/enginetest/queries/variable_queries.go @@ -32,7 +32,7 @@ var VariableQueries = []ScriptTest{ Name: "use string name for foreign_key checks", SetUpScript: []string{}, Query: "set @@foreign_key_checks = off;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Name: "set system variables", @@ -40,14 +40,14 @@ var VariableQueries = []ScriptTest{ "set @@auto_increment_increment = 100, sql_select_limit = 1", }, Query: "SELECT @@auto_increment_increment, @@sql_select_limit", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, 1}, }, }, { Name: "select join_complexity_limit", Query: "SELECT @@join_complexity_limit", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(12)}, }, }, @@ -57,7 +57,7 @@ var VariableQueries = []ScriptTest{ "set @@join_complexity_limit = 2", }, Query: "SELECT @@join_complexity_limit", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {uint64(2)}, }, }, @@ -66,7 +66,7 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @@max_allowed_packet;", - Expected: []sql.Row{{1073741824}}, + Expected: []sql.UntypedSqlRow{{1073741824}}, ExpectedColumns: sql.Schema{ { Name: "@@max_allowed_packet", @@ -76,7 +76,7 @@ var VariableQueries = []ScriptTest{ }, { Query: "select @@session.max_allowed_packet;", - Expected: []sql.Row{{1073741824}}, + Expected: []sql.UntypedSqlRow{{1073741824}}, ExpectedColumns: sql.Schema{ { Name: "@@session.max_allowed_packet", @@ -86,7 +86,7 @@ var VariableQueries = []ScriptTest{ }, { Query: "select @@global.max_allowed_packet;", - Expected: []sql.Row{{1073741824}}, + Expected: []sql.UntypedSqlRow{{1073741824}}, ExpectedColumns: sql.Schema{ { Name: "@@global.max_allowed_packet", @@ -96,7 +96,7 @@ var VariableQueries = []ScriptTest{ }, { Query: "select @@GLoBAL.max_allowed_packet;", - Expected: []sql.Row{{1073741824}}, + Expected: []sql.UntypedSqlRow{{1073741824}}, ExpectedColumns: sql.Schema{ { Name: "@@GLoBAL.max_allowed_packet", @@ -111,19 +111,19 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @@server_id;", - Expected: []sql.Row{{uint32(1)}}, + Expected: []sql.UntypedSqlRow{{uint32(1)}}, }, { Query: "set @@server_id=123;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "set @@GLOBAL.server_id=123;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "set @@GLOBAL.server_id=0;", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, }, }, @@ -137,7 +137,7 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "select @myvar, @@autocommit, @myvar2, @myvar3", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 0, 0}, }, }, @@ -149,7 +149,7 @@ var VariableQueries = []ScriptTest{ "set @@auto_increment_INCREMENT = 100, sql_select_LIMIT = 1", }, Query: "SELECT @@auto_increment_increment, @@sql_select_limit", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {100, 1}, }, }, @@ -160,7 +160,7 @@ var VariableQueries = []ScriptTest{ "set @@auto_increment_increment = default, sql_select_limit = default", }, Query: "SELECT @@auto_increment_increment, @@sql_select_limit", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, math.MaxInt32}, }, }, @@ -170,7 +170,7 @@ var VariableQueries = []ScriptTest{ "set @@autocommit = ON, sql_mode = \"\"", }, Query: "SELECT @@autocommit, @@session.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ""}, }, }, @@ -180,7 +180,7 @@ var VariableQueries = []ScriptTest{ "set @@autocommit = ON, session sql_mode = \"\"", }, Query: "SELECT @@autocommit, @@session.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, ""}, }, }, @@ -190,7 +190,7 @@ var VariableQueries = []ScriptTest{ "set SESSION sql_mode = 'ANSI'", }, Query: "SELECT @@session.sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ANSI"}, }, }, @@ -200,7 +200,7 @@ var VariableQueries = []ScriptTest{ `set @@autocommit = "true", default_table_encryption = "false"`, }, Query: "SELECT @@autocommit, @@session.default_table_encryption", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, @@ -210,7 +210,7 @@ var VariableQueries = []ScriptTest{ `set @@autocommit = true, default_table_encryption = false`, }, Query: "SELECT @@autocommit, @@session.default_table_encryption", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 0}, }, }, @@ -221,7 +221,7 @@ var VariableQueries = []ScriptTest{ `set lc_messages = concat(@@lc_messages, '456'), @@auto_increment_increment = @@auto_increment_increment + 3`, }, Query: "SELECT @@lc_messages, @@auto_increment_increment", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123456", 4}, }, }, @@ -232,7 +232,7 @@ var VariableQueries = []ScriptTest{ `set @@sql_select_limit = @@auto_increment_increment`, }, Query: "SELECT @@sql_select_limit", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -242,7 +242,7 @@ var VariableQueries = []ScriptTest{ `set names utf8mb4`, }, Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb4", "utf8mb4", "utf8mb4"}, }, }, @@ -253,7 +253,7 @@ var VariableQueries = []ScriptTest{ `set NAMES "utf8mb3"`, }, Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8mb3", "utf8mb3", "utf8mb3"}, }, }, @@ -263,7 +263,7 @@ var VariableQueries = []ScriptTest{ `set character set utf8`, }, Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8", "utf8mb4", "utf8"}, }, }, @@ -273,7 +273,7 @@ var VariableQueries = []ScriptTest{ `set charset utf8`, }, Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8", "utf8mb4", "utf8"}, }, }, @@ -283,7 +283,7 @@ var VariableQueries = []ScriptTest{ `set charset 'utf8'`, }, Query: "SELECT @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"utf8", "utf8mb4", "utf8"}, }, }, @@ -294,7 +294,7 @@ var VariableQueries = []ScriptTest{ `SET sql_mode=(SELECT CONCAT(@@sql_mode, ',PIPES_AS_CONCAT,NO_ENGINE_SUBSTITUTION')), time_zone='+00:00', NAMES utf8mb3 COLLATE utf8mb3_bin;`, }, Query: "SELECT @@sql_mode, @@time_zone, @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI", "+00:00", "utf8mb3", "utf8mb3", "utf8mb3"}, }, }, @@ -304,7 +304,7 @@ var VariableQueries = []ScriptTest{ `SET sql_mode=ALLOW_INVALID_DATES, time_zone='+00:00', CHARSET 'utf8'`, }, Query: "SELECT @@sql_mode, @@time_zone, @@character_set_client, @@character_set_connection, @@character_set_results", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ALLOW_INVALID_DATES", "+00:00", "utf8", "utf8mb4", "utf8"}, }, }, @@ -314,7 +314,7 @@ var VariableQueries = []ScriptTest{ `set @@sql_mode = ALLOW_INVALID_DATES`, }, Query: "SELECT @@sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ALLOW_INVALID_DATES"}, }, }, @@ -324,7 +324,7 @@ var VariableQueries = []ScriptTest{ `set sql_mode = ALLOW_INVALID_DATES`, }, Query: "SELECT @@sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ALLOW_INVALID_DATES"}, }, }, @@ -334,7 +334,7 @@ var VariableQueries = []ScriptTest{ `set sql_mode = NO_AUTO_CREATE_USER`, }, Query: "SELECT @@sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_AUTO_CREATE_USER"}, }, }, @@ -344,7 +344,7 @@ var VariableQueries = []ScriptTest{ `SET sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION'`, }, Query: "SELECT @@sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES,STRICT_TRANS_TABLES,TRADITIONAL"}, }, }, @@ -354,7 +354,7 @@ var VariableQueries = []ScriptTest{ `SET sql_mode = ',,,,STRICT_TRANS_TABLES,,,,,NO_AUTO_VALUE_ON_ZERO,,,,NO_ENGINE_SUBSTITUTION,,,,,,'`, }, Query: "SELECT @@sql_mode", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"}, }, }, @@ -366,7 +366,7 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `SHOW VARIABLES LIKE '%sql_mode%'`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"sql_mode", "ONLY_FULL_GROUP_BY"}, }, }, @@ -378,13 +378,13 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: `select @@innodb_autoinc_lock_mode;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, { Query: `select @@global.innodb_autoinc_lock_mode;`, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {2}, }, }, @@ -406,7 +406,7 @@ var VariableQueries = []ScriptTest{ `set @myvar = "hello"`, }, Query: "SELECT @myvar", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"hello"}, }, }, @@ -416,7 +416,7 @@ var VariableQueries = []ScriptTest{ `set @myvar = 123`, }, Query: "SELECT @myvar", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {123}, }, }, @@ -426,7 +426,7 @@ var VariableQueries = []ScriptTest{ `set @myvar = 123.4`, }, Query: "SELECT @myvar", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123.4"}, }, }, @@ -436,7 +436,7 @@ var VariableQueries = []ScriptTest{ `set @myvar = 123.4, @@auto_increment_increment = 1234`, }, Query: "SELECT @myvar, @@auto_increment_increment", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"123.4", 1234}, }, }, @@ -447,7 +447,7 @@ var VariableQueries = []ScriptTest{ `set auto_increment_increment = @myvar`, }, Query: "SELECT @myvar, @@auto_increment_increment", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1234, 1234}, }, }, @@ -457,7 +457,7 @@ var VariableQueries = []ScriptTest{ `set @@LOCAL.cte_max_recursion_depth = 1234`, }, Query: "SELECT @@SESSION.cte_max_recursion_depth", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1234}, }, }, @@ -468,7 +468,7 @@ var VariableQueries = []ScriptTest{ `set cte_max_recursion_depth = 77`, }, Query: "SELECT @cte_max_recursion_depth, @@cte_max_recursion_depth", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {55, 77}, }, }, @@ -477,19 +477,19 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @doesNotExist;", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT @doesNotExist is NULL;", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT @doesNotExist='';", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, { Query: "SELECT @doesNotExist < 123;", - Expected: []sql.Row{{nil}}, + Expected: []sql.UntypedSqlRow{{nil}}, }, }, }, @@ -502,19 +502,19 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT @stringVar='abc'", - Expected: []sql.Row{{true}}, + Expected: []sql.UntypedSqlRow{{true}}, }, { Query: "SELECT @stringVar='abcd';", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT @stringVar=123;", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, { Query: "SELECT @stringVar is null;", - Expected: []sql.Row{{false}}, + Expected: []sql.UntypedSqlRow{{false}}, }, }, }, @@ -523,55 +523,55 @@ var VariableQueries = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "set transaction isolation level serializable, read only", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@transaction_isolation, @@transaction_read_only", - Expected: []sql.Row{{"SERIALIZABLE", 1}}, + Expected: []sql.UntypedSqlRow{{"SERIALIZABLE", 1}}, }, { Query: "set transaction read write, isolation level read uncommitted", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@transaction_isolation, @@transaction_read_only", - Expected: []sql.Row{{"READ-UNCOMMITTED", 0}}, + Expected: []sql.UntypedSqlRow{{"READ-UNCOMMITTED", 0}}, }, { Query: "set transaction isolation level read committed", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@transaction_isolation", - Expected: []sql.Row{{"READ-COMMITTED"}}, + Expected: []sql.UntypedSqlRow{{"READ-COMMITTED"}}, }, { Query: "set transaction isolation level repeatable read", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@transaction_isolation", - Expected: []sql.Row{{"REPEATABLE-READ"}}, + Expected: []sql.UntypedSqlRow{{"REPEATABLE-READ"}}, }, { Query: "set session transaction isolation level serializable, read only", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@transaction_isolation, @@transaction_read_only", - Expected: []sql.Row{{"SERIALIZABLE", 1}}, + Expected: []sql.UntypedSqlRow{{"SERIALIZABLE", 1}}, }, { Query: "set global transaction read write, isolation level read uncommitted", - Expected: []sql.Row{{}}, + Expected: []sql.UntypedSqlRow{{}}, }, { Query: "select @@transaction_isolation, @@transaction_read_only", - Expected: []sql.Row{{"SERIALIZABLE", 1}}, + Expected: []sql.UntypedSqlRow{{"SERIALIZABLE", 1}}, }, { Query: "select @@global.transaction_isolation, @@global.transaction_read_only", - Expected: []sql.Row{{"READ-UNCOMMITTED", 0}}, + Expected: []sql.UntypedSqlRow{{"READ-UNCOMMITTED", 0}}, }, }, }, @@ -584,7 +584,7 @@ var VariableQueries = []ScriptTest{ // `set @v1 = 1234`, // }, // Query: "SELECT @v1, `@v1` from test", - // Expected: []sql.Row{ + // Expected: []sql.UntypedSqlRow{ // {1234, 123}, // }, //}, diff --git a/enginetest/queries/vector_function_queries.go b/enginetest/queries/vector_function_queries.go deleted file mode 100644 index 6fdaaf72b4..0000000000 --- a/enginetest/queries/vector_function_queries.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2024 Dolthub, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package queries - -import ( - "github.com/dolthub/go-mysql-server/sql" - "github.com/dolthub/go-mysql-server/sql/types" -) - -var VectorFunctionQueries = []ScriptTest{ - { - Name: "basic usage of VEC_DISTANCE without index", - SetUpScript: []string{ - "create table vectors (id int primary key, v json);", - `insert into vectors values (1, '[3.0,4.0]'), (2, '[0.0,0.0]'), (3, '[1.0,-1.0]'), (4, '[-2.0,0.0]');`, - }, - Assertions: []ScriptTestAssertion{ - { - Query: "select VEC_DISTANCE('[10.0]', '[20.0]');", - Expected: []sql.Row{{100.0}}, - }, - { - Query: "select VEC_DISTANCE_L2_SQUARED('[1.0, 2.0]', '[5.0, 5.0]');", - Expected: []sql.Row{{25.0}}, - }, - { - Query: "select * from vectors order by VEC_DISTANCE('[0.0,0.0]', v)", - Expected: []sql.Row{ - {2, types.MustJSON(`[0.0, 0.0]`)}, - {3, types.MustJSON(`[1.0, -1.0]`)}, - {4, types.MustJSON(`[-2.0, 0.0]`)}, - {1, types.MustJSON(`[3.0, 4.0]`)}, - }, - }, - { - Query: "select * from vectors order by VEC_DISTANCE_L2_SQUARED('[-2.0,0.0]', v)", - Expected: []sql.Row{ - {4, types.MustJSON(`[-2.0, 0.0]`)}, - {2, types.MustJSON(`[0.0, 0.0]`)}, - {3, types.MustJSON(`[1.0, -1.0]`)}, - {1, types.MustJSON(`[3.0, 4.0]`)}, - }, - }, - }, - }, -} diff --git a/enginetest/queries/vector_index_queries.go b/enginetest/queries/vector_index_queries.go deleted file mode 100644 index fd1b17a8d9..0000000000 --- a/enginetest/queries/vector_index_queries.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2024 Dolthub, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package queries - -import ( - "github.com/dolthub/go-mysql-server/sql" - "github.com/dolthub/go-mysql-server/sql/types" -) - -var VectorIndexQueries = []ScriptTest{ - { - Name: "basic vector index", - SetUpScript: []string{ - "create table vectors (id int primary key, v json);", - `insert into vectors values (1, '[4.0,3.0]'), (2, '[0.0,0.0]'), (3, '[-1.0,1.0]'), (4, '[0.0,-2.0]');`, - `create vector index v_idx on vectors(v);`, - }, - Assertions: []ScriptTestAssertion{ - { - Query: "show create table vectors", - Expected: []sql.Row{ - {"vectors", "CREATE TABLE `vectors` (\n `id` int NOT NULL,\n `v` json,\n PRIMARY KEY (`id`),\n VECTOR KEY `v_idx` (`v`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}, - }, - }, - { - Query: "select * from vectors order by VEC_DISTANCE('[0.0,0.0]', v) limit 4", - Expected: []sql.Row{ - {2, types.MustJSON(`[0.0, 0.0]`)}, - {3, types.MustJSON(`[-1.0, 1.0]`)}, - {4, types.MustJSON(`[0.0, -2.0]`)}, - {1, types.MustJSON(`[4.0, 3.0]`)}, - }, - ExpectedIndexes: []string{"v_idx"}, - }, - { - // Only queries with a limit can use a vector index. - Query: "select * from vectors order by VEC_DISTANCE('[0.0,0.0]', v)", - Expected: []sql.Row{ - {2, types.MustJSON(`[0.0, 0.0]`)}, - {3, types.MustJSON(`[-1.0, 1.0]`)}, - {4, types.MustJSON(`[0.0, -2.0]`)}, - {1, types.MustJSON(`[4.0, 3.0]`)}, - }, - ExpectedIndexes: nil, - }, - { - Query: "select * from vectors order by VEC_DISTANCE_L2_SQUARED('[0.0,-2.0]', v) limit 4", - Expected: []sql.Row{ - {4, types.MustJSON(`[0.0, -2.0]`)}, - {2, types.MustJSON(`[0.0, 0.0]`)}, - {3, types.MustJSON(`[-1.0, 1.0]`)}, - {1, types.MustJSON(`[4.0, 3.0]`)}, - }, - ExpectedIndexes: []string{"v_idx"}, - }, - { - // Ensure vector index is not used for range lookups. - Query: "select * from vectors order by v limit 4", - Expected: []sql.Row{ - {3, types.MustJSON(`[-1.0, 1.0]`)}, - {4, types.MustJSON(`[0.0, -2.0]`)}, - {2, types.MustJSON(`[0.0, 0.0]`)}, - {1, types.MustJSON(`[4.0, 3.0]`)}, - }, - ExpectedIndexes: []string{}, - }, - }, - }, -} diff --git a/enginetest/queries/view_queries.go b/enginetest/queries/view_queries.go index dce470f12b..ae3efe4817 100644 --- a/enginetest/queries/view_queries.go +++ b/enginetest/queries/view_queries.go @@ -32,11 +32,11 @@ var ViewScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "SELECT database()", - Expected: []sql.Row{{"mydb"}}, + Expected: []sql.UntypedSqlRow{{"mydb"}}, }, { Query: "SELECT * from live.xy;", - Expected: []sql.Row{{1, 2}}, + Expected: []sql.UntypedSqlRow{{1, 2}}, }, }, }, @@ -63,11 +63,11 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "CREATE VIEW view_2_tab1_157 AS SELECT pk, col0 FROM tab1 WHERE NOT ((col0 IN (SELECT col3 FROM tab1 WHERE ((col0 IS NULL) OR col3 > 5 OR col3 <= 50 OR col1 < 83.11))) OR col0 > 75)", - Expected: []sql.Row{{types.OkResult{}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{}}}, }, { Query: "select pk, col0 from view_2_tab1_157", - Expected: []sql.Row{{6, 0}}, + Expected: []sql.UntypedSqlRow{{6, 0}}, }, }, }, @@ -79,7 +79,7 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * from v;", - Expected: []sql.Row{{4}}, + Expected: []sql.UntypedSqlRow{{4}}, ExpectedColumns: sql.Schema{ { Name: "2+2", @@ -99,7 +99,7 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * from xyv;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, ExpectedColumns: sql.Schema{ { Name: "u", @@ -137,7 +137,7 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * from caseSensitive;", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, ExpectedColumns: sql.Schema{ { Name: "AbCdEfG", @@ -168,7 +168,7 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "SELECT * from quotes order by id", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, "joe's"}, {2, "mia\\'s"}, {3, "bob's"}, @@ -186,15 +186,15 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "show keys from v", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "show index from v from mydb", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, { Query: "show index from v where Column_name = 'x'", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, @@ -212,61 +212,61 @@ CREATE TABLE tab1 ( Assertions: []ScriptTestAssertion{ { Query: "show full columns from v;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", nil, "NO", "", nil, "", "", ""}, {"j", "int", nil, "YES", "", "100", "", "", ""}, }, }, { Query: "show columns from v;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "", nil, ""}, {"j", "int", "YES", "", "100", ""}, }, }, { Query: "describe v;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "", nil, ""}, {"j", "int", "YES", "", "100", ""}, }, }, { Query: "select * from v", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 100}, }, }, { Query: "show full columns from v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", nil, "NO", "", nil, "", "", ""}, {"jj", "bigint", nil, "YES", "", nil, "", "", ""}, }, }, { Query: "show columns from v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "", nil, ""}, {"jj", "bigint", "YES", "", nil, ""}, }, }, { Query: "describe v1;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "", nil, ""}, {"jj", "bigint", "YES", "", nil, ""}, }, }, { Query: "select * from v1", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 110}, }, }, { Query: "show full columns from vv;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", nil, "NO", "", nil, "", "", ""}, {"ii", "int", nil, "NO", "", nil, "", "", ""}, {"j", "int", nil, "YES", "", "100", "", "", ""}, @@ -276,7 +276,7 @@ CREATE TABLE tab1 ( }, { Query: "show columns from vv;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "", nil, ""}, {"ii", "int", "NO", "", nil, ""}, {"j", "int", "YES", "", "100", ""}, @@ -286,7 +286,7 @@ CREATE TABLE tab1 ( }, { Query: "describe vv;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"i", "int", "NO", "", nil, ""}, {"ii", "int", "NO", "", nil, ""}, {"j", "int", "YES", "", "100", ""}, @@ -296,7 +296,7 @@ CREATE TABLE tab1 ( }, { Query: "select * from vv", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, 1, 100, 121, 223}, }, }, @@ -320,7 +320,7 @@ var ViewCreateInSubroutineTests = []ScriptTest{ }, { Query: "SELECT * from bar;", - Expected: []sql.Row{{1}}, + Expected: []sql.UntypedSqlRow{{1}}, Skip: true, }, }, diff --git a/enginetest/server_engine.go b/enginetest/server_engine.go index e77fdb02b0..790ce95af0 100644 --- a/enginetest/server_engine.go +++ b/enginetest/server_engine.go @@ -326,43 +326,43 @@ func convertValue(sch sql.Schema, row sql.Row) sql.Row { for i, col := range sch { switch col.Type.Type() { case query.Type_GEOMETRY: - if row[i] != nil { - r, _, err := types.GeometryType{}.Convert(row[i].([]byte)) + if row.GetValue(i) != nil { + r, _, err := types.GeometryType{}.Convert(row.GetValue(i).([]byte)) if err != nil { //t.Skip(fmt.Sprintf("received error converting returned geometry result")) } else { - row[i] = r + row.SetValue(i, r) } } case query.Type_JSON: - if row[i] != nil { + if row.GetValue(i) != nil { // TODO: dolt returns the json result without escaped quotes and backslashes, which does not Unmarshall - r, err := attemptUnmarshalJSON(string(row[i].([]byte))) + r, err := attemptUnmarshalJSON(string(row.GetValue(i).([]byte))) if err != nil { //t.Skip(fmt.Sprintf("received error unmarshalling returned json result")) - row[i] = nil + row.SetValue(i, nil) } else { - row[i] = r + row.SetValue(i, r) } } case query.Type_TIME: - if row[i] != nil { - r, _, err := types.TimespanType_{}.Convert(string(row[i].([]byte))) + if row.GetValue(i) != nil { + r, _, err := types.TimespanType_{}.Convert(string(row.GetValue(i).([]byte))) if err != nil { //t.Skip(fmt.Sprintf("received error converting returned timespan result")) } else { - row[i] = r + row.SetValue(i, r) } } case query.Type_UINT8, query.Type_UINT16, query.Type_UINT24, query.Type_UINT32, query.Type_UINT64: // TODO: check todo in 'emptyValuePointerForType' method // we try to cast any value we got to uint64 - if row[i] != nil { - r, err := castToUint64(row[i]) + if row.GetValue(i) != nil { + r, err := castToUint64(row.GetValue(i)) if err != nil { //t.Skip(fmt.Sprintf("received error converting returned unsigned int result")) } else { - row[i] = r + row.SetValue(i, r) } } } @@ -410,13 +410,13 @@ func castToUint64(v any) (uint64, error) { } func derefRow(r []any) (sql.Row, error) { - row := make(sql.Row, len(r)) + row := make(sql.UntypedSqlRow, len(r)) for i, v := range r { - var err error - row[i], err = deref(v) + dv, err := deref(v) if err != nil { return nil, err } + row.SetValue(i, dv) } return row, nil } diff --git a/enginetest/spatial_index_tests.go b/enginetest/spatial_index_tests.go index 0885c13d57..5a2905f47d 100644 --- a/enginetest/spatial_index_tests.go +++ b/enginetest/spatial_index_tests.go @@ -30,7 +30,7 @@ type SpatialIndexPlanTestAssertion struct { skip bool skipPrep bool noIdx bool - exp []sql.Row + exp []sql.UntypedSqlRow } type SpatialIndexPlanTest struct { @@ -49,7 +49,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ tests: []SpatialIndexPlanTestAssertion{ { q: "select p from point_tbl where st_intersects(p, point(0,0))", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {types.Point{}}, }, }, @@ -65,14 +65,14 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ { noIdx: true, // this should take advantage of indexes q: "select p from point_tbl where st_intersects(p, point(0,0)) = true", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {types.Point{}}, }, }, { noIdx: true, q: "select st_aswkt(p) from point_tbl where st_intersects(p, point(0,0)) = false order by st_x(p), st_y(p)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(1 1)"}, {"POINT(2 2)"}, }, @@ -91,12 +91,12 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ { noIdx: true, q: "select p from point_tbl where st_intersects(p, point(0,0)) and st_intersects(p, point(1,1))", - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, { noIdx: true, q: "select st_aswkt(p) from point_tbl where st_intersects(p, point(0,0)) or st_intersects(p, point(1,1)) order by st_x(p), st_y(p)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)"}, {"POINT(1 1)"}, }, @@ -104,14 +104,14 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ { noIdx: false, // still expect index access using primary key q: "select pk, st_aswkt(p) from point_tbl_pk where pk = 0 and st_intersects(p, point(0,0)) order by pk", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, "POINT(0 0)"}, }, }, { noIdx: false, // still expect index access using primary key q: "select pk, st_aswkt(p) from point_tbl_pk where pk = 0 or st_intersects(p, point(1,1)) order by pk", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, "POINT(0 0)"}, {1, "POINT(1 1)"}, }, @@ -127,7 +127,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ tests: []SpatialIndexPlanTestAssertion{ { q: "select st_aswkt(p) from (select * from point_tbl) t where st_intersects(p, point(0,0))", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)"}, }, }, @@ -144,14 +144,14 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ tests: []SpatialIndexPlanTestAssertion{ { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, point(0,0)) order by g", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)"}, {"LINESTRING(-1 -1,1 1)"}, }, }, { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, linestring(point(-1,1), point(1,-1))) order by g", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)"}, {"LINESTRING(-1 -1,1 1)"}, {"POLYGON((2 2,2 -2,-2 -2,-2 2,2 2),(1 1,1 -1,-1 -1,-1 1,1 1))"}, @@ -197,13 +197,13 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ tests: []SpatialIndexPlanTestAssertion{ { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, point(0,0)) order by g", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)"}, }, }, { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, linestring(point(-1,1), point(1,-1))) order by st_x(g), st_y(g)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(-1 1)"}, {"POINT(0 0)"}, {"POINT(1 -1)"}, @@ -211,7 +211,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ }, { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, st_geomfromtext('polygon((1 1,1 -1,-1 -1,-1 1,1 1))')) order by st_x(g), st_y(g)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(-1 -1)"}, {"POINT(-1 0)"}, {"POINT(-1 1)"}, @@ -225,7 +225,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ }, { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, st_geomfromtext('linestring(-2 -2,2 2)')) order by st_x(g), st_y(g)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(-2 -2)"}, {"POINT(-1 -1)"}, {"POINT(0 0)"}, @@ -235,7 +235,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ }, { q: "select st_aswkt(g) from geom_tbl where st_intersects(g, st_geomfromtext('multipoint(-2 -2,0 0,2 2)')) order by st_x(g), st_y(g)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(-2 -2)"}, {"POINT(0 0)"}, {"POINT(2 2)"}, @@ -244,7 +244,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ { noIdx: true, q: "select st_aswkt(g) from geom_tbl where not st_intersects(g, st_geomfromtext('multipoint(0 0)')) order by st_x(g), st_y(g)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(-2 -2)"}, {"POINT(-2 -1)"}, {"POINT(-2 0)"}, @@ -283,7 +283,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ { noIdx: true, q: "select st_aswkt(p) from point_tbl where not st_intersects(p, point(0,0)) order by p", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(2 2)"}, {"POINT(1 1)"}, }, @@ -301,7 +301,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ tests: []SpatialIndexPlanTestAssertion{ { q: "select st_aswkt(t1.g), st_aswkt(t2.g) from t1 join t2 where st_intersects(t1.g, point(0,0))", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)", "POINT(0 0)"}, {"POINT(0 0)", "POINT(1 1)"}, }, @@ -309,7 +309,7 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ { noIdx: true, // TODO: this should be able to take advantage of indexes q: "select st_aswkt(t1.g), st_aswkt(t2.g) from t1 join t2 where st_intersects(t1.g, t2.g)", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {"POINT(0 0)", "POINT(0 0)"}, {"POINT(1 1)", "POINT(1 1)"}, }, @@ -327,25 +327,25 @@ var SpatialIndexTests = []SpatialIndexPlanTest{ tests: []SpatialIndexPlanTestAssertion{ { q: "select p from point_tbl where st_within(p, point(0,0))", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {types.Point{X: 0, Y: 0}}, }, }, { noIdx: true, q: "select p from point_tbl where st_within(p, null)", - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, { q: "select i, p from point_pk_tbl where st_within(p, point(0,0))", - exp: []sql.Row{ + exp: []sql.UntypedSqlRow{ {0, types.Point{X: 0, Y: 0}}, }, }, { noIdx: true, q: "select i, p from point_pk_tbl where st_within(p, null)", - exp: []sql.Row{}, + exp: []sql.UntypedSqlRow{}, }, }, }, @@ -411,7 +411,7 @@ func evalSpatialIndexPlanTest(t *testing.T, harness Harness, e QueryEngine, quer }) } -func evalSpatialIndexPlanCorrectness(t *testing.T, harness Harness, e QueryEngine, name, q string, exp []sql.Row, skip bool) { +func evalSpatialIndexPlanCorrectness(t *testing.T, harness Harness, e QueryEngine, name, q string, exp []sql.UntypedSqlRow, skip bool) { t.Run(name, func(t *testing.T) { if skip { t.Skip() @@ -427,7 +427,7 @@ func evalSpatialIndexPlanCorrectness(t *testing.T, harness Harness, e QueryEngin require.NoError(t, err, "Unexpected error for q %s: %s", q, err) if exp != nil { - CheckResults(t, harness, exp, nil, sch, rows, q, e) + CheckResults(t, harness, exp, nil, sch, sql.RowsToUntyped(rows), q, e) } require.Equal(t, 0, ctx.Memory.NumCaches()) diff --git a/enginetest/sqllogictest/harness/memory_harness.go b/enginetest/sqllogictest/harness/memory_harness.go index 0522332453..5327740042 100644 --- a/enginetest/sqllogictest/harness/memory_harness.go +++ b/enginetest/sqllogictest/harness/memory_harness.go @@ -118,7 +118,7 @@ func rowsToResultStrings(ctx *sql.Context, iter sql.RowIter) ([]string, error) { enginetest.DrainIteratorIgnoreErrors(ctx, iter) return nil, err } else { - for _, col := range row { + for _, col := range row.Values() { results = append(results, toSqlString(col)) } } diff --git a/go.sum b/go.sum index 7d2426c291..d97e028358 100644 --- a/go.sum +++ b/go.sum @@ -58,10 +58,6 @@ github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 h1:bMGS25NWAGTE github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71/go.mod h1:2/2zjLQ/JOOSbbSboojeg+cAwcRV0fDLzIiWch/lhqI= github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 h1:7/v8q9XGFa6q5Ap4Z/OhNkAMBaK5YeuEzwJt+NZdhiE= github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY= -github.com/dolthub/vitess v0.0.0-20241119005402-6a198321d993 h1:MhD6jHjshx2djyUq/uZxtCyHBYAnE3WshhJDUaO9fD8= -github.com/dolthub/vitess v0.0.0-20241119005402-6a198321d993/go.mod h1:uBvlRluuL+SbEWTCZ68o0xvsdYZER3CEG/35INdzfJM= -github.com/dolthub/vitess v0.0.0-20241120000209-5ff664bddfc4 h1:C3RSQjvv2T5TdQzRYpLLIbFxfyznzZi25XpOqdu89ng= -github.com/dolthub/vitess v0.0.0-20241120000209-5ff664bddfc4/go.mod h1:uBvlRluuL+SbEWTCZ68o0xvsdYZER3CEG/35INdzfJM= github.com/dolthub/vitess v0.0.0-20241121221517-3e7b5ffc22b0 h1:C8X4RkkWKcrJG6rG+MsdFINX2PhB7ObpbBvFcWsI8K8= github.com/dolthub/vitess v0.0.0-20241121221517-3e7b5ffc22b0/go.mod h1:alcJgfdyIhFaAiYyEmuDCFSLCzedz3KCaIclLoCUtJg= github.com/dolthub/vitess v0.0.0-20241125233820-b4036b797518 h1:aXx3d3vpAg9/E7oB2AsadnRbBkwQn6Kza7l8JrBjHLE= diff --git a/memory/dual_table.go b/memory/dual_table.go index 3413e26e04..15a85b8fa3 100755 --- a/memory/dual_table.go +++ b/memory/dual_table.go @@ -32,7 +32,7 @@ func NewDualTable() *Table { tbl.ignoreSessionData = true part := []byte{0} tbl.data.partitions = map[string][]sql.Row{ - string(part): {{"x"}}, + string(part): {sql.UntypedSqlRow{"x"}}, } tbl.data.partitionKeys = [][]byte{part} diff --git a/memory/external_stored_procedures.go b/memory/external_stored_procedures.go index c1c9d8050c..63c8635985 100644 --- a/memory/external_stored_procedures.go +++ b/memory/external_stored_procedures.go @@ -145,13 +145,13 @@ func inout_set_unitialized(_ *sql.Context, a *int, b *uint, c *string, d *int) ( } func overloaded_mult1(_ *sql.Context, a int8) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{int64(a)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{int64(a)}), nil } func overloaded_mult2(_ *sql.Context, a int16, b int32) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{int64(a) * int64(b)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{int64(a) * int64(b)}), nil } func overloaded_mult3(_ *sql.Context, a int8, b int32, c int64) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{int64(a) * int64(b) * c}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{int64(a) * int64(b) * c}), nil } func overloaded_type_test1( @@ -159,7 +159,7 @@ func overloaded_type_test1( aa int8, ab int16, ac int, ad int32, ae int64, af float32, ag float64, ba *int8, bb *int16, bc *int, bd *int32, be *int64, bf *float32, bg *float64, ) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ int64(aa) + int64(ab) + int64(ac) + int64(ad) + int64(ae) + int64(af) + int64(ag) + int64(*ba) + int64(*bb) + int64(*bc) + int64(*bd) + int64(*be) + int64(*bf) + int64(*bg), }), nil @@ -169,7 +169,7 @@ func overloaded_type_test2( aa bool, ab string, ac []byte, ad time.Time, ae decimal.Decimal, ba *bool, bb *string, bc *[]byte, bd *time.Time, be *decimal.Decimal, ) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ fmt.Sprintf(`aa:%v,ba:%v,ab:"%s",bb:"%s",ac:%v,bc:%v,ad:%s,bd:%s,ae:%s,be:%s`, aa, *ba, ab, *bb, ac, *bc, ad.Format("2006-01-02"), (*bd).Format("2006-01-02"), ae.String(), (*be).String()), }), nil @@ -180,7 +180,7 @@ func type_test3( aa uint8, ab uint16, ac uint, ad uint32, ae uint64, af float32, ag float64, ba *uint8, bb *uint16, bc *uint, bd *uint32, be *uint64, bf *float32, bg *float64, ) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ uint64(aa) + uint64(ab) + uint64(ac) + uint64(ad) + uint64(ae) + uint64(af) + uint64(ag) + uint64(*ba) + uint64(*bb) + uint64(*bc) + uint64(*bd) + uint64(*be) + uint64(*bf) + uint64(*bg), }), nil @@ -207,7 +207,7 @@ func variadic_add(_ *sql.Context, vals ...int) (sql.RowIter, error) { for _, val := range vals { sum += int64(val) } - return sql.RowsToRowIter(sql.Row{sum}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{sum}), nil } func variadic_byte_slice(_ *sql.Context, vals ...[]byte) (sql.RowIter, error) { @@ -215,13 +215,13 @@ func variadic_byte_slice(_ *sql.Context, vals ...[]byte) (sql.RowIter, error) { for _, val := range vals { sb.Write(val) } - return sql.RowsToRowIter(sql.Row{sb.String()}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{sb.String()}), nil } func variadic_overload1(_ *sql.Context, a string, b string) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{fmt.Sprintf("%s-%s", a, b)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{fmt.Sprintf("%s-%s", a, b)}), nil } func variadic_overload2(_ *sql.Context, a string, b string, vals ...uint8) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{fmt.Sprintf("%s,%s,%v", a, b, vals)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{fmt.Sprintf("%s,%s,%v", a, b, vals)}), nil } diff --git a/memory/index.go b/memory/index.go index 5955b52437..b67b39a657 100644 --- a/memory/index.go +++ b/memory/index.go @@ -20,7 +20,6 @@ import ( "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/expression" - "github.com/dolthub/go-mysql-server/sql/expression/function/vector" "github.com/dolthub/go-mysql-server/sql/fulltext" "github.com/dolthub/go-mysql-server/sql/types" ) @@ -39,7 +38,7 @@ type Index struct { Fulltext bool // If SupportedVectorFunction is non-nil, this index can be used to optimize ORDER BY // expressions on this type of distance function. - SupportedVectorFunction vector.DistanceType + SupportedVectorFunction expression.DistanceType CommentStr string PrefixLens []uint16 fulltextInfo @@ -122,15 +121,11 @@ func (idx *Index) IsFullText() bool { return idx.Fulltext } -func (idx *Index) IsVector() bool { - return idx.SupportedVectorFunction != nil -} - func (idx *Index) CanSupportOrderBy(expr sql.Expression) bool { if idx.SupportedVectorFunction == nil { return false } - dist, isDist := expr.(*vector.Distance) + dist, isDist := expr.(*expression.Distance) return isDist && idx.SupportedVectorFunction.CanEval(dist.DistanceType) } @@ -155,19 +150,21 @@ func (idx *Index) rowToIndexStorage(row sql.Row, partitionName string, rowIdx in } exprs := idx.ExtendedExprs() - newRow := make(sql.Row, len(exprs)+1) + newRow := sql.NewSqlRowWithLen(len(exprs) + 1) + var v interface{} for i, expr := range exprs { var err error - newRow[i], err = expr.Eval(nil, row) + v, err = expr.Eval(nil, row) if err != nil { return nil, err } + newRow.SetValue(i, v) } // The final element of the row is the location of the row in the primary table storage slice. - newRow[len(exprs)] = primaryRowLocation{ + newRow.SetValue(len(exprs), primaryRowLocation{ partition: partitionName, idx: rowIdx, - } + }) return newRow, nil } diff --git a/memory/sequence_table.go b/memory/sequence_table.go index e92fa77008..6efabf0f98 100644 --- a/memory/sequence_table.go +++ b/memory/sequence_table.go @@ -146,7 +146,7 @@ func (i *SequenceTableFnRowIter) Next(_ *sql.Context) (sql.Row, error) { if i.i >= i.n { return nil, io.EOF } - ret := sql.Row{i.i} + ret := sql.UntypedSqlRow{i.i} i.i++ return ret, nil } diff --git a/memory/stats.go b/memory/stats.go index 1849916c52..97a1cca4a4 100644 --- a/memory/stats.go +++ b/memory/stats.go @@ -113,22 +113,22 @@ func (s *StatsProv) estimateStats(ctx *sql.Context, table sql.Table, keys map[st sch := table.Schema() for key, ordinals := range keys { - keyVals := make([]sql.Row, len(sample)) + keyVals := make([]sql.UntypedSqlRow, len(sample)) for i, row := range sample { for _, ord := range ordinals { - keyVals[i] = append(keyVals[i], row[ord]) + keyVals[i] = keyVals[i].Append(sql.NewUntypedRow(row.GetValue(ord))).(sql.UntypedSqlRow) } } sort.Slice(keyVals, func(i, j int) bool { k := 0 - for k < len(ordinals) && keyVals[i][k] == keyVals[j][k] { + for k < len(ordinals) && keyVals[i].GetValue(k) == keyVals[j].GetValue(k) { k++ } if k == len(ordinals) { return true } col := sch[ordinals[k]] - cmp, _ := col.Type.Compare(keyVals[i][k], keyVals[j][k]) + cmp, _ := col.Type.Compare(keyVals[i].GetValue(k), keyVals[j].GetValue(k)) return cmp <= 0 }) @@ -141,9 +141,9 @@ func (s *StatsProv) estimateStats(ctx *sql.Context, table sql.Table, keys map[st perBucket := int(rowCount) / bucketCnt buckets := make([]sql.HistogramBucket, bucketCnt) for i := range buckets { - var upperBound []interface{} - for _, v := range keyVals[i*offset] { - upperBound = append(upperBound, v) + upperBound := sql.NewSqlRowWithLen(keyVals[i*offset].Len()) + for j, v := range keyVals[i*offset].Values() { + upperBound.SetValue(j, v) } buckets[i] = stats.NewHistogramBucket(uint64(perBucket), uint64(perBucket), 0, 1, upperBound, nil, nil) } diff --git a/memory/table.go b/memory/table.go index 79bb6d33e1..9ba1da48d2 100644 --- a/memory/table.go +++ b/memory/table.go @@ -29,7 +29,6 @@ import ( "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/analyzer/analyzererrors" "github.com/dolthub/go-mysql-server/sql/expression" - "github.com/dolthub/go-mysql-server/sql/expression/function/vector" "github.com/dolthub/go-mysql-server/sql/fulltext" "github.com/dolthub/go-mysql-server/sql/iters" "github.com/dolthub/go-mysql-server/sql/transform" @@ -471,10 +470,10 @@ func (i *indexScanRowIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, io.EOF } - var row sql.Row + var row sql.Row = sql.UntypedSqlRow{} for ; i.i < len(i.indexRows) && i.i >= 0; i.incrementFunc() { idxRow := i.indexRows[i.i] - rowLoc := idxRow[len(idxRow)-1].(primaryRowLocation) + rowLoc := idxRow.GetValue(idxRow.Len() - 1).(primaryRowLocation) // this is a bit of a hack: during self-referential foreign key delete cascades, the index storage rows don't get // updated at the same time the primary table storage does, since we update the slices directly in the case of // the primary index but update the map entries for the secondary index storage. @@ -485,7 +484,7 @@ func (i *indexScanRowIter) Next(ctx *sql.Context) (sql.Row, error) { candidate := i.primaryRows[rowLoc.partition][rowLoc.idx] - matches, err := indexRowMatches(i.ranges, idxRow[:len(idxRow)-1]) + matches, err := indexRowMatches(i.ranges, idxRow.Subslice(0, idxRow.Len()-1)) if err != nil { return nil, err } @@ -497,7 +496,7 @@ func (i *indexScanRowIter) Next(ctx *sql.Context) (sql.Row, error) { } } - if row == nil { + if row == nil || row.Len() == 0 { return nil, io.EOF } @@ -711,9 +710,9 @@ func (i *tableIter) Next(ctx *sql.Context) (sql.Row, error) { func projectRow(columns []int, row sql.Row) sql.Row { if columns != nil { - resultRow := make(sql.Row, len(columns)) + resultRow := sql.NewSqlRowWithLen(len(columns)) for i, j := range columns { - resultRow[i] = row[j] + resultRow.SetValue(i, row.GetValue(j)) } return resultRow } @@ -726,18 +725,18 @@ func normalizeRowForRead(row sql.Row, numColumns int, virtualCols []int) sql.Row return row } - var virtualRow sql.Row + var virtualRow sql.Row = sql.UntypedSqlRow{} // Columns are the indexes of projected columns, which we don't always have. In either case, we are filling the row // with nil values for virtual columns. The simple iteration below only works when the column and virtual column // indexes are in ascending order, which is true for the time being. var j int - virtualRow = make(sql.Row, numColumns) + virtualRow = sql.NewSqlRowWithLen(numColumns) for i := 0; i < numColumns; i++ { if j < len(virtualCols) && i == virtualCols[j] { j++ } else { - virtualRow[i] = row[i-j] + virtualRow.SetValue(i, row.GetValue(i-j)) } } @@ -773,10 +772,10 @@ func projectOnRow(columns []int, row sql.Row) sql.Row { projected := make([]interface{}, len(columns)) for i, selected := range columns { - projected[i] = row[selected] + projected[i] = row.GetValue(selected) } - return projected + return sql.NewUntypedRow(projected...) } func (i *tableIter) getFromIndex(ctx *sql.Context) (sql.Row, error) { @@ -817,7 +816,7 @@ func (i *spatialTableIter) Next(ctx *sql.Context) (sql.Row, error) { // if the range [i.minX, i.maxX] and [gMinX, gMaxX] overlap and // if the range [i.minY, i.maxY] and [gMinY, gMaxY] overlap // then, the bounding boxes intersect - g, ok := row[i.ord].(types.GeometryValue) + g, ok := row.GetValue(i.ord).(types.GeometryValue) if !ok { return nil, fmt.Errorf("spatial index over non-geometry column") } @@ -834,9 +833,9 @@ func (i *spatialTableIter) Next(ctx *sql.Context) (sql.Row, error) { return i.Next(ctx) } - resultRow := make(sql.Row, len(i.columns)) + resultRow := sql.NewSqlRowWithLen(len(i.columns)) for i, j := range i.columns { - resultRow[i] = row[j] + resultRow.SetValue(i, row.GetValue(j)) } return resultRow, nil } @@ -1234,18 +1233,18 @@ func addColumnToSchema(ctx *sql.Context, data *TableData, newCol *sql.Column, or if newColIdx < len(data.schema.Schema) { for _, p := range data.partitions { for _, row := range p { - if row[newColIdx] == nil { + if row.GetValue(newColIdx) == nil { continue } - cmp, err := newCol.Type.Compare(row[newColIdx], data.autoIncVal) + cmp, err := newCol.Type.Compare(row.GetValue(newColIdx), data.autoIncVal) if err != nil { panic(err) } if cmp > 0 { var val interface{} - val, _, err = types.Uint64.Convert(row[newColIdx]) + val, _, err = types.Uint64.Convert(row.GetValue(newColIdx)) if err != nil { panic(err) } @@ -1326,10 +1325,7 @@ func (t *Table) DropColumn(ctx *sql.Context, columnName string) error { for k, p := range data.partitions { newP := make([]sql.Row, len(p)) for i, row := range p { - var newRow sql.Row - newRow = append(newRow, row[:droppedCol]...) - newRow = append(newRow, row[droppedCol+1:]...) - newP[i] = newRow + newP[i] = row.Subslice(0, droppedCol).Append(row.Subslice(droppedCol+1, row.Len())) } data.partitions[k] = newP } @@ -1410,10 +1406,10 @@ func (t *Table) ModifyColumn(ctx *sql.Context, columnName string, column *sql.Co for k, p := range data.partitions { newP := make([]sql.Row, len(p)) for i, row := range p { - var oldRowWithoutVal sql.Row - oldRowWithoutVal = append(oldRowWithoutVal, row[:oldIdx]...) - oldRowWithoutVal = append(oldRowWithoutVal, row[oldIdx+1:]...) - newVal, inRange, err := column.Type.Convert(row[oldIdx]) + var oldRowWithoutVal sql.Row = sql.UntypedSqlRow{} + oldRowWithoutVal = oldRowWithoutVal.Append(row.Subslice(0, oldIdx)) + oldRowWithoutVal = oldRowWithoutVal.Append(row.Subslice(oldIdx+1, row.Len())) + newVal, inRange, err := column.Type.Convert(row.GetValue(oldIdx)) if err != nil { if sql.ErrNotMatchingSRID.Is(err) { err = sql.ErrNotMatchingSRIDWithColName.New(columnName, err) @@ -1421,12 +1417,12 @@ func (t *Table) ModifyColumn(ctx *sql.Context, columnName string, column *sql.Co return err } if !inRange { - return sql.ErrValueOutOfRange.New(row[oldIdx], column.Type) + return sql.ErrValueOutOfRange.New(row.GetValue(oldIdx), column.Type) } - var newRow sql.Row - newRow = append(newRow, oldRowWithoutVal[:newIdx]...) - newRow = append(newRow, newVal) - newRow = append(newRow, oldRowWithoutVal[newIdx:]...) + var newRow sql.Row = sql.UntypedSqlRow{} + newRow = newRow.Append(oldRowWithoutVal.Subslice(0, newIdx)) + newRow = newRow.Append(sql.NewUntypedRow(newVal)) + newRow = newRow.Append(oldRowWithoutVal.Subslice(newIdx, oldRowWithoutVal.Len())) newP[i] = newRow } data.partitions[k] = newP @@ -1598,6 +1594,7 @@ func (t *IndexedTable) LookupPartitions(ctx *sql.Context, lookup sql.IndexLookup if lookup.VectorOrderAndLimit.OrderBy != nil { return &vectorPartitionIter{ + Column: lookup.Index.(*Index).Exprs[0], OrderAndLimit: lookup.VectorOrderAndLimit, }, nil } @@ -2011,11 +2008,6 @@ func (t *Table) createIndex(data *TableData, name string, columns []sql.IndexCol } } - var vectorFunction vector.DistanceType - if constraint == sql.IndexConstraint_Vector { - vectorFunction = vector.DistanceL2Squared{} - } - return &Index{ DB: t.dbName(), DriverName: "", @@ -2026,7 +2018,7 @@ func (t *Table) createIndex(data *TableData, name string, columns []sql.IndexCol Unique: constraint == sql.IndexConstraint_Unique, Spatial: constraint == sql.IndexConstraint_Spatial, Fulltext: constraint == sql.IndexConstraint_Fulltext, - SupportedVectorFunction: vectorFunction, + SupportedVectorFunction: nil, CommentStr: comment, PrefixLens: prefixLengths, }, nil @@ -2126,7 +2118,7 @@ func (t *Table) CreateFulltextIndex(ctx *sql.Context, indexDef sql.IndexDef, key return nil } -func (t *Table) CreateVectorIndex(ctx *sql.Context, idx sql.IndexDef, distanceType vector.DistanceType) error { +func (t *Table) CreateVectorIndex(ctx *sql.Context, idx sql.IndexDef, distanceType expression.DistanceType) error { if len(idx.Columns) > 1 { return fmt.Errorf("vector indexes must have exactly one column") } @@ -2238,7 +2230,7 @@ func (ps partitionssort) Less(i, j int) bool { func (ps partitionssort) pkLess(l, r sql.Row) bool { for _, f := range ps.pk { - r, err := f.c.Type.Compare(l[f.i], r[f.i]) + r, err := f.c.Type.Compare(l.GetValue(f.i), r.GetValue(f.i)) if err != nil { panic(err) } @@ -2259,17 +2251,17 @@ func (ps partitionssort) Swap(i, j int) { // sorted slices for rows and indexes, some sort of sorted collection. for _, indexRows := range ps.indexes { for _, idxRow := range indexRows { - rowLoc := idxRow[len(idxRow)-1].(primaryRowLocation) + rowLoc := idxRow.GetValue(idxRow.Len() - 1).(primaryRowLocation) if rowLoc.partition == lidx.partitionName && rowLoc.idx == lidx.rowIdx { - idxRow[len(idxRow)-1] = primaryRowLocation{ + idxRow.SetValue(idxRow.Len()-1, primaryRowLocation{ partition: ridx.partitionName, idx: ridx.rowIdx, - } + }) } else if rowLoc.partition == ridx.partitionName && rowLoc.idx == ridx.rowIdx { - idxRow[len(idxRow)-1] = primaryRowLocation{ + idxRow.SetValue(idxRow.Len()-1, primaryRowLocation{ partition: lidx.partitionName, idx: lidx.rowIdx, - } + }) } } } @@ -2487,7 +2479,7 @@ func removeDroppedColumns(schema sql.PrimaryKeySchema, idx *Index) []sql.Express func hasNullForAnyCols(row sql.Row, cols []int) bool { for _, idx := range cols { - if row[idx] == nil { + if row.GetValue(idx) == nil { return true } } diff --git a/memory/table_data.go b/memory/table_data.go index f718097a41..124a007ff9 100755 --- a/memory/table_data.go +++ b/memory/table_data.go @@ -129,7 +129,7 @@ func (td TableData) partition(row sql.Row) (int, error) { hash := xxhash.New() var err error for i := range keyColumns { - v := row[keyColumns[i]] + v := row.GetValue(keyColumns[i]) if i > 0 { // separate each column with a null byte if _, err = hash.Write([]byte{0}); err != nil { @@ -251,17 +251,17 @@ func (td *TableData) toStorageRow(row sql.Row) sql.Row { return row } - storageRow := make(sql.Row, len(td.schema.Schema)) + storageRow := sql.NewSqlRowWithLen(len(td.schema.Schema)) storageRowIdx := 0 for i, col := range td.schema.Schema { if col.Virtual { continue } - storageRow[storageRowIdx] = row[i] + storageRow.SetValue(storageRowIdx, row.GetValue(i)) storageRowIdx++ } - return storageRow[:storageRowIdx] + return storageRow.Subslice(0, storageRowIdx) } func (td *TableData) numRows(ctx *sql.Context) (uint64, error) { @@ -310,7 +310,7 @@ func (td *TableData) errIfDuplicateEntryExist(cols []string, idxName string) err } func hasNulls(row sql.Row) bool { - for _, v := range row { + for _, v := range row.Values() { if v == nil { return true } @@ -405,8 +405,8 @@ func (td *TableData) sortSecondaryIndexes() { } sort.Slice(idxStorage, func(i, j int) bool { for t, typ := range types { - left := idxStorage[i][t] - right := idxStorage[j][t] + left := idxStorage[i].GetValue(t) + right := idxStorage[j].GetValue(t) // Compare doesn't handle nil values, so we need to handle that case. Nils sort before other values if left == nil { @@ -446,18 +446,18 @@ func insertValueInRows(ctx *sql.Context, data *TableData, colIdx int, colDefault for k, p := range data.partitions { newP := make([]sql.Row, len(p)) for i, row := range p { - var newRow sql.Row - newRow = append(newRow, row[:colIdx]...) - newRow = append(newRow, nil) - newRow = append(newRow, row[colIdx:]...) - var err error + var newRow sql.Row = sql.UntypedSqlRow{} + newRow = newRow.Append(row.Subslice(0, colIdx)) + newRow = newRow.Append(sql.NewUntypedRow(nil)) + newRow = newRow.Append(row.Subslice(colIdx, row.Len())) if !data.schema.Schema[colIdx].Nullable && colDefault == nil { - newRow[colIdx] = data.schema.Schema[colIdx].Type.Zero() + newRow.SetValue(colIdx, data.schema.Schema[colIdx].Type.Zero()) } else { - newRow[colIdx], err = colDefault.Eval(ctx, newRow) + v, err := colDefault.Eval(ctx, newRow) if err != nil { return err } + newRow.SetValue(colIdx, v) } newP[i] = newRow } diff --git a/memory/table_editor.go b/memory/table_editor.go index 2817555c34..a7e20c52d7 100644 --- a/memory/table_editor.go +++ b/memory/table_editor.go @@ -181,13 +181,13 @@ func (t *tableEditor) Insert(ctx *sql.Context, row sql.Row) error { idx := t.ea.TableData().autoColIdx if idx >= 0 { autoCol := t.ea.TableData().schema.Schema[idx] - cmp, err := autoCol.Type.Compare(row[idx], t.ea.TableData().autoIncVal) + cmp, err := autoCol.Type.Compare(row.GetValue(idx), t.ea.TableData().autoIncVal) if err != nil { return err } if cmp > 0 { // Provided value larger than autoIncVal, set autoIncVal to that value - v, _, err := types.Uint64.Convert(row[idx]) + v, _, err := types.Uint64.Convert(row.GetValue(idx)) if err != nil { return err } @@ -240,7 +240,7 @@ func (t *tableEditor) Update(ctx *sql.Context, oldRow sql.Row, newRow sql.Row) e pkColIdxes := t.pkColumnIndexes() vals := make([]interface{}, len(pkColIdxes)) for i := range pkColIdxes { - vals[i] = newRow[pkColIdxes[i]] + vals[i] = newRow.GetValue(pkColIdxes[i]) } return sql.NewUniqueKeyErr(fmt.Sprint(vals), true, partitionRow) } @@ -325,8 +325,8 @@ func columnsMatch(colIndexes []int, prefixLengths []uint16, row sql.Row, row2 sq if schema[idx].Virtual { return false } - v1 := row[idx] - v2 := row2[idx] + v1 := row.GetValue(idx) + v2 := row2.GetValue(idx) if len(prefixLengths) > i && prefixLengths[i] > 0 { prefixLength := prefixLengths[i] switch v := v1.(type) { @@ -524,7 +524,7 @@ func (pke *pkTableEditAccumulator) pkColumnIndexes() []int { func (pke *pkTableEditAccumulator) getRowKey(r sql.Row) string { var rowKey strings.Builder for _, i := range pke.tableData.schema.PkOrdinals { - rowKey.WriteString(fmt.Sprintf("%v", r[i])) + rowKey.WriteString(fmt.Sprintf("%v", r.GetValue(i))) } return rowKey.String() } @@ -587,12 +587,12 @@ func deleteRowFromIndexes(table *TableData, partKey string, rowIdx int) { // through the loop for i := len(idxStorage) - 1; i >= 0; i-- { idxRow := idxStorage[i] - rowLoc := idxRow[len(idxRow)-1].(primaryRowLocation) + rowLoc := idxRow.GetValue(idxRow.Len() - 1).(primaryRowLocation) if rowLoc.partition == partKey && rowLoc.idx == rowIdx { idxStorage = append(idxStorage[:i], idxStorage[i+1:]...) } else if rowLoc.partition == partKey && rowLoc.idx > rowIdx { // For rows after the one we deleted, offset the row index by -1 - idxRow[len(idxRow)-1] = primaryRowLocation{rowLoc.partition, rowLoc.idx - 1} + idxRow.SetValue(idxRow.Len()-1, primaryRowLocation{rowLoc.partition, rowLoc.idx - 1}) } } table.secondaryIndexStorage[indexName(memIdx.ID())] = idxStorage @@ -686,7 +686,7 @@ func (k *keylessTableEditAccumulator) Insert(value sql.Row) error { } } - k.adds = append(k.adds, value) + k.adds = append(k.adds, value.Copy()) return nil } @@ -705,7 +705,7 @@ func (k *keylessTableEditAccumulator) Delete(value sql.Row) error { } - k.deletes = append(k.deletes, value) + k.deletes = append(k.deletes, value.Copy()) return nil } @@ -840,14 +840,14 @@ func formatRow(r sql.Row, idxs []int) string { if seenOne { _, _ = fmt.Fprintf(b, ",") } - _, _ = fmt.Fprintf(b, "%v", r[idx]) + _, _ = fmt.Fprintf(b, "%v", r.GetValue(idx)) } b.WriteString("]") return b.String() } func checkRow(schema sql.Schema, row sql.Row) error { - for i, value := range row { + for i, value := range row.Values() { c := schema[i] if !c.Check(value) { return sql.ErrInvalidType.New(value) @@ -858,10 +858,10 @@ func checkRow(schema sql.Schema, row sql.Row) error { } func verifyRowTypes(row sql.Row, schema sql.Schema) error { - if len(row) == len(schema) { + if row.Len() == len(schema) { for i := range schema { col := schema[i] - rowVal := row[i] + rowVal := row.GetValue(i) valType := reflect.TypeOf(rowVal) expectedType := col.Type.ValueType() if valType != expectedType && rowVal != nil && !valType.AssignableTo(expectedType) { diff --git a/memory/table_function.go b/memory/table_function.go index 060e22508c..8fa7463101 100644 --- a/memory/table_function.go +++ b/memory/table_function.go @@ -136,7 +136,7 @@ func (i *TableFunctionRowIter) Next(_ *sql.Context) (sql.Row, error) { if i.done { return nil, io.EOF } - ret := sql.Row{i.val} + ret := sql.UntypedSqlRow{i.val} i.done = true return ret, nil } diff --git a/memory/table_test.go b/memory/table_test.go index 98f5972683..5936a0cf0c 100644 --- a/memory/table_test.go +++ b/memory/table_test.go @@ -116,22 +116,22 @@ var tests = []struct { name string schema sql.PrimaryKeySchema numPartitions int - rows []sql.Row + rows []sql.UntypedSqlRow filters []sql.Expression - expectedFiltered []sql.Row + expectedFiltered []sql.UntypedSqlRow columns []string - expectedProjected []sql.Row + expectedProjected []sql.UntypedSqlRow - expectedFiltersAndProjections []sql.Row + expectedFiltersAndProjections []sql.UntypedSqlRow indexColumns []string expectedKeyValues []*indexKeyValue lookup *dummyLookup partition *memory.Partition - expectedIndexed []sql.Row + expectedIndexed []sql.UntypedSqlRow }{ { name: "test", @@ -141,13 +141,13 @@ var tests = []struct { &sql.Column{Name: "col3", Source: "test", Type: types.Int64, Nullable: false, Default: planbuilder.MustStringToColumnDefaultValue(sql.NewEmptyContext(), "0", types.Int64, false)}, }), numPartitions: 2, - rows: []sql.Row{ - sql.NewRow("a", int32(10), int64(100)), - sql.NewRow("b", int32(10), int64(100)), - sql.NewRow("c", int32(20), int64(100)), - sql.NewRow("d", int32(20), int64(200)), - sql.NewRow("e", int32(10), int64(200)), - sql.NewRow("f", int32(20), int64(200)), + rows: []sql.UntypedSqlRow{ + {"a", int32(10), int64(100)}, + {"b", int32(10), int64(100)}, + {"c", int32(20), int64(100)}, + {"d", int32(20), int64(200)}, + {"e", int32(10), int64(200)}, + {"f", int32(20), int64(200)}, }, filters: []sql.Expression{ expression.NewEquals( @@ -155,33 +155,33 @@ var tests = []struct { expression.NewLiteral(int32(10), types.Int32), ), }, - expectedFiltered: []sql.Row{ - sql.NewRow("a", int32(10), int64(100)), - sql.NewRow("b", int32(10), int64(100)), - sql.NewRow("e", int32(10), int64(200)), + expectedFiltered: []sql.UntypedSqlRow{ + {"a", int32(10), int64(100)}, + {"b", int32(10), int64(100)}, + {"e", int32(10), int64(200)}, }, columns: []string{"col1", "col3"}, - expectedProjected: []sql.Row{ - sql.NewRow("a", int64(100)), - sql.NewRow("b", int64(100)), - sql.NewRow("c", int64(100)), - sql.NewRow("d", int64(200)), - sql.NewRow("e", int64(200)), - sql.NewRow("f", int64(200)), + expectedProjected: []sql.UntypedSqlRow{ + {"a", int64(100)}, + {"b", int64(100)}, + {"c", int64(100)}, + {"d", int64(200)}, + {"e", int64(200)}, + {"f", int64(200)}, }, - expectedFiltersAndProjections: []sql.Row{ - sql.NewRow("a", int64(100)), - sql.NewRow("b", int64(100)), - sql.NewRow("e", int64(200)), + expectedFiltersAndProjections: []sql.UntypedSqlRow{ + {"a", int64(100)}, + {"b", int64(100)}, + {"e", int64(200)}, }, indexColumns: []string{"col1", "col3"}, expectedKeyValues: []*indexKeyValue{ - {sql.NewRow("a", int64(100)), &memory.IndexValue{Key: "0", Pos: 0}}, - {sql.NewRow("c", int64(100)), &memory.IndexValue{Key: "0", Pos: 1}}, - {sql.NewRow("e", int64(200)), &memory.IndexValue{Key: "0", Pos: 2}}, - {sql.NewRow("b", int64(100)), &memory.IndexValue{Key: "1", Pos: 0}}, - {sql.NewRow("d", int64(200)), &memory.IndexValue{Key: "1", Pos: 1}}, - {sql.NewRow("f", int64(200)), &memory.IndexValue{Key: "1", Pos: 2}}, + {sql.UntypedSqlRow{"a", int64(100)}, &memory.IndexValue{Key: "0", Pos: 0}}, + {sql.UntypedSqlRow{"c", int64(100)}, &memory.IndexValue{Key: "0", Pos: 1}}, + {sql.UntypedSqlRow{"e", int64(200)}, &memory.IndexValue{Key: "0", Pos: 2}}, + {sql.UntypedSqlRow{"b", int64(100)}, &memory.IndexValue{Key: "1", Pos: 0}}, + {sql.UntypedSqlRow{"d", int64(200)}, &memory.IndexValue{Key: "1", Pos: 1}}, + {sql.UntypedSqlRow{"f", int64(200)}, &memory.IndexValue{Key: "1", Pos: 2}}, }, lookup: &dummyLookup{ values: map[string][]*memory.IndexValue{ @@ -198,7 +198,7 @@ var tests = []struct { }, }, partition: memory.NewPartition([]byte("0")), - expectedIndexed: []sql.Row{ + expectedIndexed: []sql.UntypedSqlRow{ {"a", int64(100)}, {"c", int64(100)}, {"e", int64(200)}, @@ -239,7 +239,7 @@ func TestTable(t *testing.T) { require.Len(rows, len(expected)) for i, row := range rows { - require.ElementsMatch(expected[i], row) + require.ElementsMatch(expected[i], row.Values()) } } @@ -351,12 +351,12 @@ func TestFilterAndProject(t *testing.T) { // } // } -func getAllRows(t *testing.T, ctx *sql.Context, table sql.Table) []sql.Row { +func getAllRows(t *testing.T, ctx *sql.Context, table sql.Table) []sql.UntypedSqlRow { var require = require.New(t) pIter, err := table.Partitions(ctx) require.NoError(err) - allRows := []sql.Row{} + allRows := []sql.UntypedSqlRow{} for { p, err := pIter.Next(ctx) if err != nil { @@ -373,7 +373,7 @@ func getAllRows(t *testing.T, ctx *sql.Context, table sql.Table) []sql.Row { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - allRows = append(allRows, rows...) + allRows = append(allRows, sql.RowsToUntyped(rows)...) } return allRows diff --git a/server/golden/proxy.go b/server/golden/proxy.go index 64a7a8bbda..60fa1db2d5 100644 --- a/server/golden/proxy.go +++ b/server/golden/proxy.go @@ -357,11 +357,12 @@ func fetchMySqlRows(ctx *sql.Context, results *dsql.Rows, count int) (res *sqlty row := make([]sqltypes.Value, len(fields)) for i := range row { - scanRow[i], _, err = types[i].Convert(scanRow[i]) + newV, _, err := types[i].Convert(scanRow.GetValue(i)) if err != nil { return nil, false, err } - row[i], err = types[i].SQL(ctx, nil, scanRow[i]) + scanRow.SetValue(i, newV) + row[i], err = types[i].SQL(ctx, nil, scanRow.GetValue(i)) if err != nil { return nil, false, err } @@ -428,13 +429,13 @@ func scanResultRow(results *dsql.Rows) (sql.Row, error) { return nil, err } - scanRow := make(sql.Row, len(cols)) + scanRow := make(sql.UntypedSqlRow, len(cols)) for i := range cols { - scanRow[i] = reflect.New(cols[i].ScanType()).Interface() + scanRow.SetValue(i, reflect.New(cols[i].ScanType()).Interface()) } for i, columnType := range cols { - scanRow[i] = reflect.New(columnType.ScanType()).Interface() + scanRow.SetValue(i, reflect.New(columnType.ScanType()).Interface()) } if err = results.Scan(scanRow...); err != nil { @@ -445,60 +446,60 @@ func scanResultRow(results *dsql.Rows) (sql.Row, error) { switch t := v.(type) { case dsql.RawBytes: if t == nil { - scanRow[i] = nil + scanRow.SetValue(i, nil) } else { - scanRow[i] = string(t) + scanRow.SetValue(i, string(t)) } case dsql.NullBool: if t.Valid { - scanRow[i] = t.Bool + scanRow.SetValue(i, t.Bool) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullByte: if t.Valid { - scanRow[i] = t.Byte + scanRow.SetValue(i, t.Byte) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullFloat64: if t.Valid { - scanRow[i] = t.Float64 + scanRow.SetValue(i, t.Float64) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullInt16: if t.Valid { - scanRow[i] = t.Int16 + scanRow.SetValue(i, t.Int16) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullInt32: if t.Valid { - scanRow[i] = t.Int32 + scanRow.SetValue(i, t.Int32) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullInt64: if t.Valid { - scanRow[i] = t.Int64 + scanRow.SetValue(i, t.Int64) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullString: if t.Valid { - scanRow[i] = t.String + scanRow.SetValue(i, t.String) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } case dsql.NullTime: if t.Valid { - scanRow[i] = t.Time + scanRow.SetValue(i, t.Time) } else { - scanRow[i] = nil + scanRow.SetValue(i, nil) } default: - scanRow[i] = t + scanRow.SetValue(i, t) } } return scanRow, nil diff --git a/server/handler.go b/server/handler.go index 6dc7625f4f..5e79f5e72d 100644 --- a/server/handler.go +++ b/server/handler.go @@ -497,7 +497,7 @@ func resultForOkIter(ctx *sql.Context, iter sql.RowIter) (*sqltypes.Result, erro if err := iter.Close(ctx); err != nil { return nil, err } - return resultFromOkResult(row[0].(types.OkResult)), nil + return resultFromOkResult(row.GetValue(0).(types.OkResult)), nil } // resultForEmptyIter ensures that an expected empty iterator returns no rows. @@ -665,7 +665,7 @@ func (h *Handler) resultForDefaultIter( if len(r.Rows) > 0 { panic("Got OkResult mixed with RowResult") } - r = resultFromOkResult(row[0].(types.OkResult)) + r = resultFromOkResult(row.GetValue(0).(types.OkResult)) continue } @@ -941,12 +941,12 @@ func RowToSQL(ctx *sql.Context, sch sql.Schema, row sql.Row, projs []sql.Express outVals := make([]sqltypes.Value, len(sch)) if len(projs) == 0 { for i, col := range sch { - if row[i] == nil { + if row.GetValue(i) == nil { outVals[i] = sqltypes.NULL continue } var err error - outVals[i], err = col.Type.SQL(ctx, nil, row[i]) + outVals[i], err = col.Type.SQL(ctx, nil, row.GetValue(i)) if err != nil { return nil, err } diff --git a/server/handler_test.go b/server/handler_test.go index 6aac1c4c22..9ac5449051 100644 --- a/server/handler_test.go +++ b/server/handler_test.go @@ -447,7 +447,7 @@ func TestHandlerComPrepareExecute(t *testing.T) { prepare *mysql.PrepareData execute map[string]*query.BindVariable schema []*query.Field - expected []sql.Row + expected []sql.UntypedSqlRow } for _, test := range []testcase{ @@ -466,7 +466,7 @@ func TestHandlerComPrepareExecute(t *testing.T) { schema: []*query.Field{ {Name: "c1", OrgName: "c1", Table: "test", OrgTable: "test", Database: "test", Type: query.Type_INT32, Charset: uint32(sql.CharacterSet_utf8mb4), ColumnLength: 11, Flags: uint32(query.MySqlFlag_NOT_NULL_FLAG)}, }, - expected: []sql.Row{ + expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, {3}, {4}, }, }, @@ -494,7 +494,7 @@ func TestHandlerComPrepareExecute(t *testing.T) { } err = handler.ComStmtExecute(context.Background(), dummyConn, test.prepare, callback) require.NoError(t, err) - require.Equal(t, test.expected, res) + require.Equal(t, test.expected, sql.RowsToUntyped(res)) }) } } @@ -525,7 +525,7 @@ func TestHandlerComPrepareExecuteWithPreparedDisabled(t *testing.T) { prepare *mysql.PrepareData execute map[string]*query.BindVariable schema []*query.Field - expected []sql.Row + expected []sql.UntypedSqlRow } for _, test := range []testcase{ @@ -544,7 +544,7 @@ func TestHandlerComPrepareExecuteWithPreparedDisabled(t *testing.T) { schema: []*query.Field{ {Name: "c1", OrgName: "c1", Table: "test", OrgTable: "test", Database: "test", Type: query.Type_INT32, Charset: uint32(sql.CharacterSet_utf8mb4), ColumnLength: 11, Flags: uint32(query.MySqlFlag_NOT_NULL_FLAG)}, }, - expected: []sql.Row{ + expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, {3}, {4}, }, }, @@ -572,7 +572,7 @@ func TestHandlerComPrepareExecuteWithPreparedDisabled(t *testing.T) { } err = handler.ComStmtExecute(context.Background(), dummyConn, test.prepare, callback) require.NoError(t, err) - require.Equal(t, test.expected, res) + require.Equal(t, test.expected, sql.RowsToUntyped(res)) }) } } diff --git a/sql/analyzer/biased_coster_test.go b/sql/analyzer/biased_coster_test.go index 15901a524f..d5a62aaf67 100644 --- a/sql/analyzer/biased_coster_test.go +++ b/sql/analyzer/biased_coster_test.go @@ -48,11 +48,11 @@ func TestBiasedCoster(t *testing.T) { xy.EnablePrimaryKeyIndexes() ab.EnablePrimaryKeyIndexes() - ab.Insert(ctx, sql.Row{int64(0), int64(0)}) - ab.Insert(ctx, sql.Row{int64(1), int64(1)}) - ab.Insert(ctx, sql.Row{int64(2), int64(2)}) - xy.Insert(ctx, sql.Row{int64(0), int64(0)}) - xy.Insert(ctx, sql.Row{int64(1), int64(1)}) + ab.Insert(ctx, sql.UntypedSqlRow{int64(0), int64(0)}) + ab.Insert(ctx, sql.UntypedSqlRow{int64(1), int64(1)}) + ab.Insert(ctx, sql.UntypedSqlRow{int64(2), int64(2)}) + xy.Insert(ctx, sql.UntypedSqlRow{int64(0), int64(0)}) + xy.Insert(ctx, sql.UntypedSqlRow{int64(1), int64(1)}) db.AddTable("xy", xy) db.AddTable("ab", ab) diff --git a/sql/analyzer/fix_exec_indexes.go b/sql/analyzer/fix_exec_indexes.go index 3d5c06758d..efdba23644 100644 --- a/sql/analyzer/fix_exec_indexes.go +++ b/sql/analyzer/fix_exec_indexes.go @@ -170,7 +170,7 @@ func (s *idxScope) addSchema(sch sql.Schema) { if c.Source == "" { s.columns = append(s.columns, c.Name) } else { - s.columns = append(s.columns, c.Source+"."+c.Name) + s.columns = append(s.columns, fmt.Sprintf("%s.%s", c.Source, c.Name)) } } } diff --git a/sql/analyzer/index_analyzer_test.go b/sql/analyzer/index_analyzer_test.go index 2fe69ccd8c..0cd693cb7e 100644 --- a/sql/analyzer/index_analyzer_test.go +++ b/sql/analyzer/index_analyzer_test.go @@ -148,7 +148,6 @@ func (i *dummyIdx) Table() string { return i.table } func (i *dummyIdx) IsUnique() bool { return false } func (i *dummyIdx) IsSpatial() bool { return false } func (i *dummyIdx) IsFullText() bool { return false } -func (i *dummyIdx) IsVector() bool { return false } func (i *dummyIdx) Comment() string { return "" } func (i *dummyIdx) IsGenerated() bool { return false } func (i *dummyIdx) CanSupportOrderBy(sql.Expression) bool { return false } diff --git a/sql/analyzer/replace_order_by_distance.go b/sql/analyzer/replace_order_by_distance.go index e1bfc5b2d1..c145a8b8d1 100644 --- a/sql/analyzer/replace_order_by_distance.go +++ b/sql/analyzer/replace_order_by_distance.go @@ -3,7 +3,6 @@ package analyzer import ( "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/expression" - "github.com/dolthub/go-mysql-server/sql/expression/function/vector" "github.com/dolthub/go-mysql-server/sql/plan" "github.com/dolthub/go-mysql-server/sql/transform" ) @@ -13,9 +12,9 @@ func replaceIdxOrderByDistance(ctx *sql.Context, a *Analyzer, n sql.Node, scope return replaceIdxOrderByDistanceHelper(ctx, scope, n, nil) } -func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, sortNode *plan.TopN) (sql.Node, transform.TreeIdentity, error) { +func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, sortNode plan.Sortable) (sql.Node, transform.TreeIdentity, error) { switch n := node.(type) { - case *plan.TopN: + case plan.Sortable: sortNode = n // lowest parent sort node case *plan.ResolvedTable: if sortNode == nil { @@ -41,11 +40,6 @@ func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node s if err != nil { return nil, transform.SameTree, err } - - // Column references have not been assigned their final indexes yet, so do that for the ORDER BY expression now. - // We can safely do this because an expression that references other tables won't pass `isSortFieldsValidPrefix` below. - sortNode = offsetAssignIndexes(sortNode).(*plan.TopN) - sfExprs := normalizeExpressions(tableAliases, sortNode.GetSortFields().ToExpressions()...) sfAliases := aliasedExpressionsInNode(sortNode) @@ -55,21 +49,18 @@ func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node s if len(sfExprs) != 1 { return n, transform.SameTree, nil } - distance, isDistance := sfExprs[0].(*vector.Distance) + distance, isDistance := sfExprs[0].(*expression.Distance) if !isDistance { return n, transform.SameTree, nil } var column sql.Expression - var literal sql.Expression _, leftIsLiteral := distance.LeftChild.(*expression.Literal) if leftIsLiteral { column = distance.RightChild - literal = distance.LeftChild } else { _, rightIsLiteral := distance.RightChild.(*expression.Literal) if rightIsLiteral { column = distance.LeftChild - literal = distance.RightChild } else { return n, transform.SameTree, nil } @@ -91,7 +82,10 @@ func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node s return n, transform.SameTree, nil } - limit := sortNode.Limit + var limit sql.Expression + if topn, ok := sortNode.(*plan.TopN); ok { + limit = topn.Limit + } lookup := sql.IndexLookup{ Index: idx, @@ -99,7 +93,6 @@ func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node s VectorOrderAndLimit: sql.OrderAndLimit{ OrderBy: distance, Limit: limit, - Literal: literal, }, } nn, err := plan.NewStaticIndexedAccessForTableNode(n, lookup) @@ -115,7 +108,7 @@ func replaceIdxOrderByDistanceHelper(ctx *sql.Context, scope *plan.Scope, node s var err error same := transform.SameTree switch c := child.(type) { - case *plan.Project, *plan.TableAlias, *plan.ResolvedTable, *plan.Filter, *plan.Limit, *plan.TopN, *plan.Offset, *plan.Sort, *plan.IndexedTableAccess: + case *plan.Project, *plan.TableAlias, *plan.ResolvedTable, *plan.Filter, *plan.Limit, *plan.Offset, *plan.Sort, *plan.IndexedTableAccess: newChildren[i], same, err = replaceIdxOrderByDistanceHelper(ctx, scope, child, sortNode) default: newChildren[i] = c diff --git a/sql/analyzer/replace_sort.go b/sql/analyzer/replace_sort.go index 6c4b99f99d..df8e74dc34 100644 --- a/sql/analyzer/replace_sort.go +++ b/sql/analyzer/replace_sort.go @@ -107,10 +107,6 @@ func replaceIdxSortHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, so if idxCandidate.IsSpatial() { continue } - if idxCandidate.IsVector() { - // TODO: It's possible that we may be able to use vector indexes for point lookups, but not range lookups - continue - } if isSortFieldsValidPrefix(sfExprs, sfAliases, idxCandidate.Expressions()) { idx = idxCandidate break diff --git a/sql/analyzer/validate_create_table.go b/sql/analyzer/validate_create_table.go index fdb45e5dec..2300ead6d3 100644 --- a/sql/analyzer/validate_create_table.go +++ b/sql/analyzer/validate_create_table.go @@ -505,7 +505,7 @@ func validateModifyColumn(ctx *sql.Context, initialSch sql.Schema, schema sql.Sc if !strings.EqualFold(col.Name, oldColName) { continue } - if types.IsJSON(newCol.Type) && !index.IsVector() { + if types.IsJSON(newCol.Type) { return nil, sql.ErrJSONIndex.New(col.Name) } var prefixLen int64 @@ -883,7 +883,7 @@ func validateIndex(ctx *sql.Context, colMap map[string]*sql.Column, idxDef *sql. return sql.ErrDuplicateColumn.New(schCol.Name) } seenCols[schCol.Name] = struct{}{} - if types.IsJSON(schCol.Type) && !idxDef.IsVector() { + if types.IsJSON(schCol.Type) { return sql.ErrJSONIndex.New(schCol.Name) } diff --git a/sql/analyzer/validation_rules_test.go b/sql/analyzer/validation_rules_test.go index 7913f78a91..748822c94d 100644 --- a/sql/analyzer/validation_rules_test.go +++ b/sql/analyzer/validation_rules_test.go @@ -81,12 +81,12 @@ func TestValidateGroupBy(t *testing.T) { child := memory.NewTable(db, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_1", int64(2222)), - sql.NewRow("col1_2", int64(4444)), - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_2", int64(4444)), + rows := []sql.UntypedSqlRow{ + {"col1_1", int64(1111)}, + {"col1_1", int64(2222)}, + {"col1_2", int64(4444)}, + {"col1_1", int64(1111)}, + {"col1_2", int64(4444)}, } for _, r := range rows { @@ -129,12 +129,12 @@ func TestValidateGroupByErr(t *testing.T) { child := memory.NewTable(db, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_1", int64(2222)), - sql.NewRow("col1_2", int64(4444)), - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_2", int64(4444)), + rows := []sql.UntypedSqlRow{ + {"col1_1", int64(1111)}, + {"col1_1", int64(2222)}, + {"col1_2", int64(4444)}, + {"col1_1", int64(1111)}, + {"col1_2", int64(4444)}, } for _, r := range rows { diff --git a/sql/analyzer/vector_index_test.go b/sql/analyzer/vector_index_test.go index 2757e15860..056052fb42 100644 --- a/sql/analyzer/vector_index_test.go +++ b/sql/analyzer/vector_index_test.go @@ -24,7 +24,6 @@ import ( "github.com/dolthub/go-mysql-server/memory" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/expression" - "github.com/dolthub/go-mysql-server/sql/expression/function/vector" "github.com/dolthub/go-mysql-server/sql/plan" "github.com/dolthub/go-mysql-server/sql/rowexec" "github.com/dolthub/go-mysql-server/sql/types" @@ -38,11 +37,10 @@ func jsonExpression(t *testing.T, val interface{}) sql.Expression { } type vectorIndexTestCase struct { - name string - usesVectorIndex bool - inputPlan sql.Node - expectedPlan string - expectedRows []sql.Row + name string + inputPlan sql.Node + expectedPlan string + expectedRows []sql.UntypedSqlRow } func vectorIndexTestCases(t *testing.T, db *memory.Database, table sql.IndexedTable) []vectorIndexTestCase { @@ -51,29 +49,32 @@ func vectorIndexTestCases(t *testing.T, db *memory.Database, table sql.IndexedTa name: "without limit", inputPlan: plan.NewSort( sql.SortFields{ - {Column: vector.NewDistance(vector.DistanceL2Squared{}, jsonExpression(t, "[0.0, 0.0]"), expression.NewGetFieldWithTable(2, 1, types.JSON, "", "test-table", "v", false)), Order: sql.Ascending}, + {Column: expression.NewDistance(expression.DistanceL2Squared{}, jsonExpression(t, "[0.0, 0.0]"), expression.NewGetField(1, types.JSON, "v", false)), Order: sql.Ascending}, }, plan.NewResolvedTable(table, db, nil)), - usesVectorIndex: false, - expectedRows: []sql.Row{ - sql.NewRow(int64(3), jsontests.ConvertToJson(t, "[1.0, 1.0]")), - sql.NewRow(int64(2), jsontests.ConvertToJson(t, "[2.0, 2.0]")), - sql.NewRow(int64(1), jsontests.ConvertToJson(t, "[3.0, 4.0]")), + expectedPlan: ` +IndexedTableAccess(test) + ├─ index: [v] + └─ order: VEC_DISTANCE_L2_SQUARED([0, 0], v) +`, + expectedRows: []sql.UntypedSqlRow{ + {int64(3), jsontests.ConvertToJson(t, "[1.0, 1.0]")}, + {int64(2), jsontests.ConvertToJson(t, "[2.0, 2.0]")}, + {int64(1), jsontests.ConvertToJson(t, "[3.0, 4.0]")}, }, }, { name: "with limit", inputPlan: plan.NewTopN( sql.SortFields{ - {Column: vector.NewDistance(vector.DistanceL2Squared{}, jsonExpression(t, "[0.0, 0.0]"), expression.NewGetFieldWithTable(2, 1, types.JSON, "", "test-table", "v", false)), Order: sql.Ascending}, + {Column: expression.NewDistance(expression.DistanceL2Squared{}, jsonExpression(t, "[0.0, 0.0]"), expression.NewGetField(1, types.JSON, "v", false)), Order: sql.Ascending}, }, expression.NewLiteral(1, types.Int64), plan.NewResolvedTable(table, db, nil)), - usesVectorIndex: true, expectedPlan: ` IndexedTableAccess(test) - ├─ index: [test-table.v] - └─ order: VEC_DISTANCE_L2_SQUARED([0, 0], test-table.v) LIMIT 1 (bigint) + ├─ index: [v] + └─ order: VEC_DISTANCE_L2_SQUARED([0, 0], v) LIMIT 1 (bigint) `, - expectedRows: []sql.Row{ - sql.NewRow(int64(3), jsontests.ConvertToJson(t, "[1.0, 1.0]")), + expectedRows: []sql.UntypedSqlRow{ + {int64(3), jsontests.ConvertToJson(t, "[1.0, 1.0]")}, }, }, } @@ -91,10 +92,10 @@ func TestVectorIndex(t *testing.T) { }) child := memory.NewTable(db.BaseDatabase, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow(int64(1), jsontests.ConvertToJson(t, "[3.0, 4.0]")), - sql.NewRow(int64(2), jsontests.ConvertToJson(t, "[2.0, 2.0]")), - sql.NewRow(int64(3), jsontests.ConvertToJson(t, "[1.0, 1.0]")), + rows := []sql.UntypedSqlRow{ + {int64(1), jsontests.ConvertToJson(t, "[3.0, 4.0]")}, + {int64(2), jsontests.ConvertToJson(t, "[2.0, 2.0]")}, + {int64(3), jsontests.ConvertToJson(t, "[1.0, 1.0]")}, } for _, r := range rows { @@ -116,65 +117,22 @@ func TestVectorIndex(t *testing.T) { t.Run(testCase.name, func(t *testing.T) { res, same, err := replaceIdxOrderByDistanceHelper(nil, nil, testCase.inputPlan, nil) require.NoError(t, err) - require.Equal(t, testCase.usesVectorIndex, !bool(same)) - res = offsetAssignIndexes(res) - if testCase.usesVectorIndex { - require.Equal(t, - strings.TrimSpace(testCase.expectedPlan), - strings.TrimSpace(res.String()), - "expected:\n%s,\nfound:\n%s\n", testCase.expectedPlan, res.String()) - } + require.False(t, bool(same)) + require.Equal(t, + strings.TrimSpace(testCase.expectedPlan), + strings.TrimSpace(res.String()), + "expected:\n%s,\nfound:\n%s\n", testCase.expectedPlan, res.String()) iter, err := rowexec.DefaultBuilder.Build(ctx, res, nil) require.NoError(t, err) - rows, err = sql.RowIterToRows(ctx, iter) + sqlRows, err := sql.RowIterToRows(ctx, iter) require.NoError(t, err) - require.Equal(t, rows, testCase.expectedRows) + require.Equal(t, sql.RowsToUntyped(sqlRows), testCase.expectedRows) }) } } -func TestShowCreateTableWithVectorIndex(t *testing.T) { - var require = require.New(t) - - db := memory.NewDatabase("test") - pro := memory.NewDBProvider(db) - ctx := newContext(pro) - - schema := sql.Schema{ - &sql.Column{Name: "pk", Source: "test-table", Type: types.Int32, Nullable: true, PrimaryKey: true}, - &sql.Column{Name: "v", Source: "test-table", Type: types.JSON, Default: nil, Nullable: true}, - } - - table := memory.NewTable(db.BaseDatabase, "test-table", sql.NewPrimaryKeySchema(schema), &memory.ForeignKeyCollection{}) - - showCreateTable, err := plan.NewShowCreateTable(plan.NewResolvedTable(table, nil, nil), false).WithTargetSchema(schema) - require.NoError(err) - - // This mimics what happens during analysis (indexes get filled in for the table) - showCreateTable.(*plan.ShowCreateTable).Indexes = []sql.Index{ - &vectorIndex, - } - - rowIter, _ := rowexec.DefaultBuilder.Build(ctx, showCreateTable, nil) - - row, err := rowIter.Next(ctx) - - require.NoError(err) - - expected := sql.NewRow( - table.Name(), - "CREATE TABLE `test-table` (\n `pk` int,\n"+ - " `v` json,\n"+ - " PRIMARY KEY (`pk`),\n"+ - " VECTOR KEY `test` (`v`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin", - ) - - require.Equal(expected, row) -} - type vectorIndexTable struct { underlying sql.IndexedTable } @@ -206,7 +164,8 @@ func (i vectorIndexTable) Comment() string { } func (i vectorIndexTable) Partitions(context *sql.Context) (sql.PartitionIter, error) { - return i.underlying.Partitions(context) + //TODO implement me + panic("implement me") } func (i vectorIndexTable) PartitionRows(context *sql.Context, partition sql.Partition) (sql.RowIter, error) { @@ -230,15 +189,15 @@ var vectorIndex = memory.Index{ DB: database, DriverName: "", Tbl: nil, - TableName: "test-table", + TableName: "test", Exprs: []sql.Expression{ - expression.NewGetFieldWithTable(1, 1, types.JSON, "", "test-table", "v", false), + expression.NewGetField(1, types.JSON, "v", false), }, Name: "test", - Unique: false, + Unique: true, Spatial: false, Fulltext: false, - SupportedVectorFunction: vector.DistanceL2Squared{}, + SupportedVectorFunction: expression.DistanceL2Squared{}, CommentStr: "", PrefixLens: nil, } diff --git a/sql/cache.go b/sql/cache.go index 94759be248..369072a8e2 100644 --- a/sql/cache.go +++ b/sql/cache.go @@ -26,10 +26,13 @@ import ( // HashOf returns a hash of the given value to be used as key in a cache. func HashOf(v Row) (uint64, error) { + if v == nil { + return 0, nil + } hash := digestPool.Get().(*xxhash.Digest) hash.Reset() defer digestPool.Put(hash) - for i, x := range v { + for i, x := range v.Values() { if i > 0 { // separate each value in the row with a nil byte if _, err := hash.Write([]byte{0}); err != nil { diff --git a/sql/cache_test.go b/sql/cache_test.go index c93e04ad1b..0f3e81176d 100644 --- a/sql/cache_test.go +++ b/sql/cache_test.go @@ -140,12 +140,12 @@ func TestRowsCache(t *testing.T) { cache := newRowsCache(mockMemory{}, fixedReporter(5, 50)) - require.NoError(cache.Add(Row{1})) + require.NoError(cache.Add(UntypedSqlRow{1})) require.Len(cache.Get(), 1) cache.Dispose() require.Panics(func() { - _ = cache.Add(Row{2}) + _ = cache.Add(UntypedSqlRow{2}) }) }) @@ -153,7 +153,7 @@ func TestRowsCache(t *testing.T) { require := require.New(t) cache := newRowsCache(mockMemory{}, fixedReporter(51, 50)) - err := cache.Add(Row{1, "foo"}) + err := cache.Add(UntypedSqlRow{1, "foo"}) require.Error(err) require.True(ErrNoMemoryAvailable.Is(err)) }) @@ -172,7 +172,7 @@ func TestRowsCache(t *testing.T) { return 51 }, 50}, ) - require.NoError(cache.Add(Row{1, "foo"})) + require.NoError(cache.Add(UntypedSqlRow{1, "foo"})) require.Len(cache.Get(), 1) require.True(freed) }) diff --git a/sql/core.go b/sql/core.go index e861cbd18c..d898cc0511 100644 --- a/sql/core.go +++ b/sql/core.go @@ -16,7 +16,6 @@ package sql import ( "context" - "encoding/json" "fmt" trace2 "runtime/trace" "strconv" @@ -314,38 +313,27 @@ func ConvertToVector(v interface{}) ([]float64, error) { switch b := v.(type) { case []float64: return b, nil - case string: - var val interface{} - err := json.Unmarshal([]byte(b), &val) - if err != nil { - return nil, err - } - return convertJsonInterfaceToVector(val) case JSONWrapper: val, err := b.ToInterface() if err != nil { return nil, err } - return convertJsonInterfaceToVector(val) - default: - return nil, fmt.Errorf("unable to cast %#v of type %T to vector", v, v) - } -} - -func convertJsonInterfaceToVector(val interface{}) ([]float64, error) { - array, ok := val.([]interface{}) - if !ok { - return nil, fmt.Errorf("can't convert JSON to vector; expected array, got %v", val) - } - res := make([]float64, len(array)) - for i, elem := range array { - floatElem, ok := elem.(float64) + array, ok := val.([]interface{}) if !ok { - return nil, fmt.Errorf("can't convert JSON to vector; expected array of floats, got %v", elem) + return nil, fmt.Errorf("can't convert JSON to vector; expected array, got %v", val) + } + res := make([]float64, len(array)) + for i, elem := range array { + floatElem, ok := elem.(float64) + if !ok { + return nil, fmt.Errorf("can't convert JSON to vector; expected array of floats, got %v", elem) + } + res[i] = floatElem } - res[i] = floatElem + return res, nil + default: + return nil, fmt.Errorf("unable to cast %#v of type %T to vector", v, v) } - return res, nil } // EvaluateCondition evaluates a condition, which is an expression whose value @@ -890,7 +878,6 @@ func IncrementStatusVariable(ctx *Context, name string, val int) { type OrderAndLimit struct { OrderBy Expression Limit Expression - Literal Expression CalcFoundRows bool } diff --git a/sql/expression/binary_test.go b/sql/expression/binary_test.go index 2651b4a7c2..67c5456baa 100644 --- a/sql/expression/binary_test.go +++ b/sql/expression/binary_test.go @@ -45,10 +45,10 @@ func TestBinary(t *testing.T) { for _, tt := range testCases { f := NewBinary(NewLiteral(tt.val, tt.valType)) - require.Equal(tt.expected, eval(t, f, sql.Row{nil})) + require.Equal(tt.expected, eval(t, f, sql.UntypedSqlRow{nil})) } // Try with nil case e = NewBinary(NewLiteral(nil, types.Null)) - require.Equal(nil, eval(t, e, sql.Row{nil})) + require.Equal(nil, eval(t, e, sql.UntypedSqlRow{nil})) } diff --git a/sql/expression/case_test.go b/sql/expression/case_test.go index 68033649e9..843bbb732a 100644 --- a/sql/expression/case_test.go +++ b/sql/expression/case_test.go @@ -82,55 +82,55 @@ func TestCase(t *testing.T) { { "with expr and else branch 1", f1, - sql.Row{int64(1)}, + sql.UntypedSqlRow{int64(1)}, int64(2), }, { "with expr and else branch 2", f1, - sql.Row{int64(3)}, + sql.UntypedSqlRow{int64(3)}, int64(4), }, { "with expr and else branch 3", f1, - sql.Row{int64(5)}, + sql.UntypedSqlRow{int64(5)}, int64(6), }, { "with expr and else, else branch", f1, - sql.Row{int64(9)}, + sql.UntypedSqlRow{int64(9)}, int64(7), }, { "without expr and else branch 1", f2, - sql.Row{int64(1)}, + sql.UntypedSqlRow{int64(1)}, int64(2), }, { "without expr and else branch 2", f2, - sql.Row{int64(3)}, + sql.UntypedSqlRow{int64(3)}, int64(4), }, { "without expr and else branch 3", f2, - sql.Row{int64(5)}, + sql.UntypedSqlRow{int64(5)}, int64(6), }, { "without expr and else, else branch", f2, - sql.Row{int64(9)}, + sql.UntypedSqlRow{int64(9)}, int64(7), }, { "without else, else branch", f3, - sql.Row{int64(9)}, + sql.UntypedSqlRow{int64(9)}, nil, }, } @@ -264,7 +264,7 @@ func TestCaseNullBranch(t *testing.T) { }, nil, ) - result, err := f.Eval(sql.NewEmptyContext(), sql.Row{int64(1)}) + result, err := f.Eval(sql.NewEmptyContext(), sql.UntypedSqlRow{int64(1)}) require.NoError(err) require.Nil(result) } diff --git a/sql/expression/function/vector/distance.go b/sql/expression/distance.go similarity index 79% rename from sql/expression/function/vector/distance.go rename to sql/expression/distance.go index f1d302cc8f..2b91b3afe2 100644 --- a/sql/expression/function/vector/distance.go +++ b/sql/expression/distance.go @@ -12,13 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -package vector +package expression import ( "fmt" "github.com/dolthub/go-mysql-server/sql" - "github.com/dolthub/go-mysql-server/sql/expression" "github.com/dolthub/go-mysql-server/sql/types" ) @@ -26,8 +25,6 @@ type DistanceType interface { String() string Eval(left []float64, right []float64) (float64, error) CanEval(distanceType DistanceType) bool - FunctionName() string - Description() string } type DistanceL2Squared struct{} @@ -55,40 +52,17 @@ func (d DistanceL2Squared) CanEval(other DistanceType) bool { return other == DistanceL2Squared{} } -func (d DistanceL2Squared) FunctionName() string { - return "vec_distance_l2_squared" -} - -func (d DistanceL2Squared) Description() string { - return "returns the squared l2 norm (euclidian distance) between two vectors" -} - type Distance struct { DistanceType DistanceType - expression.BinaryExpressionStub -} - -func (d Distance) FunctionName() string { - return d.DistanceType.FunctionName() -} - -func (d Distance) Description() string { - return d.DistanceType.Description() + BinaryExpressionStub } var _ sql.Expression = (*Distance)(nil) -var _ sql.FunctionExpression = (*Distance)(nil) var _ sql.CollationCoercible = (*Distance)(nil) // NewDistance creates a new Distance expression. func NewDistance(distanceType DistanceType, left sql.Expression, right sql.Expression) sql.Expression { - return &Distance{DistanceType: distanceType, BinaryExpressionStub: expression.BinaryExpressionStub{LeftChild: left, RightChild: right}} -} - -var _ sql.CreateFunc2Args = NewL2SquaredDistance - -func NewL2SquaredDistance(left, right sql.Expression) sql.Expression { - return NewDistance(DistanceL2Squared{}, left, right) + return &Distance{DistanceType: distanceType, BinaryExpressionStub: BinaryExpressionStub{LeftChild: left, RightChild: right}} } func (d Distance) CollationCoercibility(_ *sql.Context) (collation sql.CollationID, coercibility byte) { diff --git a/sql/expression/function/vector/distance_test.go b/sql/expression/distance_test.go similarity index 89% rename from sql/expression/function/vector/distance_test.go rename to sql/expression/distance_test.go index e4e03dec25..eb8a7967f7 100644 --- a/sql/expression/function/vector/distance_test.go +++ b/sql/expression/distance_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package vector +package expression import ( "testing" @@ -20,13 +20,12 @@ import ( assert "github.com/stretchr/testify/require" "github.com/dolthub/go-mysql-server/sql" - "github.com/dolthub/go-mysql-server/sql/expression" "github.com/dolthub/go-mysql-server/sql/types" "github.com/dolthub/go-mysql-server/sql/types/jsontests" ) func jsonExpression(t *testing.T, val interface{}) sql.Expression { - return expression.NewLiteral(jsontests.ConvertToJson(t, val), types.JSON) + return NewLiteral(jsontests.ConvertToJson(t, val), types.JSON) } func TestDistance(t *testing.T) { diff --git a/sql/expression/div_test.go b/sql/expression/div_test.go index 6ef9f95470..9ab247bae0 100644 --- a/sql/expression/div_test.go +++ b/sql/expression/div_test.go @@ -398,6 +398,45 @@ func BenchmarkDivInt(b *testing.B) { } } +var result_ string + +func BenchmarkSprintf(b *testing.B) { + var res string + for i := 0; i < b.N; i++ { + res = fmt.Sprintf("%s.%s", "a", "b") + if len(res) > 0 { + print() + } + } + result_ = res +} + +func BenchmarkAddString(b *testing.B) { + var res string + + i := 0 + getS := func() string { + i++ + if i%7 == 0 { + return "a" + } else if i%3 == 0 { + return "b" + } else if i%2 == 0 { + return "c" + } else { + return "d" + } + } + + for i := 0; i < b.N; i++ { + res = getS() + "." + getS() + if len(res) > 0 { + print() + } + } + result_ = res +} + // Results: // BenchmarkDivFloat-16 1521937 787.7 ns/op func BenchmarkDivFloat(b *testing.B) { diff --git a/sql/expression/function/aggregation/avg_test.go b/sql/expression/function/aggregation/avg_test.go index adafe00373..cb92b39672 100644 --- a/sql/expression/function/aggregation/avg_test.go +++ b/sql/expression/function/aggregation/avg_test.go @@ -113,27 +113,27 @@ func TestAvg_NUMS_AND_NULLS(t *testing.T) { testCases := []struct { name string - rows []sql.Row + rows []sql.UntypedSqlRow expected interface{} }{ { "float values with nil", - []sql.Row{{2.0}, {2.0}, {3.}, {4.}, {nil}}, + []sql.UntypedSqlRow{{2.0}, {2.0}, {3.}, {4.}, {nil}}, float64(2.75), }, { "float values with nil", - []sql.Row{{1}, {2}, {3}, {nil}, {nil}}, + []sql.UntypedSqlRow{{1}, {2}, {3}, {nil}, {nil}}, float64(2.0), }, { "no rows", - []sql.Row{}, + []sql.UntypedSqlRow{}, nil, }, { "nil values", - []sql.Row{{nil}, {nil}}, + []sql.UntypedSqlRow{{nil}, {nil}}, nil, }, } @@ -162,42 +162,42 @@ func TestAvg_Distinct(t *testing.T) { testCases := []struct { name string - rows []sql.Row + rows []sql.UntypedSqlRow expected interface{} }{ { "string int values", - []sql.Row{{"1"}, {"1"}, {"2"}, {"2"}, {"3"}, {"3"}, {"4"}, {"4"}}, + []sql.UntypedSqlRow{{"1"}, {"1"}, {"2"}, {"2"}, {"3"}, {"3"}, {"4"}, {"4"}}, float64(2.5), }, { "string float values", - []sql.Row{{"2.0"}, {"2.0"}, {"3.0"}, {"4.0"}, {"4.0"}}, + []sql.UntypedSqlRow{{"2.0"}, {"2.0"}, {"3.0"}, {"4.0"}, {"4.0"}}, float64(3.0), }, { "string float values", - []sql.Row{{"2.0"}, {"2.0"}, {"3.0"}, {"4.0"}, {"4.0"}}, + []sql.UntypedSqlRow{{"2.0"}, {"2.0"}, {"3.0"}, {"4.0"}, {"4.0"}}, float64(3.0), }, { "float values", - []sql.Row{{2.0}, {2.0}, {3.}, {4.}}, + []sql.UntypedSqlRow{{2.0}, {2.0}, {3.}, {4.}}, float64(3.0), }, { "float values with nil", - []sql.Row{{2.0}, {2.0}, {3.}, {4.}, {nil}}, + []sql.UntypedSqlRow{{2.0}, {2.0}, {3.}, {4.}, {nil}}, float64(3.0), }, { "no rows", - []sql.Row{}, + []sql.UntypedSqlRow{}, nil, }, { "nil values", - []sql.Row{{nil}, {nil}}, + []sql.UntypedSqlRow{{nil}, {nil}}, nil, }, } diff --git a/sql/expression/function/aggregation/common_test.go b/sql/expression/function/aggregation/common_test.go index 538515534a..3778f5f523 100644 --- a/sql/expression/function/aggregation/common_test.go +++ b/sql/expression/function/aggregation/common_test.go @@ -40,7 +40,7 @@ func evalBuffer(t *testing.T, buf sql.AggregationBuffer) interface{} { return v } -func aggregate(t *testing.T, agg sql.Aggregation, rows ...sql.Row) interface{} { +func aggregate(t *testing.T, agg sql.Aggregation, rows ...sql.UntypedSqlRow) interface{} { t.Helper() ctx := sql.NewEmptyContext() diff --git a/sql/expression/function/aggregation/count_test.go b/sql/expression/function/aggregation/count_test.go index 7661db68cf..146d3f7e41 100644 --- a/sql/expression/function/aggregation/count_test.go +++ b/sql/expression/function/aggregation/count_test.go @@ -95,7 +95,7 @@ func TestCountDistinctEvalStar(t *testing.T) { b, _ := c.NewBuffer() require.Equal(int64(0), evalBuffer(t, b)) - require.NoError(b.Update(ctx, nil)) + require.NoError(b.Update(ctx, sql.NewRow())) require.NoError(b.Update(ctx, sql.NewRow("foo"))) require.NoError(b.Update(ctx, sql.NewRow(1))) require.NoError(b.Update(ctx, sql.NewRow(nil))) diff --git a/sql/expression/function/aggregation/first_test.go b/sql/expression/function/aggregation/first_test.go index acf6bf1042..ad39d7f6b1 100644 --- a/sql/expression/function/aggregation/first_test.go +++ b/sql/expression/function/aggregation/first_test.go @@ -27,12 +27,12 @@ import ( func TestFirst(t *testing.T) { testCases := []struct { name string - rows []sql.Row + rows []sql.UntypedSqlRow expected interface{} }{ {"no rows", nil, nil}, - {"one row", []sql.Row{{"first"}}, "first"}, - {"three rows", []sql.Row{{"first"}, {"second"}, {"last"}}, "first"}, + {"one row", []sql.UntypedSqlRow{{"first"}}, "first"}, + {"three rows", []sql.UntypedSqlRow{{"first"}, {"second"}, {"last"}}, "first"}, } agg := NewFirst(expression.NewGetField(0, types.Text, "", false)) diff --git a/sql/expression/function/aggregation/group_concat.go b/sql/expression/function/aggregation/group_concat.go index 863e40e58c..781a17c45a 100644 --- a/sql/expression/function/aggregation/group_concat.go +++ b/sql/expression/function/aggregation/group_concat.go @@ -218,7 +218,7 @@ func (g *groupConcatBuffer) Update(ctx *sql.Context, originalRow sql.Row) error var v interface{} var vs string if types.IsBlobType(retType) { - v, _, err = types.Blob.Convert(evalRow[0]) + v, _, err = types.Blob.Convert(evalRow.GetValue(0)) if err != nil { return err } @@ -227,7 +227,7 @@ func (g *groupConcatBuffer) Update(ctx *sql.Context, originalRow sql.Row) error return nil } } else { - v, _, err = types.LongText.Convert(evalRow[0]) + v, _, err = types.LongText.Convert(evalRow.GetValue(0)) if err != nil { return err } @@ -250,7 +250,7 @@ func (g *groupConcatBuffer) Update(ctx *sql.Context, originalRow sql.Row) error // Append the current value to the end of the row. We want to preserve the row's original structure for // for sort ordering in the final step. - g.rows = append(g.rows, append(originalRow, nil, vs)) + g.rows = append(g.rows, originalRow.Append(sql.NewUntypedRow(nil, vs))) return nil } @@ -280,12 +280,12 @@ func (g *groupConcatBuffer) Eval(ctx *sql.Context) (interface{}, error) { sb := strings.Builder{} for i, row := range rows { - lastIdx := len(row) - 1 + lastIdx := row.Len() - 1 if i == 0 { - sb.WriteString(row[lastIdx].(string)) + sb.WriteString(row.GetValue(lastIdx).(string)) } else { sb.WriteString(g.gc.separator) - sb.WriteString(row[lastIdx].(string)) + sb.WriteString(row.GetValue(lastIdx).(string)) } // Don't allow the string to cross maxlen @@ -310,15 +310,16 @@ func (g *groupConcatBuffer) Dispose() { } func evalExprs(ctx *sql.Context, exprs []sql.Expression, row sql.Row) (sql.Row, sql.Type, error) { - result := make(sql.Row, len(exprs)) + result := sql.NewSqlRowWithLen(len(exprs)) retType := types.Blob + var v interface{} for i, expr := range exprs { var err error - result[i], err = expr.Eval(ctx, row) + v, err = expr.Eval(ctx, row) if err != nil { return nil, nil, err } - + result.SetValue(i, v) // If every expression returns Blob type return Blob otherwise return Text. if expr.Type() != types.Blob { retType = types.Text diff --git a/sql/expression/function/aggregation/group_concat_test.go b/sql/expression/function/aggregation/group_concat_test.go index 9f37c7085f..cb8a81995e 100644 --- a/sql/expression/function/aggregation/group_concat_test.go +++ b/sql/expression/function/aggregation/group_concat_test.go @@ -52,7 +52,7 @@ func TestGroupConcat_PastMaxLen(t *testing.T) { ctx := sql.NewEmptyContext() for i := 0; i < 2000; i++ { - rows = append(rows, sql.Row{int64(i)}) + rows = append(rows, sql.UntypedSqlRow{int64(i)}) } maxLenInt, err := ctx.GetSessionVariable(ctx, "group_concat_max_len") @@ -83,10 +83,10 @@ func TestGroupConcat_ReturnType(t *testing.T) { returnType sql.Type row sql.Row }{ - {[]sql.Expression{expression.NewGetField(0, types.LongText, "test", true)}, 200, types.MustCreateString(query.Type_VARCHAR, 512, sql.Collation_Default), sql.Row{int64(1)}}, - {[]sql.Expression{expression.NewGetField(0, types.Text, "text", true)}, 1020, types.Text, sql.Row{int64(1)}}, - {[]sql.Expression{expression.NewGetField(0, types.Blob, "myblob", true)}, 200, types.MustCreateString(query.Type_VARBINARY, 512, sql.Collation_binary), sql.Row{"hi"}}, - {[]sql.Expression{expression.NewGetField(0, types.Blob, "myblob", true)}, 1020, types.Blob, sql.Row{"hi"}}, + {[]sql.Expression{expression.NewGetField(0, types.LongText, "test", true)}, 200, types.MustCreateString(query.Type_VARCHAR, 512, sql.Collation_Default), sql.UntypedSqlRow{int64(1)}}, + {[]sql.Expression{expression.NewGetField(0, types.Text, "text", true)}, 1020, types.Text, sql.UntypedSqlRow{int64(1)}}, + {[]sql.Expression{expression.NewGetField(0, types.Blob, "myblob", true)}, 200, types.MustCreateString(query.Type_VARBINARY, 512, sql.Collation_binary), sql.UntypedSqlRow{"hi"}}, + {[]sql.Expression{expression.NewGetField(0, types.Blob, "myblob", true)}, 1020, types.Blob, sql.UntypedSqlRow{"hi"}}, } for _, tt := range testCases { diff --git a/sql/expression/function/aggregation/last_test.go b/sql/expression/function/aggregation/last_test.go index cb41de28c2..7b0d2e864c 100644 --- a/sql/expression/function/aggregation/last_test.go +++ b/sql/expression/function/aggregation/last_test.go @@ -27,12 +27,12 @@ import ( func TestLast(t *testing.T) { testCases := []struct { name string - rows []sql.Row + rows []sql.UntypedSqlRow expected interface{} }{ {"no rows", nil, nil}, - {"one row", []sql.Row{{"first"}}, "first"}, - {"three rows", []sql.Row{{"first"}, {"second"}, {"last"}}, "last"}, + {"one row", []sql.UntypedSqlRow{{"first"}}, "first"}, + {"three rows", []sql.UntypedSqlRow{{"first"}, {"second"}, {"last"}}, "last"}, } agg := NewLast(expression.NewGetField(0, types.Text, "", false)) diff --git a/sql/expression/function/aggregation/max_test.go b/sql/expression/function/aggregation/max_test.go index 15c3fb2149..c7efca8f6e 100644 --- a/sql/expression/function/aggregation/max_test.go +++ b/sql/expression/function/aggregation/max_test.go @@ -119,11 +119,11 @@ func TestMax_Distinct(t *testing.T) { require.Equal(t, "MAX(DISTINCT field)", m.String()) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{2})) - require.NoError(t, b.Update(ctx, sql.Row{3})) - require.NoError(t, b.Update(ctx, sql.Row{3})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{2})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{3})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{3})) v, err := b.Eval(ctx) assert.NoError(err) @@ -132,10 +132,10 @@ func TestMax_Distinct(t *testing.T) { m = NewMax(expression.NewDistinctExpression(expression.NewGetField(0, types.Int32, "field", true))) b, _ = m.NewBuffer() - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{nil})) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{2})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{nil})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{2})) v, err = b.Eval(ctx) assert.NoError(err) assert.Equal(2, v) diff --git a/sql/expression/function/aggregation/min_test.go b/sql/expression/function/aggregation/min_test.go index 29cdd9be30..3a9d7d4241 100644 --- a/sql/expression/function/aggregation/min_test.go +++ b/sql/expression/function/aggregation/min_test.go @@ -121,11 +121,11 @@ func TestMin_Distinct(t *testing.T) { require.Equal(t, "MIN(DISTINCT field)", m.String()) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{2})) - require.NoError(t, b.Update(ctx, sql.Row{3})) - require.NoError(t, b.Update(ctx, sql.Row{3})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{2})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{3})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{3})) v, err := b.Eval(ctx) assert.NoError(err) @@ -136,12 +136,12 @@ func TestMin_Distinct(t *testing.T) { require.Equal(t, "MIN(DISTINCT field)", m.String()) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{1})) - require.NoError(t, b.Update(ctx, sql.Row{2})) - require.NoError(t, b.Update(ctx, sql.Row{nil})) - require.NoError(t, b.Update(ctx, sql.Row{nil})) - require.NoError(t, b.Update(ctx, sql.Row{3})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{1})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{2})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{nil})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{nil})) + require.NoError(t, b.Update(ctx, sql.UntypedSqlRow{3})) v, err = b.Eval(ctx) assert.NoError(err) diff --git a/sql/expression/function/aggregation/sum_test.go b/sql/expression/function/aggregation/sum_test.go index c255c3b141..088779d41a 100644 --- a/sql/expression/function/aggregation/sum_test.go +++ b/sql/expression/function/aggregation/sum_test.go @@ -28,52 +28,52 @@ func TestSum(t *testing.T) { testCases := []struct { name string - rows []sql.Row + rows []sql.UntypedSqlRow expected interface{} }{ { "string int values", - []sql.Row{{"1"}, {"2"}, {"3"}, {"4"}}, + []sql.UntypedSqlRow{{"1"}, {"2"}, {"3"}, {"4"}}, float64(10), }, { "string float values", - []sql.Row{{"1.5"}, {"2"}, {"3"}, {"4"}}, + []sql.UntypedSqlRow{{"1.5"}, {"2"}, {"3"}, {"4"}}, float64(10.5), }, { "string non-int values", - []sql.Row{{"a"}, {"b"}, {"c"}, {"d"}}, + []sql.UntypedSqlRow{{"a"}, {"b"}, {"c"}, {"d"}}, float64(0), }, { "float values", - []sql.Row{{1.}, {2.5}, {3.}, {4.}}, + []sql.UntypedSqlRow{{1.}, {2.5}, {3.}, {4.}}, float64(10.5), }, { "no rows", - []sql.Row{}, + []sql.UntypedSqlRow{}, nil, }, { "nil values", - []sql.Row{{nil}, {nil}}, + []sql.UntypedSqlRow{{nil}, {nil}}, nil, }, { "int64 values", - []sql.Row{{int64(1)}, {int64(3)}}, + []sql.UntypedSqlRow{{int64(1)}, {int64(3)}}, float64(4), }, { "int32 values", - []sql.Row{{int32(1)}, {int32(3)}}, + []sql.UntypedSqlRow{{int32(1)}, {int32(3)}}, float64(4), }, { "int32 and nil values", - []sql.Row{{int32(1)}, {int32(3)}, {nil}}, + []sql.UntypedSqlRow{{int32(1)}, {int32(3)}, {nil}}, float64(4), }, } @@ -106,59 +106,59 @@ func TestSumWithDistinct(t *testing.T) { testCases := []struct { name string - rows []sql.Row + rows []sql.UntypedSqlRow expected interface{} }{ { "string int values", - []sql.Row{{"1"}, {"1"}, {"2"}, {"2"}, {"3"}, {"3"}, {"4"}, {"4"}}, + []sql.UntypedSqlRow{{"1"}, {"1"}, {"2"}, {"2"}, {"3"}, {"3"}, {"4"}, {"4"}}, float64(10), }, // TODO : DISTINCT returns incorrect result, it currently returns 11.00 // https://github.com/dolthub/dolt/issues/4298 //{ // "string int values", - // []sql.Row{{"1.00"}, {"1"}, {"2"}, {"2"}, {"3"}, {"3"}, {"4"}, {"4"}}, + // []sql.UntypedSqlRow{{"1.00"}, {"1"}, {"2"}, {"2"}, {"3"}, {"3"}, {"4"}, {"4"}}, // float64(10), //}, { "string float values", - []sql.Row{{"1.5"}, {"1.5"}, {"1.5"}, {"1.5"}, {"2"}, {"3"}, {"4"}}, + []sql.UntypedSqlRow{{"1.5"}, {"1.5"}, {"1.5"}, {"1.5"}, {"2"}, {"3"}, {"4"}}, float64(10.5), }, { "string non-int values", - []sql.Row{{"a"}, {"b"}, {"b"}, {"c"}, {"c"}, {"d"}}, + []sql.UntypedSqlRow{{"a"}, {"b"}, {"b"}, {"c"}, {"c"}, {"d"}}, float64(0), }, { "float values", - []sql.Row{{1.}, {2.5}, {3.}, {4.}}, + []sql.UntypedSqlRow{{1.}, {2.5}, {3.}, {4.}}, float64(10.5), }, { "no rows", - []sql.Row{}, + []sql.UntypedSqlRow{}, nil, }, { "nil values", - []sql.Row{{nil}, {nil}}, + []sql.UntypedSqlRow{{nil}, {nil}}, nil, }, { "int64 values", - []sql.Row{{int64(1)}, {int64(3)}, {int64(3)}, {int64(3)}}, + []sql.UntypedSqlRow{{int64(1)}, {int64(3)}, {int64(3)}, {int64(3)}}, float64(4), }, { "int32 values", - []sql.Row{{int32(1)}, {int32(1)}, {int32(1)}, {int32(3)}}, + []sql.UntypedSqlRow{{int32(1)}, {int32(1)}, {int32(1)}, {int32(3)}}, float64(4), }, { "int32 and nil values", - []sql.Row{{nil}, {int32(1)}, {int32(1)}, {int32(1)}, {int32(3)}, {nil}, {nil}}, + []sql.UntypedSqlRow{{nil}, {int32(1)}, {int32(1)}, {int32(1)}, {int32(3)}, {nil}, {nil}}, float64(4), }, } diff --git a/sql/expression/function/aggregation/unary_agg_buffers.go b/sql/expression/function/aggregation/unary_agg_buffers.go index ec631f3026..363716eeb8 100644 --- a/sql/expression/function/aggregation/unary_agg_buffers.go +++ b/sql/expression/function/aggregation/unary_agg_buffers.go @@ -402,7 +402,7 @@ func (c *countDistinctBuffer) Update(ctx *sql.Context, row sql.Row) error { if _, ok := c.exprs[0].(*expression.Star); ok { value = row } else { - val := make(sql.Row, len(c.exprs)) + val := sql.NewSqlRowWithLen(len(c.exprs)) for i, expr := range c.exprs { v, err := expr.Eval(ctx, row) if err != nil { @@ -412,13 +412,13 @@ func (c *countDistinctBuffer) Update(ctx *sql.Context, row sql.Row) error { if v == nil { return nil } - val[i] = v + val.SetValue(i, v) } value = val } var str string - for _, val := range value.(sql.Row) { + for _, val := range value.(sql.Row).Values() { // skip nil values if val == nil { return nil diff --git a/sql/expression/function/aggregation/window_framer.go b/sql/expression/function/aggregation/window_framer.go index ad3c80359f..0bceb950cc 100644 --- a/sql/expression/function/aggregation/window_framer.go +++ b/sql/expression/function/aggregation/window_framer.go @@ -564,7 +564,7 @@ func nextPeerGroup(ctx *sql.Context, pos, partitionEnd int, orderBy []sql.Expres if pos >= partitionEnd || pos > len(buffer) { return sql.WindowInterval{}, nil } - var row sql.Row + row := sql.NewUntypedRow() i := pos + 1 last := buffer[pos] for i < partitionEnd { @@ -583,7 +583,7 @@ func nextPeerGroup(ctx *sql.Context, pos, partitionEnd int, orderBy []sql.Expres // isNewOrderByValue compares the order by columns between two rows, returning true when the last row is null or // when the next row's orderBy columns are unique func isNewOrderByValue(ctx *sql.Context, orderByExprs []sql.Expression, last sql.Row, row sql.Row) (bool, error) { - if len(last) == 0 { + if last.Len() == 0 { return true, nil } @@ -597,8 +597,8 @@ func isNewOrderByValue(ctx *sql.Context, orderByExprs []sql.Expression, last sql return false, err } - for i := range lastExp { - if lastExp[i] != thisExp[i] { + for i := 0; i < lastExp.Len(); i++ { + if lastExp.GetValue(i) != thisExp.GetValue(i) { return true, nil } } diff --git a/sql/expression/function/aggregation/window_framer_test.go b/sql/expression/function/aggregation/window_framer_test.go index d504b94ca5..53e9a67da0 100644 --- a/sql/expression/function/aggregation/window_framer_test.go +++ b/sql/expression/function/aggregation/window_framer_test.go @@ -255,11 +255,11 @@ func TestWindowRangeFramers(t *testing.T) { }, } - buffer := []sql.Row{ + buffer := ConvertDefaultSqlSliceToInterface([]sql.UntypedSqlRow{ {0, 1}, {0, 1}, {0, 2}, {0, 4}, {0, 6}, {0, 6}, {0, 7}, {0, 8}, {0, 8}, {0, 9}, {1, 1}, {1, 1}, {1, 2}, {1, 4}, {1, 6}, {1, 6}, {2, 1}, {2, 2}, {2, 3}, - } + }) partitions := []sql.WindowInterval{ {}, // nil rows creates one empty partition {Start: 0, End: 10}, @@ -298,6 +298,14 @@ func TestWindowRangeFramers(t *testing.T) { } } +func ConvertDefaultSqlSliceToInterface(in []sql.UntypedSqlRow) []sql.Row { + out := make([]sql.Row, len(in)) + for i, r := range in { + out[i] = r + } + return out +} + type dummyFrame struct{} var _ sql.WindowFrame = (*dummyFrame)(nil) diff --git a/sql/expression/function/aggregation/window_functions.go b/sql/expression/function/aggregation/window_functions.go index ad6783f0e6..7620b167af 100644 --- a/sql/expression/function/aggregation/window_functions.go +++ b/sql/expression/function/aggregation/window_functions.go @@ -915,12 +915,12 @@ func (a *GroupConcatAgg) Compute(ctx *sql.Context, interval sql.WindowInterval, sb := strings.Builder{} for i, row := range rows { - lastIdx := len(row) - 1 + lastIdx := row.Len() - 1 if i == 0 { - sb.WriteString(row[lastIdx].(string)) + sb.WriteString(row.GetValue(lastIdx).(string)) } else { sb.WriteString(a.gc.separator) - sb.WriteString(row[lastIdx].(string)) + sb.WriteString(row.GetValue(lastIdx).(string)) } // Don't allow the string to cross maxlen @@ -958,9 +958,9 @@ func (a *GroupConcatAgg) filterToDistinct(ctx *sql.Context, buf sql.WindowBuffer var v interface{} if retType == types.Blob { - v, _, err = types.Blob.Convert(evalRow[0]) + v, _, err = types.Blob.Convert(evalRow.GetValue(0)) } else { - v, _, err = types.LongText.Convert(evalRow[0]) + v, _, err = types.LongText.Convert(evalRow.GetValue(0)) } if err != nil { @@ -986,7 +986,7 @@ func (a *GroupConcatAgg) filterToDistinct(ctx *sql.Context, buf sql.WindowBuffer // Append the current value to the end of the row. We want to preserve the row's original structure for // for sort ordering in the final step. - rows = append(rows, append(row, nil, vs)) + rows = append(rows, row.Append(sql.NewUntypedRow(nil, vs))) } return rows, distinct, nil } diff --git a/sql/expression/function/aggregation/window_functions_test.go b/sql/expression/function/aggregation/window_functions_test.go index 01164e9964..923f202e64 100644 --- a/sql/expression/function/aggregation/window_functions_test.go +++ b/sql/expression/function/aggregation/window_functions_test.go @@ -35,128 +35,128 @@ func TestGroupedAggFuncs(t *testing.T) { { Name: "count star", Agg: NewCountAgg(expression.NewStar()), - Expected: sql.Row{int64(4), int64(4), int64(6)}, + Expected: sql.UntypedSqlRow{int64(4), int64(4), int64(6)}, }, { Name: "count without nulls", Agg: NewCountAgg(expression.NewGetField(1, types.LongText, "x", true)), - Expected: sql.Row{int64(4), int64(4), int64(6)}, + Expected: sql.UntypedSqlRow{int64(4), int64(4), int64(6)}, }, { Name: "count with nulls", Agg: NewCountAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{int64(3), int64(3), int64(4)}, + Expected: sql.UntypedSqlRow{int64(3), int64(3), int64(4)}, }, { Name: "max ints", Agg: NewMaxAgg(expression.NewGetField(1, types.LongText, "x", true)), - Expected: sql.Row{4, 4, 6}, + Expected: sql.UntypedSqlRow{4, 4, 6}, }, { Name: "max int64", Agg: NewMaxAgg(expression.NewGetField(2, types.LongText, "x", true)), - Expected: sql.Row{int64(3), int64(3), int64(5)}, + Expected: sql.UntypedSqlRow{int64(3), int64(3), int64(5)}, }, { Name: "max w/ nulls", Agg: NewMaxAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{4, 4, 6}, + Expected: sql.UntypedSqlRow{4, 4, 6}, }, { Name: "max w/ float", Agg: NewMaxAgg(expression.NewGetField(3, types.LongText, "x", true)), - Expected: sql.Row{float64(4), float64(4), float64(6)}, + Expected: sql.UntypedSqlRow{float64(4), float64(4), float64(6)}, }, { Name: "min ints", Agg: NewMinAgg(expression.NewGetField(1, types.LongText, "x", true)), - Expected: sql.Row{1, 1, 1}, + Expected: sql.UntypedSqlRow{1, 1, 1}, }, { Name: "min int64", Agg: NewMinAgg(expression.NewGetField(2, types.LongText, "x", true)), - Expected: sql.Row{int64(1), int64(1), int64(1)}, + Expected: sql.UntypedSqlRow{int64(1), int64(1), int64(1)}, }, { Name: "min w/ nulls", Agg: NewMinAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{1, 1, 1}, + Expected: sql.UntypedSqlRow{1, 1, 1}, }, { Name: "min w/ float", Agg: NewMinAgg(expression.NewGetField(3, types.LongText, "x", true)), - Expected: sql.Row{float64(1), float64(1), float64(1)}, + Expected: sql.UntypedSqlRow{float64(1), float64(1), float64(1)}, }, { Name: "avg nulls", Agg: NewAvgAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{float64(8) / float64(3), float64(8) / float64(3), float64(14) / float64(4)}, + Expected: sql.UntypedSqlRow{float64(8) / float64(3), float64(8) / float64(3), float64(14) / float64(4)}, }, { Name: "avg int", Agg: NewAvgAgg(expression.NewGetField(1, types.LongText, "x", true)), - Expected: sql.Row{float64(10) / float64(4), float64(10) / float64(4), float64(21) / float64(6)}, + Expected: sql.UntypedSqlRow{float64(10) / float64(4), float64(10) / float64(4), float64(21) / float64(6)}, }, { Name: "avg int64", Agg: NewAvgAgg(expression.NewGetField(2, types.LongText, "x", true)), - Expected: sql.Row{float64(8) / float64(4), float64(8) / float64(4), float64(17) / float64(6)}, + Expected: sql.UntypedSqlRow{float64(8) / float64(4), float64(8) / float64(4), float64(17) / float64(6)}, }, { Name: "avg float", Agg: NewAvgAgg(expression.NewGetField(3, types.LongText, "x", true)), - Expected: sql.Row{float64(10) / float64(4), float64(10) / float64(4), float64(21) / float64(6)}, + Expected: sql.UntypedSqlRow{float64(10) / float64(4), float64(10) / float64(4), float64(21) / float64(6)}, }, { Name: "sum nulls", Agg: NewSumAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{float64(8), float64(8), float64(14)}, + Expected: sql.UntypedSqlRow{float64(8), float64(8), float64(14)}, }, { Name: "sum ints", Agg: NewSumAgg(expression.NewGetField(1, types.LongText, "x", true)), - Expected: sql.Row{float64(10), float64(10), float64(21)}, + Expected: sql.UntypedSqlRow{float64(10), float64(10), float64(21)}, }, { Name: "sum int64", Agg: NewSumAgg(expression.NewGetField(2, types.LongText, "x", true)), - Expected: sql.Row{float64(8), float64(8), float64(17)}, + Expected: sql.UntypedSqlRow{float64(8), float64(8), float64(17)}, }, { Name: "sum float64", Agg: NewSumAgg(expression.NewGetField(3, types.LongText, "x", true)), - Expected: sql.Row{float64(10), float64(10), float64(21)}, + Expected: sql.UntypedSqlRow{float64(10), float64(10), float64(21)}, }, { Name: "first", Agg: NewFirstAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{1, 1, 1}, + Expected: sql.UntypedSqlRow{1, 1, 1}, }, { Name: "last", Agg: NewLastAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{4, 4, 6}, + Expected: sql.UntypedSqlRow{4, 4, 6}, }, // list aggregations { Name: "group concat null", Agg: NewGroupConcatAgg(NewGroupConcat("", nil, ",", []sql.Expression{expression.NewGetField(0, types.LongText, "x", true)}, 1042)), - Expected: sql.Row{"1,3,4", "1,3,4", "1,2,5,6"}, + Expected: sql.UntypedSqlRow{"1,3,4", "1,3,4", "1,2,5,6"}, }, { Name: "group concat int", Agg: NewGroupConcatAgg(NewGroupConcat("", nil, ",", []sql.Expression{expression.NewGetField(1, types.LongText, "x", true)}, 1042)), - Expected: sql.Row{"1,2,3,4", "1,2,3,4", "1,2,3,4,5,6"}, + Expected: sql.UntypedSqlRow{"1,2,3,4", "1,2,3,4", "1,2,3,4,5,6"}, }, { Name: "group concat float", Agg: NewGroupConcatAgg(NewGroupConcat("", nil, ",", []sql.Expression{expression.NewGetField(3, types.LongText, "x", true)}, 1042)), - Expected: sql.Row{"1,2,3,4", "1,2,3,4", "1,2,3,4,5,6"}, + Expected: sql.UntypedSqlRow{"1,2,3,4", "1,2,3,4", "1,2,3,4,5,6"}, }, { Name: "json array null", Agg: NewJsonArrayAgg(expression.NewGetField(0, types.LongText, "x", true)), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: []interface{}{1, nil, 3, 4}}, types.JSONDocument{Val: []interface{}{1, nil, 3, 4}}, types.JSONDocument{Val: []interface{}{1, 2, nil, nil, 5, 6}}, @@ -165,7 +165,7 @@ func TestGroupedAggFuncs(t *testing.T) { { Name: "json array int", Agg: NewJsonArrayAgg(expression.NewGetField(1, types.LongText, "x", true)), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: []interface{}{1, 2, 3, 4}}, types.JSONDocument{Val: []interface{}{1, 2, 3, 4}}, types.JSONDocument{Val: []interface{}{1, 2, 3, 4, 5, 6}}, @@ -174,7 +174,7 @@ func TestGroupedAggFuncs(t *testing.T) { { Name: "json array float", Agg: NewJsonArrayAgg(expression.NewGetField(3, types.LongText, "x", true)), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: []interface{}{float64(1), float64(2), float64(3), float64(4)}}, types.JSONDocument{Val: []interface{}{float64(1), float64(2), float64(3), float64(4)}}, types.JSONDocument{Val: []interface{}{float64(1), float64(2), float64(3), float64(4), float64(5), float64(6)}}, @@ -188,7 +188,7 @@ func TestGroupedAggFuncs(t *testing.T) { expression.NewGetField(0, types.LongText, "y", true), ).(*JSONObjectAgg), ), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: map[string]interface{}{"1": 1, "2": nil, "3": 3, "4": 4}}, types.JSONDocument{Val: map[string]interface{}{"1": 1, "2": nil, "3": 3, "4": 4}}, types.JSONDocument{Val: map[string]interface{}{"1": 1, "2": 2, "3": nil, "4": nil, "5": 5, "6": 6}}, @@ -202,7 +202,7 @@ func TestGroupedAggFuncs(t *testing.T) { expression.NewGetField(0, types.LongText, "x", true), ).(*JSONObjectAgg), ), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: map[string]interface{}{"1": 1, "2": nil, "3": 3, "4": 4}}, types.JSONDocument{Val: map[string]interface{}{"1": 1, "2": nil, "3": 3, "4": 4}}, types.JSONDocument{Val: map[string]interface{}{"1": 1, "2": 2, "3": nil, "4": nil, "5": 5, "6": 6}}, @@ -216,7 +216,7 @@ func TestGroupedAggFuncs(t *testing.T) { expression.NewGetField(3, types.LongText, "x", true), ).(*JSONObjectAgg), ), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: map[string]interface{}{"1": float64(1), "2": float64(2), "3": float64(3), "4": float64(4)}}, types.JSONDocument{Val: map[string]interface{}{"1": float64(1), "2": float64(2), "3": float64(3), "4": float64(4)}}, types.JSONDocument{Val: map[string]interface{}{"1": float64(1), "2": float64(2), "3": float64(3), "4": float64(4), "5": float64(5), "6": float64(6)}}, @@ -230,7 +230,7 @@ func TestGroupedAggFuncs(t *testing.T) { expression.NewGetField(3, types.LongText, "x", true), ).(*JSONObjectAgg), ), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ types.JSONDocument{Val: map[string]interface{}{"1": float64(1), "2": float64(2), "3": float64(3), "4": float64(4)}}, types.JSONDocument{Val: map[string]interface{}{"1": float64(1), "2": float64(2), "3": float64(3), "4": float64(4)}}, types.JSONDocument{Val: map[string]interface{}{"1": float64(1), "2": float64(2), "3": float64(3), "4": float64(4), "5": float64(5), "6": float64(6)}}, @@ -238,7 +238,7 @@ func TestGroupedAggFuncs(t *testing.T) { }, } - buf := []sql.Row{ + buf := ConvertDefaultSqlSliceToInterface([]sql.UntypedSqlRow{ {1, 1, int64(1), float64(1), 1, 1}, {nil, 2, int64(2), float64(2), 1, 1}, {3, 3, int64(3), float64(3), 1, 2}, @@ -253,7 +253,7 @@ func TestGroupedAggFuncs(t *testing.T) { {nil, 4, int64(4), float64(4), 3}, {5, 5, int64(5), float64(5), 3}, {6, 6, int64(2), float64(6), 4}, - } + }) partitions := []sql.WindowInterval{ {Start: 0, End: 4}, @@ -264,7 +264,7 @@ func TestGroupedAggFuncs(t *testing.T) { for _, tt := range tests { t.Run(tt.Name, func(t *testing.T) { ctx := sql.NewEmptyContext() - res := make(sql.Row, len(partitions)) + res := make(sql.UntypedSqlRow, len(partitions)) for i, p := range partitions { err := tt.Agg.StartPartition(ctx, p, buf) require.NoError(t, err) @@ -284,7 +284,7 @@ func TestWindowedAggFuncs(t *testing.T) { { Name: "lag", Agg: NewLag(expression.NewGetField(1, types.LongText, "x", true), nil, 2), - Expected: sql.Row{nil, nil, 1, 2, nil, nil, 1, 2, nil, nil, 1, 2, 3, 4}, + Expected: sql.UntypedSqlRow{nil, nil, 1, 2, nil, nil, 1, 2, nil, nil, 1, 2, 3, 4}, }, { Name: "lag w/ default", @@ -293,7 +293,7 @@ func TestWindowedAggFuncs(t *testing.T) { expression.NewGetField(1, types.LongText, "x", true), 2, ), - Expected: sql.Row{1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4}, + Expected: sql.UntypedSqlRow{1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4}, }, { Name: "lag nil", @@ -302,12 +302,12 @@ func TestWindowedAggFuncs(t *testing.T) { nil, 1, ), - Expected: sql.Row{nil, 1, nil, 3, nil, 1, nil, 3, nil, 1, 2, nil, nil, 5}, + Expected: sql.UntypedSqlRow{nil, 1, nil, 3, nil, 1, nil, 3, nil, 1, 2, nil, nil, 5}, }, { Name: "lead", Agg: NewLead(expression.NewGetField(1, types.LongText, "x", true), nil, 2), - Expected: sql.Row{3, 4, nil, nil, 3, 4, nil, nil, 3, 4, 5, 6, nil, nil}, + Expected: sql.UntypedSqlRow{3, 4, nil, nil, 3, 4, nil, nil, 3, 4, 5, 6, nil, nil}, }, { Name: "lead w/ default", @@ -316,17 +316,17 @@ func TestWindowedAggFuncs(t *testing.T) { expression.NewGetField(1, types.LongText, "x", true), 2, ), - Expected: sql.Row{3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6}, + Expected: sql.UntypedSqlRow{3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6}, }, { Name: "row number", Agg: NewRowNumber(), - Expected: sql.Row{1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6}, + Expected: sql.UntypedSqlRow{1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6}, }, { Name: "percent rank no peers", Agg: NewPercentRank([]sql.Expression{}), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), float64(0), @@ -335,7 +335,7 @@ func TestWindowedAggFuncs(t *testing.T) { { Name: "percent rank peer groups", Agg: NewPercentRank([]sql.Expression{expression.NewGetField(5, types.LongText, "x", true)}), - Expected: sql.Row{ + Expected: sql.UntypedSqlRow{ float64(0), float64(0) / float64(3), float64(2) / float64(3), float64(3) / float64(3), float64(0), float64(1) / float64(3), float64(1) / float64(3), float64(3) / float64(3), float64(0), float64(1) / float64(5), float64(1) / float64(5), float64(3) / float64(5), float64(3) / float64(5), float64(1), @@ -343,7 +343,7 @@ func TestWindowedAggFuncs(t *testing.T) { }, } - buf := []sql.Row{ + buf := ConvertDefaultSqlSliceToInterface([]sql.UntypedSqlRow{ {1, 1, int64(1), float64(1), 1, 1}, {nil, 2, int64(2), float64(2), 1, 1}, {3, 3, int64(3), float64(3), 1, 2}, @@ -358,7 +358,7 @@ func TestWindowedAggFuncs(t *testing.T) { {nil, 4, int64(4), float64(4), 3, 5}, {5, 5, int64(5), float64(5), 3, 5}, {6, 6, int64(2), float64(6), 3, 6}, - } + }) partitions := []sql.WindowInterval{ {Start: 0, End: 4}, @@ -369,7 +369,7 @@ func TestWindowedAggFuncs(t *testing.T) { for _, tt := range tests { t.Run(tt.Name, func(t *testing.T) { ctx := sql.NewEmptyContext() - res := make(sql.Row, len(buf)) + res := make(sql.UntypedSqlRow, len(buf)) i := 0 for _, p := range partitions { err := tt.Agg.StartPartition(ctx, p, buf) diff --git a/sql/expression/function/aggregation/window_iter.go b/sql/expression/function/aggregation/window_iter.go index 14724a105d..e36cf36768 100644 --- a/sql/expression/function/aggregation/window_iter.go +++ b/sql/expression/function/aggregation/window_iter.go @@ -77,14 +77,14 @@ func (i *WindowIter) Next(ctx *sql.Context) (sql.Row, error) { } } - row := make(sql.Row, i.size()) + row := sql.NewSqlRowWithLen(i.size()) for j, pIter := range i.partitionIters { res, err := pIter.Next(ctx) if err != nil { return nil, err } for k, idx := range i.outputOrdinals[j] { - row[idx] = res[k] + row.SetValue(idx, res.GetValue(k)) } } return row, nil @@ -107,7 +107,7 @@ func (i *WindowIter) size() int { // TODO: share the child buffer and sort/partition inbetween WindowPartitionIters func (i *WindowIter) initializeIters(ctx *sql.Context) error { buf := make(sql.WindowBuffer, 0) - var row sql.Row + row := sql.NewUntypedRow() var err error for { // drain child iter into reusable buffer diff --git a/sql/expression/function/aggregation/window_iter_test.go b/sql/expression/function/aggregation/window_iter_test.go index b0ab2ee099..4bd327dc63 100644 --- a/sql/expression/function/aggregation/window_iter_test.go +++ b/sql/expression/function/aggregation/window_iter_test.go @@ -49,7 +49,7 @@ func TestWindowIter(t *testing.T) { Name string PartitionIters []*WindowPartitionIter OutputOrdinals [][]int - Expected []sql.Row + Expected []sql.UntypedSqlRow }{ { Name: "unbounded preceding to current row", @@ -73,7 +73,7 @@ func TestWindowIter(t *testing.T) { }), }, OutputOrdinals: [][]int{{0, 1}, {2}}, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"forest", float64(4), "wildflower"}, {"forest", float64(8), "wildflower"}, {"forest", float64(14), "wildflower"}, @@ -96,7 +96,7 @@ func TestWindowIter(t *testing.T) { i := NewWindowIter(tt.PartitionIters, tt.OutputOrdinals, mustNewRowIter(t, db, ctx)) res, err := sql.RowIterToRows(ctx, i) require.NoError(t, err) - require.Equal(t, tt.Expected, res) + require.Equal(t, tt.Expected, sql.RowsToUntyped(res)) }) } } diff --git a/sql/expression/function/aggregation/window_partition.go b/sql/expression/function/aggregation/window_partition.go index 26635911e0..81157c157d 100644 --- a/sql/expression/function/aggregation/window_partition.go +++ b/sql/expression/function/aggregation/window_partition.go @@ -170,7 +170,7 @@ func (i *WindowPartitionIter) materializeInput(ctx *sql.Context) (sql.WindowBuff } return nil, nil, err } - input = append(input, append(row, j)) + input = append(input, row.Append(sql.NewUntypedRow(j))) j++ } @@ -189,9 +189,9 @@ func (i *WindowPartitionIter) materializeInput(ctx *sql.Context) (sql.WindowBuff // maintain output sort ordering // TODO: push sort above aggregation, makes this code unnecessarily complex outputOrdering := make([]int, len(input)) - outputIdx := len(input[0]) - 1 + outputIdx := input[0].Len() - 1 for k, row := range input { - outputOrdering[k], input[k] = row[outputIdx].(int), row[:outputIdx] + outputOrdering[k], input[k] = row.GetValue(outputIdx).(int), row.Subslice(0, outputIdx) } return input, outputOrdering, nil @@ -209,7 +209,7 @@ func (i *WindowPartitionIter) initializePartitions(ctx *sql.Context) ([]sql.Wind partitions := make([]sql.WindowInterval, 0) startIdx := 0 - var lastRow sql.Row + var lastRow sql.Row = sql.UntypedSqlRow{} for j, row := range i.input { newPart, err := isNewPartition(ctx, i.w.PartitionBy, lastRow, row) if err != nil { @@ -240,7 +240,7 @@ func (i *WindowPartitionIter) materializeOutput(ctx *sql.Context) (sql.WindowBuf } output := make(sql.WindowBuffer, 0, len(i.input)) - var row sql.Row + row := sql.NewUntypedRow() var err error for { row, err = i.compute(ctx) @@ -258,7 +258,7 @@ func (i *WindowPartitionIter) materializeOutput(ctx *sql.Context) (sql.WindowBuf // compute evaluates each function in [i.Aggs], returning the result as an sql.Row with // the outputOrdering index appended, or an io.EOF error if we are finished iterating. func (i *WindowPartitionIter) compute(ctx *sql.Context) (sql.Row, error) { - var row = make(sql.Row, len(i.w.Aggs)+1) + var row = sql.NewSqlRowWithLen(len(i.w.Aggs) + 1) // each [agg] has its own [agg.framer] that is globally positioned // but updated independently. This allows aggregations with the same @@ -275,12 +275,12 @@ func (i *WindowPartitionIter) compute(ctx *sql.Context) (sql.Row, error) { return nil, err } } - row[j] = agg.fn.Compute(ctx, interval, i.input) + row.SetValue(j, agg.fn.Compute(ctx, interval, i.input)) } // TODO: move sort by above aggregation if len(i.outputOrdering) > 0 { - row[len(i.w.Aggs)] = i.outputOrdering[i.outputOrderingPos] + row.SetValue(len(i.w.Aggs), i.outputOrdering[i.outputOrderingPos]) } i.outputOrderingPos++ @@ -297,13 +297,13 @@ func (i *WindowPartitionIter) sortAndFilterOutput() error { return nil } - originalOrderIdx := len(i.output[0]) - 1 + originalOrderIdx := i.output[0].Len() - 1 sort.SliceStable(i.output, func(j, k int) bool { - return i.output[j][originalOrderIdx].(int) < i.output[k][originalOrderIdx].(int) + return i.output[j].GetValue(originalOrderIdx).(int) < i.output[k].GetValue(originalOrderIdx).(int) }) for j, row := range i.output { - i.output[j] = row[:originalOrderIdx] + i.output[j] = row.Subslice(0, originalOrderIdx) } return nil @@ -350,7 +350,7 @@ func partitionsToSortFields(partitionExprs []sql.Expression) sql.SortFields { } func isNewPartition(ctx *sql.Context, partitionBy []sql.Expression, last sql.Row, row sql.Row) (bool, error) { - if len(last) == 0 { + if last.Len() == 0 { return true, nil } @@ -369,7 +369,7 @@ func isNewPartition(ctx *sql.Context, partitionBy []sql.Expression, last sql.Row } for i, expr := range partitionBy { - cmp, err := expr.Type().Compare(lastExp[i], thisExp[i]) + cmp, err := expr.Type().Compare(lastExp.GetValue(i), thisExp.GetValue(i)) if err != nil { return false, err } diff --git a/sql/expression/function/aggregation/window_partition_test.go b/sql/expression/function/aggregation/window_partition_test.go index 3d8ed11108..a8b9db5b56 100644 --- a/sql/expression/function/aggregation/window_partition_test.go +++ b/sql/expression/function/aggregation/window_partition_test.go @@ -31,7 +31,7 @@ func TestWindowPartitionIter(t *testing.T) { tests := []struct { Name string Iter *WindowPartitionIter - Expected []sql.Row + Expected []sql.UntypedSqlRow }{ { Name: "group by", @@ -46,7 +46,7 @@ func TestWindowPartitionIter(t *testing.T) { }, }, ), - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"forest", "leaf", float64(27)}, {"desert", "sand", float64(23)}, }, @@ -63,7 +63,7 @@ func TestWindowPartitionIter(t *testing.T) { NewAggregation(sumZ, NewPartitionFramer()), }, }), - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"forest", "wildflower", float64(27)}, {"forest", "wildflower", float64(27)}, {"forest", "wildflower", float64(27)}, @@ -86,7 +86,7 @@ func TestWindowPartitionIter(t *testing.T) { tt.Iter.child = mustNewRowIter(t, db, ctx) res, err := sql.RowIterToRows(ctx, tt.Iter) require.NoError(t, err) - require.Equal(t, tt.Expected, res) + require.Equal(t, tt.Expected, sql.RowsToUntyped(res)) }) } } @@ -100,7 +100,7 @@ func mustNewRowIter(t *testing.T, db *memory.Database, ctx *sql.Context) sql.Row }) table := memory.NewTable(db, "test", childSchema, nil) - rows := []sql.Row{ + rows := []sql.UntypedSqlRow{ {int64(1), "forest", "leaf", int32(4)}, {int64(2), "forest", "bark", int32(4)}, {int64(3), "forest", "canopy", int32(6)}, @@ -142,7 +142,7 @@ func TestWindowPartition_MaterializeInput(t *testing.T) { buf, ordering, err := i.materializeInput(ctx) require.NoError(t, err) - expBuf := []sql.Row{ + expBuf := []sql.UntypedSqlRow{ {int64(1), "forest", "leaf", int32(4)}, {int64(2), "forest", "bark", int32(4)}, {int64(3), "forest", "canopy", int32(6)}, @@ -164,7 +164,7 @@ func TestWindowPartition_InitializePartitions(t *testing.T) { &WindowPartition{ PartitionBy: partitionByX, }) - i.input = []sql.Row{ + i.input = ConvertDefaultSqlSliceToInterface([]sql.UntypedSqlRow{ {int64(1), "forest", "leaf", int32(4)}, {int64(2), "forest", "bark", int32(4)}, {int64(3), "forest", "canopy", int32(6)}, @@ -174,7 +174,7 @@ func TestWindowPartition_InitializePartitions(t *testing.T) { {int64(7), "desert", "cactus", int32(6)}, {int64(8), "desert", "scorpion", int32(8)}, {int64(9), "desert", "mummy", int32(5)}, - } + }) partitions, err := i.initializePartitions(ctx) require.NoError(t, err) expPartitions := []sql.WindowInterval{ @@ -194,7 +194,7 @@ func TestWindowPartition_MaterializeOutput(t *testing.T) { NewAggregation(sumZ, NewGroupByFramer()), }, }) - i.input = []sql.Row{ + i.input = ConvertDefaultSqlSliceToInterface([]sql.UntypedSqlRow{ {int64(1), "forest", "leaf", 4}, {int64(2), "forest", "bark", 4}, {int64(3), "forest", "canopy", 6}, @@ -204,12 +204,12 @@ func TestWindowPartition_MaterializeOutput(t *testing.T) { {int64(7), "desert", "cactus", 6}, {int64(8), "desert", "scorpion", 8}, {int64(9), "desert", "mummy", 5}, - } + }) i.partitions = []sql.WindowInterval{{0, 5}, {5, 9}} i.outputOrdering = []int{0, 1, 2, 3, 4, 5, 6, 7, 8} output, err := i.materializeOutput(ctx) require.NoError(t, err) - expOutput := []sql.Row{ + expOutput := []sql.UntypedSqlRow{ {float64(27), 0}, {float64(23), 5}, } @@ -247,7 +247,7 @@ func TestWindowPartition_MaterializeOutput(t *testing.T) { i.outputOrdering = nil output, err := i.materializeOutput(ctx) require.NoError(t, err) - expOutput := []sql.Row{{int64(0), nil}} + expOutput := []sql.UntypedSqlRow{{int64(0), nil}} require.ElementsMatch(t, expOutput, output) }) } @@ -255,18 +255,18 @@ func TestWindowPartition_MaterializeOutput(t *testing.T) { func TestWindowPartition_SortAndFilterOutput(t *testing.T) { tests := []struct { Name string - Output []sql.Row - Expected []sql.Row + Output []sql.UntypedSqlRow + Expected []sql.UntypedSqlRow }{ { Name: "no input rows filtered before output, contiguous output indexes", - Output: []sql.Row{ + Output: []sql.UntypedSqlRow{ {0, 0}, {3, 3}, {2, 2}, {1, 1}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {2}, @@ -275,13 +275,13 @@ func TestWindowPartition_SortAndFilterOutput(t *testing.T) { }, { Name: "input rows filtered before output, non contiguous output indexes", - Output: []sql.Row{ + Output: []sql.UntypedSqlRow{ {0, 0}, {3, 3}, {2, 7}, {1, 1}, }, - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {0}, {1}, {3}, @@ -290,7 +290,7 @@ func TestWindowPartition_SortAndFilterOutput(t *testing.T) { }, { Name: "empty output", - Output: []sql.Row{}, + Output: []sql.UntypedSqlRow{}, Expected: nil, }, } @@ -298,7 +298,7 @@ func TestWindowPartition_SortAndFilterOutput(t *testing.T) { for _, tt := range tests { t.Run(tt.Name, func(t *testing.T) { i := NewWindowPartitionIter(&WindowPartition{}) - i.output = tt.Output + i.output = ConvertDefaultSqlSliceToInterface(tt.Output) err := i.sortAndFilterOutput() require.NoError(t, err) require.ElementsMatch(t, tt.Expected, i.output) diff --git a/sql/expression/function/convert_tz_test.go b/sql/expression/function/convert_tz_test.go index 934e9388b7..cc73207e2c 100644 --- a/sql/expression/function/convert_tz_test.go +++ b/sql/expression/function/convert_tz_test.go @@ -162,7 +162,7 @@ func TestConvertTz(t *testing.T) { time.Local = loc fn := NewConvertTz(expression.NewLiteral(test.datetime, types.Text), expression.NewLiteral(test.fromTimeZone, types.Text), expression.NewLiteral(test.toTimeZone, types.Text)) - res, err := fn.Eval(sql.NewEmptyContext(), sql.Row{}) + res, err := fn.Eval(sql.NewEmptyContext(), sql.UntypedSqlRow{}) require.NoError(t, err) assert.Equal(t, test.expectedResult, res) diff --git a/sql/expression/function/date_test.go b/sql/expression/function/date_test.go index 5231ad9f12..4c46629714 100644 --- a/sql/expression/function/date_test.go +++ b/sql/expression/function/date_test.go @@ -49,7 +49,7 @@ func TestAddDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = time.Date(2018, 5, 3, 0, 0, 0, 0, time.UTC) - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -58,7 +58,7 @@ func TestAddDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = time.Date(2018, 5, 3, 12, 34, 56, 0, time.UTC) - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -67,7 +67,7 @@ func TestAddDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = time.Date(2018, 5, 3, 12, 34, 56, 123456000, time.UTC) - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -77,7 +77,7 @@ func TestAddDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = "2018-05-03" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -86,7 +86,7 @@ func TestAddDate(t *testing.T) { expression.NewGetField(0, types.Text, "foo", false), expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) - result, err = f.Eval(ctx, sql.Row{"2018-05-02"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"2018-05-02"}) require.NoError(err) require.Equal(expected, result) @@ -95,7 +95,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-03" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -104,7 +104,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-03 12:34:56" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -113,7 +113,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-03 12:34:56.123000" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -122,7 +122,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-03 12:34:56.123456" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -131,7 +131,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "SECOND")) require.NoError(err) expected = "2018-05-02 00:00:01" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -140,7 +140,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(10), types.Int64), "MICROSECOND")) require.NoError(err) expected = "2018-05-02 00:00:00.000010" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -149,7 +149,7 @@ func TestAddDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "MICROSECOND")) require.NoError(err) expected = "2018-05-02 00:00:00.000001" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -157,7 +157,7 @@ func TestAddDate(t *testing.T) { f2, err := NewAddDate( expression.NewLiteral("2018-05-02", types.LongText), expression.NewGetField(0, types.Int64, "foo", true)) - result, err = f2.Eval(ctx, sql.Row{nil}) + result, err = f2.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(err) require.Nil(result) @@ -167,17 +167,17 @@ func TestAddDate(t *testing.T) { // If the date param is NULL, then NULL is returned require.NoError(err) - result, err = f.Eval(ctx, sql.Row{nil}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(err) require.Nil(result) // If a time is passed (and no date) then NULL is returned - result, err = f.Eval(ctx, sql.Row{"12:00:56"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"12:00:56"}) require.NoError(err) require.Nil(result) // If an invalid date is passed, then NULL is returned - result, err = f.Eval(ctx, sql.Row{"asdasdasd"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"asdasdasd"}) require.NoError(err) require.Nil(result) @@ -188,7 +188,7 @@ func TestAddDate(t *testing.T) { expression.NewLiteral(int64(1_000_000), types.Int64)) require.NoError(err) expected = "4756-03-29" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -218,19 +218,19 @@ func TestDateAdd(t *testing.T) { require.NoError(err) expected := "2018-05-03" - result, err := f.Eval(ctx, sql.Row{"2018-05-02"}) + result, err := f.Eval(ctx, sql.UntypedSqlRow{"2018-05-02"}) require.NoError(err) require.Equal(expected, result) - result, err = f.Eval(ctx, sql.Row{"12:34:56"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"12:34:56"}) require.NoError(err) require.Nil(result) - result, err = f.Eval(ctx, sql.Row{nil}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(err) require.Nil(result) - result, err = f.Eval(ctx, sql.Row{"asdasdasd"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"asdasdasd"}) require.NoError(err) require.Nil(result) } @@ -258,7 +258,7 @@ func TestSubDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = time.Date(2018, 5, 1, 0, 0, 0, 0, time.UTC) - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -267,7 +267,7 @@ func TestSubDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = time.Date(2018, 5, 1, 12, 34, 56, 0, time.UTC) - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -276,7 +276,7 @@ func TestSubDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = time.Date(2018, 5, 1, 12, 34, 56, 123456000, time.UTC) - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -286,7 +286,7 @@ func TestSubDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) require.NoError(err) expected = "2018-05-01" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -295,7 +295,7 @@ func TestSubDate(t *testing.T) { expression.NewGetField(0, types.Text, "foo", false), expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) - result, err = f.Eval(ctx, sql.Row{"2018-05-02"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"2018-05-02"}) require.NoError(err) require.Equal(expected, result) @@ -304,7 +304,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-01" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -313,7 +313,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-01 12:34:56" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -322,7 +322,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-01 12:34:56.123000" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -331,7 +331,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "DAY")) require.NoError(err) expected = "2018-05-01 12:34:56.123456" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -340,7 +340,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "SECOND")) require.NoError(err) expected = "2018-05-01 23:59:59" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -349,7 +349,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(10), types.Int64), "MICROSECOND")) require.NoError(err) expected = "2018-05-01 23:59:59.999990" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -358,7 +358,7 @@ func TestSubDate(t *testing.T) { expression.NewInterval(expression.NewLiteral(int64(1), types.Int64), "MICROSECOND")) require.NoError(err) expected = "2018-05-01 23:59:59.999999" - result, err = f.Eval(ctx, sql.Row{}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(expected, result) @@ -366,7 +366,7 @@ func TestSubDate(t *testing.T) { f2, err := NewSubDate( expression.NewLiteral("2018-05-02", types.LongText), expression.NewGetField(0, types.Int64, "foo", true)) - result, err = f2.Eval(ctx, sql.Row{nil}) + result, err = f2.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(err) require.Nil(result) @@ -375,17 +375,17 @@ func TestSubDate(t *testing.T) { expression.NewLiteral(int64(1), types.Int64)) // If the date param is NULL, then NULL is returned - result, err = f.Eval(ctx, sql.Row{nil}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(err) require.Nil(result) // If a time is passed (and no date) then NULL is returned - result, err = f.Eval(ctx, sql.Row{"12:00:56"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"12:00:56"}) require.NoError(err) require.Nil(result) // If an invalid date is passed, then NULL is returned - result, err = f.Eval(ctx, sql.Row{"asdasdasd"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"asdasdasd"}) require.NoError(err) require.Nil(result) } @@ -414,19 +414,19 @@ func TestDateSub(t *testing.T) { require.NoError(err) expected := "2018-05-01" - result, err := f.Eval(ctx, sql.Row{"2018-05-02"}) + result, err := f.Eval(ctx, sql.UntypedSqlRow{"2018-05-02"}) require.NoError(err) require.Equal(expected, result) - result, err = f.Eval(ctx, sql.Row{"12:34:56"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"12:34:56"}) require.NoError(err) require.Nil(result) - result, err = f.Eval(ctx, sql.Row{nil}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(err) require.Nil(result) - result, err = f.Eval(ctx, sql.Row{"asdasdasd"}) + result, err = f.Eval(ctx, sql.UntypedSqlRow{"asdasdasd"}) require.NoError(err) require.Nil(result) } diff --git a/sql/expression/function/if_test.go b/sql/expression/function/if_test.go index 2559f40438..9f8ecd7500 100644 --- a/sql/expression/function/if_test.go +++ b/sql/expression/function/if_test.go @@ -30,12 +30,12 @@ func TestIf(t *testing.T) { row sql.Row expected interface{} }{ - {eq(lit(1, types.Int64), lit(1, types.Int64)), sql.Row{"a", "b"}, "a"}, - {eq(lit(1, types.Int64), lit(0, types.Int64)), sql.Row{"a", "b"}, "b"}, - {eq(lit(1, types.Int64), lit(1, types.Int64)), sql.Row{1, 2}, 1}, - {eq(lit(1, types.Int64), lit(0, types.Int64)), sql.Row{1, 2}, 2}, - {eq(lit(nil, types.Int64), lit(1, types.Int64)), sql.Row{"a", "b"}, "b"}, - {eq(lit(1, types.Int64), lit(1, types.Int64)), sql.Row{nil, "b"}, nil}, + {eq(lit(1, types.Int64), lit(1, types.Int64)), sql.UntypedSqlRow{"a", "b"}, "a"}, + {eq(lit(1, types.Int64), lit(0, types.Int64)), sql.UntypedSqlRow{"a", "b"}, "b"}, + {eq(lit(1, types.Int64), lit(1, types.Int64)), sql.UntypedSqlRow{1, 2}, 1}, + {eq(lit(1, types.Int64), lit(0, types.Int64)), sql.UntypedSqlRow{1, 2}, 2}, + {eq(lit(nil, types.Int64), lit(1, types.Int64)), sql.UntypedSqlRow{"a", "b"}, "b"}, + {eq(lit(1, types.Int64), lit(1, types.Int64)), sql.UntypedSqlRow{nil, "b"}, nil}, } for _, tc := range testCases { diff --git a/sql/expression/function/json/json_array_test.go b/sql/expression/function/json/json_array_test.go index 8a131442e2..3167e195e8 100644 --- a/sql/expression/function/json/json_array_test.go +++ b/sql/expression/function/json/json_array_test.go @@ -60,14 +60,14 @@ func TestJSONArray(t *testing.T) { expected interface{} err error }{ - {f0, sql.Row{}, types.JSONDocument{Val: []interface{}{}}, nil}, - {f1, sql.Row{[]interface{}{1, 2}}, types.JSONDocument{Val: []interface{}{[]interface{}{1, 2}}}, nil}, - {f2, sql.Row{[]interface{}{1, 2}, "second item"}, types.JSONDocument{Val: []interface{}{[]interface{}{1, 2}, "second item"}}, nil}, - {f2, sql.Row{[]interface{}{1, 2}, map[string]interface{}{"name": "x"}}, types.JSONDocument{Val: []interface{}{[]interface{}{1, 2}, map[string]interface{}{"name": "x"}}}, nil}, - {f2, sql.Row{map[string]interface{}{"name": "x"}, map[string]interface{}{"id": 47}}, types.JSONDocument{Val: []interface{}{map[string]interface{}{"name": "x"}, map[string]interface{}{"id": 47}}}, nil}, - {f3, sql.Row{"foo", -44, "b"}, types.JSONDocument{Val: []interface{}{"foo", -44, "b"}}, nil}, - {f4, sql.Row{100, true, nil, "four"}, types.JSONDocument{Val: []interface{}{100, true, nil, "four"}}, nil}, - {f4, sql.Row{100.44, `{"name":null,"id":{"number":998,"type":"A"}}`, nil, `four`}, + {f0, sql.UntypedSqlRow{}, types.JSONDocument{Val: []interface{}{}}, nil}, + {f1, sql.UntypedSqlRow{[]interface{}{1, 2}}, types.JSONDocument{Val: []interface{}{[]interface{}{1, 2}}}, nil}, + {f2, sql.UntypedSqlRow{[]interface{}{1, 2}, "second item"}, types.JSONDocument{Val: []interface{}{[]interface{}{1, 2}, "second item"}}, nil}, + {f2, sql.UntypedSqlRow{[]interface{}{1, 2}, map[string]interface{}{"name": "x"}}, types.JSONDocument{Val: []interface{}{[]interface{}{1, 2}, map[string]interface{}{"name": "x"}}}, nil}, + {f2, sql.UntypedSqlRow{map[string]interface{}{"name": "x"}, map[string]interface{}{"id": 47}}, types.JSONDocument{Val: []interface{}{map[string]interface{}{"name": "x"}, map[string]interface{}{"id": 47}}}, nil}, + {f3, sql.UntypedSqlRow{"foo", -44, "b"}, types.JSONDocument{Val: []interface{}{"foo", -44, "b"}}, nil}, + {f4, sql.UntypedSqlRow{100, true, nil, "four"}, types.JSONDocument{Val: []interface{}{100, true, nil, "four"}}, nil}, + {f4, sql.UntypedSqlRow{100.44, `{"name":null,"id":{"number":998,"type":"A"}}`, nil, `four`}, types.JSONDocument{Val: []interface{}{100.44, "{\"name\":null,\"id\":{\"number\":998,\"type\":\"A\"}}", nil, "four"}}, nil}, } diff --git a/sql/expression/function/json/json_contains_test.go b/sql/expression/function/json/json_contains_test.go index 9b0e07e6e1..5a63c704d2 100644 --- a/sql/expression/function/json/json_contains_test.go +++ b/sql/expression/function/json/json_contains_test.go @@ -73,66 +73,66 @@ func TestJSONContains(t *testing.T) { err error }{ // JSON Array Tests - {f2, sql.Row{`[1, [1, 2, 3], 10]`, `[1, 10]`}, true, nil}, - {f2, sql.Row{`[1, [1, 2, 3, 10]]`, `[1, 10]`}, true, nil}, - {f2, sql.Row{`[1, [1, 2, 3], [10]]`, `[1, [10]]`}, true, nil}, - {f2, sql.Row{`[1, [1, 2, 3], [10]]`, `1`}, true, nil}, - {f2, sql.Row{`[1, [1, 2, 3], [10], {"e": 1, "f": 2}]`, `{"e": 1}`}, true, nil}, - {f2, sql.Row{`[1, [1, 2, 3], [10], {"e": [6, 7], "f": 2}]`, `[6, 7]`}, false, nil}, + {f2, sql.UntypedSqlRow{`[1, [1, 2, 3], 10]`, `[1, 10]`}, true, nil}, + {f2, sql.UntypedSqlRow{`[1, [1, 2, 3, 10]]`, `[1, 10]`}, true, nil}, + {f2, sql.UntypedSqlRow{`[1, [1, 2, 3], [10]]`, `[1, [10]]`}, true, nil}, + {f2, sql.UntypedSqlRow{`[1, [1, 2, 3], [10]]`, `1`}, true, nil}, + {f2, sql.UntypedSqlRow{`[1, [1, 2, 3], [10], {"e": 1, "f": 2}]`, `{"e": 1}`}, true, nil}, + {f2, sql.UntypedSqlRow{`[1, [1, 2, 3], [10], {"e": [6, 7], "f": 2}]`, `[6, 7]`}, false, nil}, // JSON Object Tests - {f2, sql.Row{`{"b": {"a": [1, 2, 3]}}`, `{"a": [1]}`}, false, nil}, - {f2, sql.Row{`{"a": [1, 2, 3, 4], "b": {"c": "foo", "d": true}}`, `{"a": [1]}`}, true, nil}, - {f2, sql.Row{`{"a": [1, 2, 3, 4], "b": {"c": "foo", "d": true}}`, `{"a": []}`}, true, nil}, - {f2, sql.Row{`{"a": [1, 2, 3, 4], "b": {"c": "foo", "d": true}}`, `{"a": {}}`}, false, nil}, - {f2, sql.Row{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `{"a": [2, 4]}`}, true, nil}, - {f2, sql.Row{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `[2]`}, false, nil}, - {f2, sql.Row{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `2`}, false, nil}, - {f2, sql.Row{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `"foo"`}, false, nil}, - {f2, sql.Row{"{\"a\": {\"foo\": [1, 2, 3]}}", "{\"a\": {\"foo\": [1]}}"}, true, nil}, - {f2, sql.Row{"{\"a\": {\"foo\": [1, 2, 3]}}", "{\"foo\": [1]}"}, false, nil}, - {f2, sql.Row{`null`, `null`}, true, nil}, - {f2, sql.Row{`null`, `1`}, false, nil}, + {f2, sql.UntypedSqlRow{`{"b": {"a": [1, 2, 3]}}`, `{"a": [1]}`}, false, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, 2, 3, 4], "b": {"c": "foo", "d": true}}`, `{"a": [1]}`}, true, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, 2, 3, 4], "b": {"c": "foo", "d": true}}`, `{"a": []}`}, true, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, 2, 3, 4], "b": {"c": "foo", "d": true}}`, `{"a": {}}`}, false, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `{"a": [2, 4]}`}, true, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `[2]`}, false, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `2`}, false, nil}, + {f2, sql.UntypedSqlRow{`{"a": [1, [2, 3], 4], "b": {"c": "foo", "d": true}}`, `"foo"`}, false, nil}, + {f2, sql.UntypedSqlRow{"{\"a\": {\"foo\": [1, 2, 3]}}", "{\"a\": {\"foo\": [1]}}"}, true, nil}, + {f2, sql.UntypedSqlRow{"{\"a\": {\"foo\": [1, 2, 3]}}", "{\"foo\": [1]}"}, false, nil}, + {f2, sql.UntypedSqlRow{`null`, `null`}, true, nil}, + {f2, sql.UntypedSqlRow{`null`, `1`}, false, nil}, // Path Tests - {f, sql.Row{json, json, "FOO"}, nil, errors.New("Invalid JSON path expression. Path must start with '$', but received: 'FOO'")}, - {f, sql.Row{1, nil, "$.a"}, nil, sql.ErrInvalidJSONArgument.New(1, "json_contains")}, - {f, sql.Row{`{"a"`, nil, "$.a"}, nil, sql.ErrInvalidJSONText.New(1, "json_contains", `{"a"`)}, - {f, sql.Row{json, 2, "$.e[0][*]"}, nil, sql.ErrInvalidJSONArgument.New(2, "json_contains")}, - {f, sql.Row{json, `}"a"`, "$.e[0][*]"}, nil, sql.ErrInvalidJSONText.New(2, "json_contains", `}"a"`)}, - {f, sql.Row{nil, json, "$.b.c"}, nil, nil}, - {f, sql.Row{json, nil, "$.b.c"}, nil, nil}, - {f, sql.Row{json, json, "$.foo"}, nil, nil}, - {f, sql.Row{json, `"foo"`, "$.b.c"}, true, nil}, - {f, sql.Row{json, `1`, "$.e[0][0]"}, true, nil}, - {f, sql.Row{json, `1`, "$.e[0][*]"}, true, nil}, - {f, sql.Row{json, `1`, "$.e[0][0]"}, true, nil}, - {f, sql.Row{json, `[1, 2]`, "$.e[0][*]"}, true, nil}, - {f, sql.Row{json, `[1, 2]`, "$.e[0]"}, true, nil}, - {f, sql.Row{json, json, "$"}, true, nil}, // reflexivity - {f, sql.Row{json, goodMap, "$.e"}, false, nil}, // The path statement selects an array, which does not contain goodMap - {f, sql.Row{json, badMap, "$"}, false, nil}, // false due to key name difference - {f, sql.Row{json, goodMap, "$"}, true, nil}, + {f, sql.UntypedSqlRow{json, json, "FOO"}, nil, errors.New("Invalid JSON path expression. Path must start with '$', but received: 'FOO'")}, + {f, sql.UntypedSqlRow{1, nil, "$.a"}, nil, sql.ErrInvalidJSONArgument.New(1, "json_contains")}, + {f, sql.UntypedSqlRow{`{"a"`, nil, "$.a"}, nil, sql.ErrInvalidJSONText.New(1, "json_contains", `{"a"`)}, + {f, sql.UntypedSqlRow{json, 2, "$.e[0][*]"}, nil, sql.ErrInvalidJSONArgument.New(2, "json_contains")}, + {f, sql.UntypedSqlRow{json, `}"a"`, "$.e[0][*]"}, nil, sql.ErrInvalidJSONText.New(2, "json_contains", `}"a"`)}, + {f, sql.UntypedSqlRow{nil, json, "$.b.c"}, nil, nil}, + {f, sql.UntypedSqlRow{json, nil, "$.b.c"}, nil, nil}, + {f, sql.UntypedSqlRow{json, json, "$.foo"}, nil, nil}, + {f, sql.UntypedSqlRow{json, `"foo"`, "$.b.c"}, true, nil}, + {f, sql.UntypedSqlRow{json, `1`, "$.e[0][0]"}, true, nil}, + {f, sql.UntypedSqlRow{json, `1`, "$.e[0][*]"}, true, nil}, + {f, sql.UntypedSqlRow{json, `1`, "$.e[0][0]"}, true, nil}, + {f, sql.UntypedSqlRow{json, `[1, 2]`, "$.e[0][*]"}, true, nil}, + {f, sql.UntypedSqlRow{json, `[1, 2]`, "$.e[0]"}, true, nil}, + {f, sql.UntypedSqlRow{json, json, "$"}, true, nil}, // reflexivity + {f, sql.UntypedSqlRow{json, goodMap, "$.e"}, false, nil}, // The path statement selects an array, which does not contain goodMap + {f, sql.UntypedSqlRow{json, badMap, "$"}, false, nil}, // false due to key name difference + {f, sql.UntypedSqlRow{json, goodMap, "$"}, true, nil}, // The only allowed path for a scalar document is "$" - {f, sql.Row{`null`, `10`, "$"}, false, nil}, - {f, sql.Row{`null`, `null`, "$"}, true, nil}, - {f, sql.Row{`10`, `10`, "$"}, true, nil}, - {f, sql.Row{`10`, `null`, "$"}, false, nil}, - {f, sql.Row{`null`, `10`, "$.b"}, nil, nil}, - {f, sql.Row{`10`, `null`, "$.b"}, nil, nil}, + {f, sql.UntypedSqlRow{`null`, `10`, "$"}, false, nil}, + {f, sql.UntypedSqlRow{`null`, `null`, "$"}, true, nil}, + {f, sql.UntypedSqlRow{`10`, `10`, "$"}, true, nil}, + {f, sql.UntypedSqlRow{`10`, `null`, "$"}, false, nil}, + {f, sql.UntypedSqlRow{`null`, `10`, "$.b"}, nil, nil}, + {f, sql.UntypedSqlRow{`10`, `null`, "$.b"}, nil, nil}, // JSON_CONTAINS can successfully look up JSON NULL with a path - {f, sql.Row{`{"a": null}`, `null`, "$.a"}, true, nil}, + {f, sql.UntypedSqlRow{`{"a": null}`, `null`, "$.a"}, true, nil}, // Miscellaneous Tests - {f2, sql.Row{json, `[1, 2]`}, false, nil}, // When testing containment against a map, scalars and arrays always return false - {f2, sql.Row{"[1,2,3,4]", `[1, 2]`}, true, nil}, - {f2, sql.Row{"[1,2,3,4]", `1`}, true, nil}, - {f2, sql.Row{`["apple", "orange", "banana"]`, `"orange"`}, true, nil}, - {f2, sql.Row{`"hello"`, `"hello"`}, true, nil}, - {f2, sql.Row{"{}", "{}"}, true, nil}, - {f2, sql.Row{"hello", "hello"}, nil, sql.ErrInvalidJSONText.New(1, "json_contains", "hello")}, - {f2, sql.Row{"[1,2", "[1]"}, nil, sql.ErrInvalidJSONText.New(1, "json_contains", "[1,2")}, - {f2, sql.Row{"[1,2]", "[1"}, nil, sql.ErrInvalidJSONText.New(2, "json_contains", "[1")}, + {f2, sql.UntypedSqlRow{json, `[1, 2]`}, false, nil}, // When testing containment against a map, scalars and arrays always return false + {f2, sql.UntypedSqlRow{"[1,2,3,4]", `[1, 2]`}, true, nil}, + {f2, sql.UntypedSqlRow{"[1,2,3,4]", `1`}, true, nil}, + {f2, sql.UntypedSqlRow{`["apple", "orange", "banana"]`, `"orange"`}, true, nil}, + {f2, sql.UntypedSqlRow{`"hello"`, `"hello"`}, true, nil}, + {f2, sql.UntypedSqlRow{"{}", "{}"}, true, nil}, + {f2, sql.UntypedSqlRow{"hello", "hello"}, nil, sql.ErrInvalidJSONText.New(1, "json_contains", "hello")}, + {f2, sql.UntypedSqlRow{"[1,2", "[1]"}, nil, sql.ErrInvalidJSONText.New(1, "json_contains", "[1,2")}, + {f2, sql.UntypedSqlRow{"[1,2]", "[1"}, nil, sql.ErrInvalidJSONText.New(2, "json_contains", "[1")}, } for _, tt := range testCases { diff --git a/sql/expression/function/json/json_search.go b/sql/expression/function/json/json_search.go index 36c46a9dbe..c2797e65be 100644 --- a/sql/expression/function/json/json_search.go +++ b/sql/expression/function/json/json_search.go @@ -26,7 +26,7 @@ import ( "github.com/dolthub/go-mysql-server/sql/types" ) -// JSONSearch (json_doc, one_or_all, search_str[, escape_char[, path] ...]) +// JSONSearch (json_doc, one_or_all, search_str.GetValue(, escape_char[, path] ...)) // // JSONSearch Returns the path to the given string within a JSON document. Returns NULL if any of the json_doc, // search_str, or path arguments are NULL; no path exists within the document; or search_str is not found. An error diff --git a/sql/expression/function/json/jsontests/json_array_append_test.go b/sql/expression/function/json/jsontests/json_array_append_test.go index f584adf27b..88c712af11 100644 --- a/sql/expression/function/json/jsontests/json_array_append_test.go +++ b/sql/expression/function/json/jsontests/json_array_append_test.go @@ -43,27 +43,27 @@ func TestArrayAppend(t *testing.T) { err error }{ - {f1, sql.Row{jsonInput, "$.b[0]", 4.1}, `{"a": 1, "b": [[2,4.1], 3], "c": {"d": "foo"}}`, nil}, - {f1, sql.Row{jsonInput, "$.a", 4.1}, `{"a": [1, 4.1], "b": [2, 3], "c": {"d": "foo"}}`, nil}, - {f1, sql.Row{jsonInput, "$.e", "new"}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$.c.d", "test"}, `{"a": 1, "b": [2, 3], "c": {"d": ["foo", "test"]}}`, nil}, - {f2, sql.Row{jsonInput, "$.b[0]", 4.1, "$.c.d", "test"}, `{"a": 1, "b": [[2, 4.1], 3], "c": {"d": ["foo", "test"]}}`, nil}, - {f1, sql.Row{jsonInput, "$.b[5]", 4.1}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$.b.c", 4}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$.a[51]", 4.1}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$.a[last-1]", 4.1}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$.a[0]", 4.1}, `{"a": [1, 4.1], "b": [2, 3], "c": {"d": "foo"}}`, nil}, - {f1, sql.Row{jsonInput, "$.a[last]", 4.1}, `{"a": [1, 4.1], "b": [2, 3], "c": {"d": "foo"}}`, nil}, - {f1, sql.Row{jsonInput, "$[0]", 4.1}, `[{"a": 1, "b": [2, 3], "c": {"d": "foo"}}, 4.1]`, nil}, - {f1, sql.Row{jsonInput, "$.[0]", 4.1}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]")}, - {f1, sql.Row{jsonInput, "foo", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Path must start with '$'")}, - {f1, sql.Row{jsonInput, "$.c.*", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*")}, - {f1, sql.Row{jsonInput, "$.c.**", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**")}, - {f1, sql.Row{1, "$", "test"}, nil, sql.ErrInvalidJSONArgument.New(1, "json_array_append")}, - {f1, sql.Row{`}`, "$", "test"}, nil, sql.ErrInvalidJSONText.New(1, "json_array_append", `}`)}, - {f1, sql.Row{jsonInput, "$", 10.1}, `[{"a": 1, "b": [2, 3], "c": {"d": "foo"}}, 10.1]`, nil}, - {f1, sql.Row{nil, "$", 42.7}, nil, nil}, - {f1, sql.Row{jsonInput, nil, 10}, nil, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.b[0]", 4.1}, `{"a": 1, "b": [[2,4.1], 3], "c": {"d": "foo"}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a", 4.1}, `{"a": [1, 4.1], "b": [2, 3], "c": {"d": "foo"}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.e", "new"}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.c.d", "test"}, `{"a": 1, "b": [2, 3], "c": {"d": ["foo", "test"]}}`, nil}, + {f2, sql.UntypedSqlRow{jsonInput, "$.b[0]", 4.1, "$.c.d", "test"}, `{"a": 1, "b": [[2, 4.1], 3], "c": {"d": ["foo", "test"]}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.b[5]", 4.1}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.b.c", 4}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a[51]", 4.1}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a[last-1]", 4.1}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a[0]", 4.1}, `{"a": [1, 4.1], "b": [2, 3], "c": {"d": "foo"}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a[last]", 4.1}, `{"a": [1, 4.1], "b": [2, 3], "c": {"d": "foo"}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$[0]", 4.1}, `[{"a": 1, "b": [2, 3], "c": {"d": "foo"}}, 4.1]`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.[0]", 4.1}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]")}, + {f1, sql.UntypedSqlRow{jsonInput, "foo", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Path must start with '$'")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.c.*", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.c.**", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**")}, + {f1, sql.UntypedSqlRow{1, "$", "test"}, nil, sql.ErrInvalidJSONArgument.New(1, "json_array_append")}, + {f1, sql.UntypedSqlRow{`}`, "$", "test"}, nil, sql.ErrInvalidJSONText.New(1, "json_array_append", `}`)}, + {f1, sql.UntypedSqlRow{jsonInput, "$", 10.1}, `[{"a": 1, "b": [2, 3], "c": {"d": "foo"}}, 10.1]`, nil}, + {f1, sql.UntypedSqlRow{nil, "$", 42.7}, nil, nil}, + {f1, sql.UntypedSqlRow{jsonInput, nil, 10}, nil, nil}, // mysql> select JSON_ARRAY_APPEND(JSON_ARRAY(1,2,3), "$[1]", 51, "$[1]", 52, "$[1]", 53); // +--------------------------------------------------------------------------+ @@ -72,7 +72,7 @@ func TestArrayAppend(t *testing.T) { // | [1, [2, 51, 52, 53], 3] | // +--------------------------------------------------------------------------+ {buildGetFieldExpressions(t, json.NewJSONArrayAppend, 7), - sql.Row{`[1.0,2.0,3.0]`, + sql.UntypedSqlRow{`[1.0,2.0,3.0]`, "$[1]", 51.0, // [1, 2, 3] -> [1, [2, 51], 3] "$[1]", 52.0, // [1, [2, 51], 2, 3] -> [1, [2, 51, 52] 3] "$[1]", 53.0, // [1, [2, 51, 52], 3] -> [1, [2, 51, 52, 53], 3] @@ -82,7 +82,7 @@ func TestArrayAppend(t *testing.T) { for _, tstC := range testCases { var paths []string - for _, path := range tstC.row[1:] { + for _, path := range tstC.row.Values()[1:] { if _, ok := path.(string); ok { paths = append(paths, path.(string)) } diff --git a/sql/expression/function/json/jsontests/json_array_insert_test.go b/sql/expression/function/json/jsontests/json_array_insert_test.go index 9a7bbc54cd..62f56c787a 100644 --- a/sql/expression/function/json/jsontests/json_array_insert_test.go +++ b/sql/expression/function/json/jsontests/json_array_insert_test.go @@ -47,25 +47,25 @@ func TestArrayInsert(t *testing.T) { // find one, it reports an error about the path expression. If the object lookup does find an array, then it // inserts the value at the index. If the index is out of range, it inserts at the appropriate end of the array // (similar to other jsonInput mutating functions). Finally, if the object lookup finds a non-array, it's a no-op. - {f1, sql.Row{jsonInput, "$.b[0]", 4.1}, `{"a": 1, "b": [4.1, 2, 3], "c": {"d": "foo"}}`, nil}, - {f1, sql.Row{jsonInput, "$.a", 2}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 3 of $.a")}, - {f1, sql.Row{jsonInput, "$.e", "new"}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 3 of $.e")}, - {f1, sql.Row{jsonInput, "$.c.d", "test"}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 5 of $.c.d")}, - {f2, sql.Row{jsonInput, "$.b[0]", 4.1, "$.c.d", "test"}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 5 of $.c.d")}, - {f1, sql.Row{jsonInput, "$.b[5]", 4.1}, `{"a": 1, "b": [2, 3, 4.1], "c": {"d": "foo"}}`, nil}, - {f1, sql.Row{jsonInput, "$.b.c", 4}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 4 of $.b.c")}, - {f1, sql.Row{jsonInput, "$.a[0]", 4.1}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$[0]", 4.1}, jsonInput, nil}, - {f1, sql.Row{jsonInput, "$.[0]", 4.1}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]")}, - {f1, sql.Row{jsonInput, "foo", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Path must start with '$'")}, - {f1, sql.Row{jsonInput, "$.c.*", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*")}, - {f1, sql.Row{jsonInput, "$.c.**", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**")}, - {f1, sql.Row{1, "$", "test"}, nil, sql.ErrInvalidJSONArgument.New(1, "json_array_insert")}, - {f1, sql.Row{`}`, "$", "test"}, nil, sql.ErrInvalidJSONText.New(1, "json_array_insert", `}`)}, + {f1, sql.UntypedSqlRow{jsonInput, "$.b[0]", 4.1}, `{"a": 1, "b": [4.1, 2, 3], "c": {"d": "foo"}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a", 2}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 3 of $.a")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.e", "new"}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 3 of $.e")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.c.d", "test"}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 5 of $.c.d")}, + {f2, sql.UntypedSqlRow{jsonInput, "$.b[0]", 4.1, "$.c.d", "test"}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 5 of $.c.d")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.b[5]", 4.1}, `{"a": 1, "b": [2, 3, 4.1], "c": {"d": "foo"}}`, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.b.c", 4}, nil, fmt.Errorf("A path expression is not a path to a cell in an array at character 4 of $.b.c")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.a[0]", 4.1}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$[0]", 4.1}, jsonInput, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$.[0]", 4.1}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]")}, + {f1, sql.UntypedSqlRow{jsonInput, "foo", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Path must start with '$'")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.c.*", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*")}, + {f1, sql.UntypedSqlRow{jsonInput, "$.c.**", "test"}, nil, fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**")}, + {f1, sql.UntypedSqlRow{1, "$", "test"}, nil, sql.ErrInvalidJSONArgument.New(1, "json_array_insert")}, + {f1, sql.UntypedSqlRow{`}`, "$", "test"}, nil, sql.ErrInvalidJSONText.New(1, "json_array_insert", `}`)}, - {f1, sql.Row{jsonInput, "$", 10.1}, nil, fmt.Errorf("Path expression is not a path to a cell in an array: $")}, - {f1, sql.Row{nil, "$", 42.7}, nil, nil}, - {f1, sql.Row{jsonInput, nil, 10}, nil, nil}, + {f1, sql.UntypedSqlRow{jsonInput, "$", 10.1}, nil, fmt.Errorf("Path expression is not a path to a cell in an array: $")}, + {f1, sql.UntypedSqlRow{nil, "$", 42.7}, nil, nil}, + {f1, sql.UntypedSqlRow{jsonInput, nil, 10}, nil, nil}, // mysql> select JSON_ARRAY_INSERT(JSON_ARRAY(1,2,3), "$[1]", 51, "$[1]", 52, "$[1]", 53); //+--------------------------------------------------------------------------+ @@ -74,7 +74,7 @@ func TestArrayInsert(t *testing.T) { //| [1, 53, 52, 51, 2, 3] | //+--------------------------------------------------------------------------+ {buildGetFieldExpressions(t, json.NewJSONArrayInsert, 7), - sql.Row{`[1.0,2.0,3.0]`, + sql.UntypedSqlRow{`[1.0,2.0,3.0]`, "$[1]", 51.0, // [1, 2, 3] -> [1, 51, 2, 3] "$[1]", 52.0, // [1, 51, 2, 3] -> [1, 52, 51, 2, 3] "$[1]", 53.0, // [1, 52, 51, 2, 3] -> [1, 53, 52, 51, 2, 3] @@ -84,7 +84,7 @@ func TestArrayInsert(t *testing.T) { for _, tstC := range testCases { var paths []string - for _, path := range tstC.row[1:] { + for _, path := range tstC.row.Values()[1:] { if _, ok := path.(string); ok { paths = append(paths, path.(string)) } diff --git a/sql/expression/function/json/jsontests/json_contains_path_tests.go b/sql/expression/function/json/jsontests/json_contains_path_tests.go index 9d146a672a..aa0754d1b2 100644 --- a/sql/expression/function/json/jsontests/json_contains_path_tests.go +++ b/sql/expression/function/json/jsontests/json_contains_path_tests.go @@ -54,34 +54,34 @@ func JsonContainsPathTestCases(t *testing.T, prepare prepareJsonValue) []testCas require.NoError(t, err) return []testCase{ - {f: onePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `oNe`, `$.a`}, expected: true}, - {f: onePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `one`, `$.e`}, expected: false}, - {f: onePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `all`, `$.e`}, expected: false}, - {f: onePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `All`, `$.c.d`}, expected: true}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `oNe`, `$.a`}, expected: true}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `one`, `$.e`}, expected: false}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `all`, `$.e`}, expected: false}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `All`, `$.c.d`}, expected: true}, - {f: onePath, row: sql.Row{prepare(t, `[]`), `one`, `$[1]`}, expected: false}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `[]`), `one`, `$[1]`}, expected: false}, - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `one`, `$.a`, `$.e`}, expected: true}, - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `ALL`, `$.a`, `$.e`}, expected: false}, + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `one`, `$.a`, `$.e`}, expected: true}, + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": 4}}`), `ALL`, `$.a`, `$.e`}, expected: false}, - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `all`, `$.a`, `$.c.d.e`}, expected: true}, - {f: threePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `all`, `$.a`, `$.c.d.e`, `$.x`}, expected: false}, - {f: threePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `one`, `$.a`, `$.c.d.e`, `$.x`}, expected: true}, + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `all`, `$.a`, `$.c.d.e`}, expected: true}, + {f: threePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `all`, `$.a`, `$.c.d.e`, `$.x`}, expected: false}, + {f: threePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `one`, `$.a`, `$.c.d.e`, `$.x`}, expected: true}, // NULL inputs. Any NULL should result in NULL output. - {f: onePath, row: sql.Row{nil, `one`, `$.a`}, expected: nil}, - {f: onePath, row: sql.Row{prepare(t, `{"a": 1}`), nil, `$.a`}, expected: nil}, - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1}`), `one`, `$.a`, nil}, expected: true}, // Match MySQL behavior, not docs. - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1}`), `one`, nil, `$.a`}, expected: nil}, - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1}`), "all", `$.x`, nil}, expected: false}, // Match MySQL behavior, not docs. - {f: twoPath, row: sql.Row{prepare(t, `{"a": 1}`), `all`, `$.a`, nil}, expected: nil}, + {f: onePath, row: sql.UntypedSqlRow{nil, `one`, `$.a`}, expected: nil}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), nil, `$.a`}, expected: nil}, + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), `one`, `$.a`, nil}, expected: true}, // Match MySQL behavior, not docs. + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), `one`, nil, `$.a`}, expected: nil}, + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), "all", `$.x`, nil}, expected: false}, // Match MySQL behavior, not docs. + {f: twoPath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), `all`, `$.a`, nil}, expected: nil}, // JSON NULL documents do NOT result in NULL output. - {f: onePath, row: sql.Row{prepare(t, `null`), `all`, `$.a`}, expected: false}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `null`), `all`, `$.a`}, expected: false}, // Error cases - {f: onePath, row: sql.Row{prepare(t, `{"a": 1}`), `None`, `$.a`}, err: errors.New("The oneOrAll argument to json_contains_path may take these values: 'one' or 'all'")}, - {f: onePath, row: sql.Row{`{"a": 1`, `One`, `$.a`}, err: sql.ErrInvalidJSONText.New(1, "json_contains_path", `{"a": 1`)}, - {f: threePath, row: sql.Row{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `one`, 42, `$.c.d.e`, `$.x`}, err: errors.New(`Invalid JSON path expression. Path must start with '$', but received: '42'`)}, + {f: onePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), `None`, `$.a`}, err: errors.New("The oneOrAll argument to json_contains_path may take these values: 'one' or 'all'")}, + {f: onePath, row: sql.UntypedSqlRow{`{"a": 1`, `One`, `$.a`}, err: sql.ErrInvalidJSONText.New(1, "json_contains_path", `{"a": 1`)}, + {f: threePath, row: sql.UntypedSqlRow{prepare(t, `{"a": 1, "b": 2, "c": {"d": {"e" : 42}}}`), `one`, 42, `$.c.d.e`, `$.x`}, err: errors.New(`Invalid JSON path expression. Path must start with '$', but received: '42'`)}, } } diff --git a/sql/expression/function/json/jsontests/json_depth_test.go b/sql/expression/function/json/jsontests/json_depth_test.go index 8f343b6f54..6aa768623f 100644 --- a/sql/expression/function/json/jsontests/json_depth_test.go +++ b/sql/expression/function/json/jsontests/json_depth_test.go @@ -33,119 +33,119 @@ func TestJSONDepth(t *testing.T) { f1 := buildGetFieldExpressions(t, json.NewJSONDepth, 1) testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ { f: f1, - row: sql.Row{``}, + row: sql.UntypedSqlRow{``}, err: sql.ErrInvalidJSONText.New(1, "json_depth", ``), }, { f: f1, - row: sql.Row{`badjson`}, + row: sql.UntypedSqlRow{`badjson`}, err: sql.ErrInvalidJSONText.New(1, "json_depth", `badjson`), }, { f: f1, - row: sql.Row{true}, + row: sql.UntypedSqlRow{true}, err: sql.ErrInvalidJSONArgument.New(1, "json_depth"), }, { f: f1, - row: sql.Row{1}, + row: sql.UntypedSqlRow{1}, err: sql.ErrInvalidJSONArgument.New(1, "json_depth"), }, { f: f1, - row: sql.Row{nil}, + row: sql.UntypedSqlRow{nil}, exp: nil, }, { f: f1, - row: sql.Row{`null`}, + row: sql.UntypedSqlRow{`null`}, exp: 1, }, { f: f1, - row: sql.Row{`1`}, + row: sql.UntypedSqlRow{`1`}, exp: 1, }, { f: f1, - row: sql.Row{`true`}, + row: sql.UntypedSqlRow{`true`}, exp: 1, }, { f: f1, - row: sql.Row{`123.456`}, + row: sql.UntypedSqlRow{`123.456`}, exp: 1, }, { f: f1, - row: sql.Row{`"abcdef"`}, + row: sql.UntypedSqlRow{`"abcdef"`}, exp: 1, }, { f: f1, - row: sql.Row{`[]`}, + row: sql.UntypedSqlRow{`[]`}, exp: 1, }, { f: f1, - row: sql.Row{`{}`}, + row: sql.UntypedSqlRow{`{}`}, exp: 1, }, { f: f1, - row: sql.Row{`[null]`}, + row: sql.UntypedSqlRow{`[null]`}, exp: 2, }, { f: f1, - row: sql.Row{`{"a": null}`}, + row: sql.UntypedSqlRow{`{"a": null}`}, exp: 2, }, { f: f1, - row: sql.Row{`[1]`}, + row: sql.UntypedSqlRow{`[1]`}, exp: 2, }, { f: f1, - row: sql.Row{`{"a": 1}`}, + row: sql.UntypedSqlRow{`{"a": 1}`}, exp: 2, }, { f: f1, - row: sql.Row{`[1, 2, 3]`}, + row: sql.UntypedSqlRow{`[1, 2, 3]`}, exp: 2, }, { f: f1, - row: sql.Row{`{"aa": 1, "bb": 2, "c": 3}`}, + row: sql.UntypedSqlRow{`{"aa": 1, "bb": 2, "c": 3}`}, exp: 2, }, { f: f1, - row: sql.Row{`{"a": 1, "b": [1, 2, 3]}`}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [1, 2, 3]}`}, exp: 3, }, { f: f1, - row: sql.Row{`[0, {"a": 1, "b": 2}]`}, + row: sql.UntypedSqlRow{`[0, {"a": 1, "b": 2}]`}, exp: 3, }, { f: f1, - row: sql.Row{`{"a": 1, "b": {"aa": 1, "bb": {"aaa": 1, "bbb": {"aaaa": 1}}}}`}, + row: sql.UntypedSqlRow{`{"a": 1, "b": {"aa": 1, "bb": {"aaa": 1, "bbb": {"aaaa": 1}}}}`}, exp: 5, }, } diff --git a/sql/expression/function/json/jsontests/json_extract_tests.go b/sql/expression/function/json/jsontests/json_extract_tests.go index 58e74a96ca..06550659b6 100644 --- a/sql/expression/function/json/jsontests/json_extract_tests.go +++ b/sql/expression/function/json/jsontests/json_extract_tests.go @@ -72,41 +72,41 @@ func JsonExtractTestCases(t *testing.T, prepare prepareJsonValue) []testCase { jsonInput := prepare(t, jsonBytes) return []testCase{ - //{f2, sql.Row{json, "FOO"}, nil, errors.New("should start with '$'")}, - {f: f2, row: sql.Row{nil, "$"}}, - {f: f2, row: sql.Row{nil, "$.b.c"}}, - {f: f2, row: sql.Row{"null", "$"}, expected: types.JSONDocument{Val: nil}}, - {f: f2, row: sql.Row{"null", "$.b.c"}}, - {f: f2, row: sql.Row{jsonInput, "$.foo"}}, - {f: f2, row: sql.Row{jsonInput, "$.a[4]"}}, - {f: f2, row: sql.Row{jsonInput, "$.b.c"}, expected: types.JSONDocument{Val: "foo"}}, + //{f2, sql.UntypedSqlRow{json, "FOO"}, nil, errors.New("should start with '$'")}, + {f: f2, row: sql.UntypedSqlRow{nil, "$"}}, + {f: f2, row: sql.UntypedSqlRow{nil, "$.b.c"}}, + {f: f2, row: sql.UntypedSqlRow{"null", "$"}, expected: types.JSONDocument{Val: nil}}, + {f: f2, row: sql.UntypedSqlRow{"null", "$.b.c"}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, "$.foo"}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, "$.a[4]"}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, "$.b.c"}, expected: types.JSONDocument{Val: "foo"}}, { f: f2, - row: sql.Row{prepare(t, `[{"a": 1, "b": 2}, {"a": 3, "b": 4}]`), "$[*].a"}, + row: sql.UntypedSqlRow{prepare(t, `[{"a": 1, "b": 2}, {"a": 3, "b": 4}]`), "$[*].a"}, expected: types.JSONDocument{Val: []interface{}{1, 3}}, }, - {f: f3, row: sql.Row{jsonInput, "$.b.c", "$.b.d"}, expected: types.JSONDocument{Val: []interface{}{"foo", true}}}, - {f: f4, row: sql.Row{jsonInput, "$.b.c", "$.b.d", "$.e[0][*]"}, expected: types.JSONDocument{Val: []interface{}{ + {f: f3, row: sql.UntypedSqlRow{jsonInput, "$.b.c", "$.b.d"}, expected: types.JSONDocument{Val: []interface{}{"foo", true}}}, + {f: f4, row: sql.UntypedSqlRow{jsonInput, "$.b.c", "$.b.d", "$.e[0][*]"}, expected: types.JSONDocument{Val: []interface{}{ "foo", true, []interface{}{1., 2.}, }}}, - {f: f2, row: sql.Row{jsonInput, `$.f."key.with.dots"`}, expected: types.JSONDocument{Val: float64(0)}}, - {f: f2, row: sql.Row{jsonInput, `$.f."key with spaces"`}, expected: types.JSONDocument{Val: float64(1)}}, - {f: f2, row: sql.Row{jsonInput, `$.f.key with spaces`}, expected: types.JSONDocument{Val: float64(1)}}, - {f: f2, row: sql.Row{jsonInput, `$.f.key'with'squotes`}, expected: types.JSONDocument{Val: float64(3)}}, - {f: f2, row: sql.Row{jsonInput, `$.f."key'with'squotes"`}, expected: types.JSONDocument{Val: float64(3)}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, `$.f."key.with.dots"`}, expected: types.JSONDocument{Val: float64(0)}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, `$.f."key with spaces"`}, expected: types.JSONDocument{Val: float64(1)}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, `$.f.key with spaces`}, expected: types.JSONDocument{Val: float64(1)}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, `$.f.key'with'squotes`}, expected: types.JSONDocument{Val: float64(3)}}, + {f: f2, row: sql.UntypedSqlRow{jsonInput, `$.f."key'with'squotes"`}, expected: types.JSONDocument{Val: float64(3)}}, // Error when the document isn't JSON or a coercible string - {f: f2, row: sql.Row{1, `$.f`}, err: sql.ErrInvalidJSONArgument.New(1, "json_extract")}, - {f: f2, row: sql.Row{`}`, `$.f`}, err: sql.ErrInvalidJSONText.New(1, "json_extract", "}")}, + {f: f2, row: sql.UntypedSqlRow{1, `$.f`}, err: sql.ErrInvalidJSONArgument.New(1, "json_extract")}, + {f: f2, row: sql.UntypedSqlRow{`}`, `$.f`}, err: sql.ErrInvalidJSONText.New(1, "json_extract", "}")}, // TODO: Fix these. They work in mysql - //{f2, sql.Row{jsonInput, `$.f.key\\"with\\"dquotes`}, sql.JSONDocument{Val: 2}, nil}, - //{f2, sql.Row{jsonInput, `$.f.key\'with\'squotes`}, sql.JSONDocument{Val: 3}, nil}, - //{f2, sql.Row{jsonInput, `$.f.key\\with\\backslashes`}, sql.JSONDocument{Val: 4}, nil}, - //{f2, sql.Row{jsonInput, `$.f."key\\with\\backslashes"`}, sql.JSONDocument{Val: 4}, nil}, + //{f2, sql.UntypedSqlRow{jsonInput, `$.f.key\\"with\\"dquotes`}, sql.JSONDocument{Val: 2}, nil}, + //{f2, sql.UntypedSqlRow{jsonInput, `$.f.key\'with\'squotes`}, sql.JSONDocument{Val: 3}, nil}, + //{f2, sql.UntypedSqlRow{jsonInput, `$.f.key\\with\\backslashes`}, sql.JSONDocument{Val: 4}, nil}, + //{f2, sql.UntypedSqlRow{jsonInput, `$.f."key\\with\\backslashes"`}, sql.JSONDocument{Val: 4}, nil}, } } diff --git a/sql/expression/function/json/jsontests/json_function_tests.go b/sql/expression/function/json/jsontests/json_function_tests.go index 5d58676231..ef8c1d9810 100644 --- a/sql/expression/function/json/jsontests/json_function_tests.go +++ b/sql/expression/function/json/jsontests/json_function_tests.go @@ -87,7 +87,7 @@ func buildGetFieldExpressions(t *testing.T, construct func(...sql.Expression) (s func RunJsonTests(t *testing.T, testCases []testCase) { for _, tstC := range testCases { var paths []string - for _, path := range tstC.row[1:] { + for _, path := range tstC.row.Values()[1:] { if _, ok := path.(string); ok { paths = append(paths, path.(string)) } diff --git a/sql/expression/function/json/jsontests/json_insert_tests.go b/sql/expression/function/json/jsontests/json_insert_tests.go index 77daeab149..5c5f2a6f30 100644 --- a/sql/expression/function/json/jsontests/json_insert_tests.go +++ b/sql/expression/function/json/jsontests/json_insert_tests.go @@ -33,150 +33,150 @@ func JsonInsertTestCases(t *testing.T, prepare prepareJsonValue) []testCase { { name: "insert into beginning of top-level object", f: f1, - row: sql.Row{jsonInput, "$.A", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$.A", 10.1}, expected: `{"A": 10.1, "a": 1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "insert at end of top-level object", f: f1, - row: sql.Row{jsonInput, "$.z", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$.z", 10.1}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo"}, "z": 10.1}`, }, { name: "insert in middle of top-level object", f: f1, - row: sql.Row{jsonInput, "$.bb", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$.bb", 10.1}, expected: `{"a": 1, "b": [2, 3], "bb": 10.1, "c": {"d": "foo"}}`, }, { name: "insert to non-existent path is a no-op", f: f1, - row: sql.Row{jsonInput, "$.bb.cc", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$.bb.cc", 10.1}, expected: jsonInput, }, { name: "insert existing does nothing", f: f1, - row: sql.Row{jsonInput, "$.a", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$.a", 10.1}, expected: jsonInput, }, { name: "insert existing nested does nothing", f: f1, - row: sql.Row{jsonInput, "$.c.d", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.d", "test"}, expected: jsonInput, }, { name: "insert multiple, one change", f: f2, - row: sql.Row{jsonInput, "$.a", 10.1, "$.e", "new"}, + row: sql.UntypedSqlRow{jsonInput, "$.a", 10.1, "$.e", "new"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo"},"e":"new"}`, }, { name: "insert nested does nothing", f: f1, - row: sql.Row{jsonInput, "$.a.e", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.a.e", "test"}, expected: jsonInput, }, { name: "insert nested in existing struct", f: f1, - row: sql.Row{jsonInput, "$.c.e", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.e", "test"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo","e":"test"}}`, }, { name: "insert struct with indexing out of range", f: f1, - row: sql.Row{jsonInput, "$.c[5]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.c[5]", 4.1}, expected: `{"a": 1, "b": [2, 3], "c": [{"d": "foo"}, 4.1]}`}, { name: "insert element in array does nothing", f: f1, - row: sql.Row{jsonInput, "$.b[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.b[0]", 4.1}, expected: jsonInput, }, { name: "insert element in array out of range", f: f1, - row: sql.Row{jsonInput, "$.b[5]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.b[5]", 4.1}, expected: `{"a": 1, "b": [2, 3, 4.1], "c": {"d": "foo"}}`, }, { name: "insert nested in array does nothing", f: f1, - row: sql.Row{jsonInput, "$.b.c", 4}, + row: sql.UntypedSqlRow{jsonInput, "$.b.c", 4}, expected: jsonInput, }, { name: "struct as array does nothing", f: f1, - row: sql.Row{jsonInput, "$.a[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.a[0]", 4.1}, expected: jsonInput, }, { name: "struct does nothing", f: f1, - row: sql.Row{jsonInput, "$[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$[0]", 4.1}, expected: jsonInput, }, { name: "improper struct indexing", f: f1, - row: sql.Row{jsonInput, "$.[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.[0]", 4.1}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]"), }, { name: "invalid path", f: f1, - row: sql.Row{jsonInput, "foo", "test"}, + row: sql.UntypedSqlRow{jsonInput, "foo", "test"}, err: fmt.Errorf("Invalid JSON path expression. Path must start with '$'"), }, { name: "path contains * wildcard", f: f1, - row: sql.Row{jsonInput, "$.c.*", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.*", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*"), }, { name: "path contains ** wildcard", f: f1, - row: sql.Row{jsonInput, "$.c.**", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.**", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**"), }, { name: "path contains ** wildcard", f: f1, - row: sql.Row{1, "$.c.**", "test"}, + row: sql.UntypedSqlRow{1, "$.c.**", "test"}, err: sql.ErrInvalidJSONArgument.New(1, "json_insert"), }, { name: "path contains ** wildcard", f: f1, - row: sql.Row{`()`, "$.c.**", "test"}, + row: sql.UntypedSqlRow{`()`, "$.c.**", "test"}, err: sql.ErrInvalidJSONText.New(1, "json_insert", "()"), }, { name: "whole document no opt", f: f1, - row: sql.Row{jsonInput, "$", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$", 10.1}, expected: jsonInput, }, { name: "sql-null document returns sql-null", f: f1, - row: sql.Row{nil, "$", 42.7}, + row: sql.UntypedSqlRow{nil, "$", 42.7}, expected: nil, }, { name: "json-null document returns json-null", f: f1, - row: sql.Row{"null", "$", 42.7}, + row: sql.UntypedSqlRow{"null", "$", 42.7}, expected: "null", }, { name: "if any path is null, return null", f: f1, - row: sql.Row{jsonInput, nil, 10}, + row: sql.UntypedSqlRow{jsonInput, nil, 10}, }, // mysql> select JSON_INSERT(JSON_ARRAY(), "$[2]", 1 , "$[2]", 2 ,"$[2]", 3 ,"$[2]", 4); @@ -186,7 +186,7 @@ func JsonInsertTestCases(t *testing.T, prepare prepareJsonValue) []testCase { // | [1, 2, 3] | // +------------------------------------------------------------------------+ {f: buildGetFieldExpressions(t, json.NewJSONInsert, 9), - row: sql.Row{`[]`, + row: sql.UntypedSqlRow{`[]`, "$[2]", 1.1, // [] -> [1.1] "$[2]", 2.2, // [1.1] -> [1.1,2.2] "$[2]", 3.3, // [1.1, 2.2] -> [1.1, 2.2, 3.3] diff --git a/sql/expression/function/json/jsontests/json_keys_test.go b/sql/expression/function/json/jsontests/json_keys_test.go index 305163624d..3a185b93d8 100644 --- a/sql/expression/function/json/jsontests/json_keys_test.go +++ b/sql/expression/function/json/jsontests/json_keys_test.go @@ -36,104 +36,104 @@ func TestJSONKeys(t *testing.T) { testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ { f: f1, - row: sql.Row{nil}, + row: sql.UntypedSqlRow{nil}, exp: nil, }, { f: f1, - row: sql.Row{`null`}, + row: sql.UntypedSqlRow{`null`}, exp: nil, }, { f: f1, - row: sql.Row{1}, + row: sql.UntypedSqlRow{1}, err: sql.ErrInvalidJSONArgument.New(1, "json_keys"), }, { f: f1, - row: sql.Row{`1`}, + row: sql.UntypedSqlRow{`1`}, exp: nil, }, { f: f1, - row: sql.Row{`[1]`}, + row: sql.UntypedSqlRow{`[1]`}, exp: nil, }, { f: f1, - row: sql.Row{`{}`}, + row: sql.UntypedSqlRow{`{}`}, exp: types.MustJSON(`[]`), }, { f: f1, - row: sql.Row{`badjson`}, + row: sql.UntypedSqlRow{`badjson`}, err: sql.ErrInvalidJSONText.New(1, "json_keys", "badjson"), }, { f: f1, - row: sql.Row{`"doublestringisvalidjson"`}, + row: sql.UntypedSqlRow{`"doublestringisvalidjson"`}, exp: nil, }, { f: f1, - row: sql.Row{`{"a": 1}`}, + row: sql.UntypedSqlRow{`{"a": 1}`}, exp: types.MustJSON(`["a"]`), }, { f: f1, - row: sql.Row{`{"aa": 1, "bb": 2, "c": 3}`}, + row: sql.UntypedSqlRow{`{"aa": 1, "bb": 2, "c": 3}`}, exp: types.MustJSON(`["c", "aa", "bb"]`), }, { f: f2, - row: sql.Row{`{"a": [1, false]}`, nil}, + row: sql.UntypedSqlRow{`{"a": [1, false]}`, nil}, exp: nil, }, { f: f2, - row: sql.Row{`{"a": [1, false]}`, 123}, + row: sql.UntypedSqlRow{`{"a": [1, false]}`, 123}, err: fmt.Errorf("Invalid JSON path expression"), }, { f: f2, - row: sql.Row{`{"a": [1, false]}`, "$"}, + row: sql.UntypedSqlRow{`{"a": [1, false]}`, "$"}, exp: types.MustJSON(`["a"]`), }, { f: f2, - row: sql.Row{`{"a": {"z": 1}}`, "$.a"}, + row: sql.UntypedSqlRow{`{"a": {"z": 1}}`, "$.a"}, exp: types.MustJSON(`["z"]`), }, { f: f2, - row: sql.Row{`[1, 2, {"a": 1, "b": {"c": 30}}]`, "$[2]"}, + row: sql.UntypedSqlRow{`[1, 2, {"a": 1, "b": {"c": 30}}]`, "$[2]"}, exp: types.MustJSON(`["a", "b"]`), }, { f: f2, - row: sql.Row{`[1, 2, {"a": 1, "b": {"c": {"d": 100}}}]`, "$[2].b.c"}, + row: sql.UntypedSqlRow{`[1, 2, {"a": 1, "b": {"c": {"d": 100}}}]`, "$[2].b.c"}, exp: types.MustJSON(`["d"]`), }, { f: f2, - row: sql.Row{`{"a": 1, "b": {"c": {"d": "foo"}}}`, "$.b.c"}, + row: sql.UntypedSqlRow{`{"a": 1, "b": {"c": {"d": "foo"}}}`, "$.b.c"}, exp: types.MustJSON(`["d"]`), }, { f: f2, - row: sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.d"}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.d"}, exp: nil, }, { f: f2, - row: sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$["}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$["}, err: fmt.Errorf("Invalid JSON path expression. Missing ']'"), }, } diff --git a/sql/expression/function/json/jsontests/json_length_test.go b/sql/expression/function/json/jsontests/json_length_test.go index 3b59b8bf27..8591e2f749 100644 --- a/sql/expression/function/json/jsontests/json_length_test.go +++ b/sql/expression/function/json/jsontests/json_length_test.go @@ -35,94 +35,94 @@ func TestJsonLength(t *testing.T) { testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ { f: f1, - row: sql.Row{`null`}, + row: sql.UntypedSqlRow{`null`}, exp: nil, }, { f: f1, - row: sql.Row{`1`}, + row: sql.UntypedSqlRow{`1`}, exp: 1, }, { f: f1, - row: sql.Row{`[1]`}, + row: sql.UntypedSqlRow{`[1]`}, exp: 1, }, { f: f1, - row: sql.Row{`"fjsadflkd"`}, + row: sql.UntypedSqlRow{`"fjsadflkd"`}, exp: 1, }, { f: f1, - row: sql.Row{`[1, false]`}, + row: sql.UntypedSqlRow{`[1, false]`}, exp: 2, }, { f: f1, - row: sql.Row{`[1, {"a": 1}]`}, + row: sql.UntypedSqlRow{`[1, {"a": 1}]`}, exp: 2, }, { f: f1, - row: sql.Row{`{"a": 1}`}, + row: sql.UntypedSqlRow{`{"a": 1}`}, exp: 1, }, { f: f2, - row: sql.Row{`{"a": [1, false]}`, nil}, + row: sql.UntypedSqlRow{`{"a": [1, false]}`, nil}, exp: nil, }, { f: f2, - row: sql.Row{`{"a": [1, false]}`, 123}, + row: sql.UntypedSqlRow{`{"a": [1, false]}`, 123}, err: fmt.Errorf("Invalid JSON path expression. Path must start with '$', but received: '123'"), }, { f: f2, - row: sql.Row{`{"a": [1, false]}`, "$.a"}, + row: sql.UntypedSqlRow{`{"a": [1, false]}`, "$.a"}, exp: 2, }, { f: f2, - row: sql.Row{`{"a": [1, {"a": 1}]}`, "$.a"}, + row: sql.UntypedSqlRow{`{"a": [1, {"a": 1}]}`, "$.a"}, exp: 2, }, { f: f2, - row: sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.b"}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.b"}, exp: 2, }, { f: f2, - row: sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.b[0]"}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.b[0]"}, exp: 1, }, { f: f2, - row: sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.c.d"}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.c.d"}, exp: 1, }, { f: f2, - row: sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.d"}, + row: sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, "$.d"}, exp: nil, }, { f: f2, - row: sql.Row{1, "$.d"}, + row: sql.UntypedSqlRow{1, "$.d"}, err: sql.ErrInvalidJSONArgument.New(1, "json_length"), }, { f: f2, - row: sql.Row{"asdf", "$.d"}, + row: sql.UntypedSqlRow{"asdf", "$.d"}, err: sql.ErrInvalidJSONText.New(1, "json_length", "asdf"), }, } diff --git a/sql/expression/function/json/jsontests/json_merge_patch_test.go b/sql/expression/function/json/jsontests/json_merge_patch_test.go index 84b0419f00..4ab92ecbd8 100644 --- a/sql/expression/function/json/jsontests/json_merge_patch_test.go +++ b/sql/expression/function/json/jsontests/json_merge_patch_test.go @@ -31,58 +31,58 @@ func TestJSONMergePatch(t *testing.T) { f3 := buildGetFieldExpressions(t, json.NewJSONMergePatch, 3) testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ { f: f2, - row: sql.Row{nil, nil}, + row: sql.UntypedSqlRow{nil, nil}, exp: nil, }, { f: f2, - row: sql.Row{`null`, `null`}, + row: sql.UntypedSqlRow{`null`, `null`}, exp: types.MustJSON(`null`), }, { f: f2, - row: sql.Row{`1`, `true`}, + row: sql.UntypedSqlRow{`1`, `true`}, exp: types.MustJSON(`true`), }, { f: f2, - row: sql.Row{`"abc"`, `"def"`}, + row: sql.UntypedSqlRow{`"abc"`, `"def"`}, exp: types.MustJSON(`"def"`), }, { f: f2, - row: sql.Row{`[1, 2]`, `null`}, + row: sql.UntypedSqlRow{`[1, 2]`, `null`}, exp: types.MustJSON(`null`), }, { f: f2, - row: sql.Row{`[1, 2]`, `{"id": 47}`}, + row: sql.UntypedSqlRow{`[1, 2]`, `{"id": 47}`}, exp: types.MustJSON(`{"id": 47}`), }, { f: f2, - row: sql.Row{`[1, 2]`, `[true, false]`}, + row: sql.UntypedSqlRow{`[1, 2]`, `[true, false]`}, exp: types.MustJSON(`[true, false]`), }, { f: f2, - row: sql.Row{`{"name": "x"}`, `{"id": 47}`}, + row: sql.UntypedSqlRow{`{"name": "x"}`, `{"id": 47}`}, exp: types.MustJSON(`{"id": 47, "name": "x"}`), }, { f: f2, - row: sql.Row{`{"id": 123}`, `{"id": null}`}, + row: sql.UntypedSqlRow{`{"id": 123}`, `{"id": null}`}, exp: types.MustJSON(`{}`), }, { f: f2, - row: sql.Row{ + row: sql.UntypedSqlRow{ `{ "Suspect": { "Name": "Bart", @@ -123,32 +123,32 @@ func TestJSONMergePatch(t *testing.T) { }, { f: f3, - row: sql.Row{`{"a": 1, "b": 2}`, `{"a": 3, "c": 4}`, `{"a": 5, "d": 6}`}, + row: sql.UntypedSqlRow{`{"a": 1, "b": 2}`, `{"a": 3, "c": 4}`, `{"a": 5, "d": 6}`}, exp: types.MustJSON(`{"a": 5, "b": 2, "c": 4, "d": 6}`), }, { f: f3, - row: sql.Row{`{"a": 1, "b": 2}`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `"single value"`}, + row: sql.UntypedSqlRow{`{"a": 1, "b": 2}`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `"single value"`}, exp: types.MustJSON(`"single value"`), }, { f: f3, - row: sql.Row{1, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{1, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONArgument.New(1, "json_merge_patch"), }, { f: f3, - row: sql.Row{`{"a": {"one": false, "two": 2.55, "e": 8}}`, 1, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{`{"a": {"one": false, "two": 2.55, "e": 8}}`, 1, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONArgument.New(2, "json_merge_patch"), }, { f: f3, - row: sql.Row{`{`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{`{`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONText.New(1, "json_merge_patch", "{"), }, { f: f3, - row: sql.Row{`{"a": {"one": false, "two": 2.55, "e": 8}}`, `}`, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{`{"a": {"one": false, "two": 2.55, "e": 8}}`, `}`, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONText.New(2, "json_merge_patch", "}"), }, } diff --git a/sql/expression/function/json/jsontests/json_merge_preserve_test.go b/sql/expression/function/json/jsontests/json_merge_preserve_test.go index c48444d344..3f3979a93c 100644 --- a/sql/expression/function/json/jsontests/json_merge_preserve_test.go +++ b/sql/expression/function/json/jsontests/json_merge_preserve_test.go @@ -33,58 +33,58 @@ func TestJSONMergePreserve(t *testing.T) { testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ { f: f2, - row: sql.Row{nil, nil}, + row: sql.UntypedSqlRow{nil, nil}, exp: nil, }, { f: f2, - row: sql.Row{`null`, `null`}, + row: sql.UntypedSqlRow{`null`, `null`}, exp: types.MustJSON(`[null, null]`), }, { f: f2, - row: sql.Row{`1`, `true`}, + row: sql.UntypedSqlRow{`1`, `true`}, exp: types.MustJSON(`[1, true]`), }, { f: f2, - row: sql.Row{`"abc"`, `"def"`}, + row: sql.UntypedSqlRow{`"abc"`, `"def"`}, exp: types.MustJSON(`["abc", "def"]`), }, { f: f2, - row: sql.Row{`[1, 2]`, `null`}, + row: sql.UntypedSqlRow{`[1, 2]`, `null`}, exp: types.MustJSON(`[1, 2, null]`), }, { f: f2, - row: sql.Row{`[1, 2]`, `{"id": 47}`}, + row: sql.UntypedSqlRow{`[1, 2]`, `{"id": 47}`}, exp: types.MustJSON(`[1, 2, {"id": 47}]`), }, { f: f2, - row: sql.Row{`[1, 2]`, `[true, false]`}, + row: sql.UntypedSqlRow{`[1, 2]`, `[true, false]`}, exp: types.MustJSON(`[1, 2, true, false]`), }, { f: f2, - row: sql.Row{`{"name": "x"}`, `{"id": 47}`}, + row: sql.UntypedSqlRow{`{"name": "x"}`, `{"id": 47}`}, exp: types.MustJSON(`{"id": 47, "name": "x"}`), }, { f: f2, - row: sql.Row{`{"id": 123}`, `{"id": null}`}, + row: sql.UntypedSqlRow{`{"id": 123}`, `{"id": null}`}, exp: types.MustJSON(`{"id": [123, null]}`), }, { f: f2, - row: sql.Row{ + row: sql.UntypedSqlRow{ `{ "Suspect": { "Name": "Bart", @@ -125,7 +125,7 @@ func TestJSONMergePreserve(t *testing.T) { }, { f: f3, - row: sql.Row{ + row: sql.UntypedSqlRow{ `{"a": 1, "b": 2}`, `{"a": 3, "c": 4}`, `{"a": 5, "d": 6}`, @@ -134,7 +134,7 @@ func TestJSONMergePreserve(t *testing.T) { }, { f: f4, - row: sql.Row{ + row: sql.UntypedSqlRow{ `{"a": 1, "b": 2}`, `{"a": 3, "c": 4}`, `{"a": 5, "d": 6}`, @@ -144,27 +144,27 @@ func TestJSONMergePreserve(t *testing.T) { }, { f: f3, - row: sql.Row{`{"a": 1, "b": 2}`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `"single value"`}, + row: sql.UntypedSqlRow{`{"a": 1, "b": 2}`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `"single value"`}, exp: types.MustJSON(`[{"a": [1, {"e": 8, "one": false, "two": 2.55}], "b": 2}, "single value"]`), }, { f: f3, - row: sql.Row{1, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{1, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONArgument.New(1, "json_merge_preserve"), }, { f: f3, - row: sql.Row{`{"a": {"one": false, "two": 2.55, "e": 8}}`, 1, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{`{"a": {"one": false, "two": 2.55, "e": 8}}`, 1, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONArgument.New(2, "json_merge_preserve"), }, { f: f3, - row: sql.Row{`{`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{`{`, `{"a": {"one": false, "two": 2.55, "e": 8}}`, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONText.New(1, "json_merge_preserve", "{"), }, { f: f3, - row: sql.Row{`{"a": {"one": false, "two": 2.55, "e": 8}}`, `}`, `{"a": 1, "b": 2}`}, + row: sql.UntypedSqlRow{`{"a": {"one": false, "two": 2.55, "e": 8}}`, `}`, `{"a": 1, "b": 2}`}, err: sql.ErrInvalidJSONText.New(2, "json_merge_preserve", "}"), }, } diff --git a/sql/expression/function/json/jsontests/json_overlaps_test.go b/sql/expression/function/json/jsontests/json_overlaps_test.go index 77a9d64e7b..bdd14f23eb 100644 --- a/sql/expression/function/json/jsontests/json_overlaps_test.go +++ b/sql/expression/function/json/jsontests/json_overlaps_test.go @@ -33,204 +33,204 @@ func TestJSONOverlaps(t *testing.T) { f2 := buildGetFieldExpressions(t, json.NewJSONOverlaps, 2) testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ // errors { f: f2, - row: sql.Row{``}, + row: sql.UntypedSqlRow{``}, err: sql.ErrInvalidJSONText.New(1, "json_overlaps", ``), }, { f: f2, - row: sql.Row{``, ``}, + row: sql.UntypedSqlRow{``, ``}, err: sql.ErrInvalidJSONText.New(1, "json_overlaps", ``), }, { f: f2, - row: sql.Row{`asdf`, `badjson`}, + row: sql.UntypedSqlRow{`asdf`, `badjson`}, err: sql.ErrInvalidJSONText.New(1, "json_overlaps", `asdf`), }, { f: f2, - row: sql.Row{`{}`, `badjson`}, + row: sql.UntypedSqlRow{`{}`, `badjson`}, err: sql.ErrInvalidJSONText.New(2, "json_overlaps", `badjson`), }, { f: f2, - row: sql.Row{1, `{}`}, + row: sql.UntypedSqlRow{1, `{}`}, err: sql.ErrInvalidJSONArgument.New(1, "json_overlaps"), }, { f: f2, - row: sql.Row{`{}`, 1}, + row: sql.UntypedSqlRow{`{}`, 1}, err: sql.ErrInvalidJSONArgument.New(2, "json_overlaps"), }, // nulls { f: f2, - row: sql.Row{nil, nil}, + row: sql.UntypedSqlRow{nil, nil}, exp: nil, }, { f: f2, - row: sql.Row{nil, `true`}, + row: sql.UntypedSqlRow{nil, `true`}, exp: nil, }, { f: f2, - row: sql.Row{nil, `1`}, + row: sql.UntypedSqlRow{nil, `1`}, exp: nil, }, { f: f2, - row: sql.Row{nil, `"abc"`}, + row: sql.UntypedSqlRow{nil, `"abc"`}, exp: nil, }, // scalar match { f: f2, - row: sql.Row{`null`, `null`}, + row: sql.UntypedSqlRow{`null`, `null`}, exp: true, }, { f: f2, - row: sql.Row{`false`, `false`}, + row: sql.UntypedSqlRow{`false`, `false`}, exp: true, }, { f: f2, - row: sql.Row{`1`, `1`}, + row: sql.UntypedSqlRow{`1`, `1`}, exp: true, }, { f: f2, - row: sql.Row{`"abc"`, `"abc"`}, + row: sql.UntypedSqlRow{`"abc"`, `"abc"`}, exp: true, }, // scalar mismatch { f: f2, - row: sql.Row{`null`, `15`}, + row: sql.UntypedSqlRow{`null`, `15`}, exp: false, }, { f: f2, - row: sql.Row{`false`, `true`}, + row: sql.UntypedSqlRow{`false`, `true`}, exp: false, }, { f: f2, - row: sql.Row{`1`, `2`}, + row: sql.UntypedSqlRow{`1`, `2`}, exp: false, }, { f: f2, - row: sql.Row{`"abc"`, `"def"`}, + row: sql.UntypedSqlRow{`"abc"`, `"def"`}, exp: false, }, // objects { f: f2, - row: sql.Row{`{"a": 1, "b": null, "d": 4}`, `{"c": 4, "a": 100, "d": 1, "b": null}`}, + row: sql.UntypedSqlRow{`{"a": 1, "b": null, "d": 4}`, `{"c": 4, "a": 100, "d": 1, "b": null}`}, exp: true, }, { f: f2, - row: sql.Row{`{"a":1,"b":10,"d":10}`, `{"c":1,"e":10,"f":1,"d":10}`}, + row: sql.UntypedSqlRow{`{"a":1,"b":10,"d":10}`, `{"c":1,"e":10,"f":1,"d":10}`}, exp: true, }, { f: f2, - row: sql.Row{`{"a":1,"b":10,"d":10}`, `{"a":5,"e":10,"f":1,"d":20}`}, + row: sql.UntypedSqlRow{`{"a":1,"b":10,"d":10}`, `{"a":5,"e":10,"f":1,"d":20}`}, exp: false, }, { f: f2, - row: sql.Row{`{"a":1, "b": {"a": 1, "b": 2, "c": 3}, "c": 3}`, `{"b": {"c": 3, "b": 2, "a": 1}}`}, + row: sql.UntypedSqlRow{`{"a":1, "b": {"a": 1, "b": 2, "c": 3}, "c": 3}`, `{"b": {"c": 3, "b": 2, "a": 1}}`}, exp: true, }, // arrays { f: f2, - row: sql.Row{`[1, 2, 3, null, null, null]`, `null`}, + row: sql.UntypedSqlRow{`[1, 2, 3, null, null, null]`, `null`}, exp: true, }, { f: f2, - row: sql.Row{`[true, true, false, false]`, `false`}, + row: sql.UntypedSqlRow{`[true, true, false, false]`, `false`}, exp: true, }, { f: f2, - row: sql.Row{`[1,3,5,7]`, `7`}, + row: sql.UntypedSqlRow{`[1,3,5,7]`, `7`}, exp: true, }, { f: f2, - row: sql.Row{`["abc", "def", "ghi", "jkl"]`, `"ghi"`}, + row: sql.UntypedSqlRow{`["abc", "def", "ghi", "jkl"]`, `"ghi"`}, exp: true, }, { f: f2, - row: sql.Row{"[1,3,5,7]", "[2,5,7]"}, + row: sql.UntypedSqlRow{"[1,3,5,7]", "[2,5,7]"}, exp: true, }, { f: f2, - row: sql.Row{"[1,3,5,7]", "[2,6,7]"}, + row: sql.UntypedSqlRow{"[1,3,5,7]", "[2,6,7]"}, exp: true, }, { f: f2, - row: sql.Row{"[1,3,5,7]", "[2,6,8]"}, + row: sql.UntypedSqlRow{"[1,3,5,7]", "[2,6,8]"}, exp: false, }, { f: f2, - row: sql.Row{`[4,5,6,7]`, `6`}, + row: sql.UntypedSqlRow{`[4,5,6,7]`, `6`}, exp: true, }, { f: f2, - row: sql.Row{`[4,5,"6",7]`, `6`}, + row: sql.UntypedSqlRow{`[4,5,"6",7]`, `6`}, exp: false, }, { f: f2, - row: sql.Row{`[4,5,6,7]`, `"6"`}, + row: sql.UntypedSqlRow{`[4,5,6,7]`, `"6"`}, exp: false, }, { f: f2, - row: sql.Row{`[{"a": 1}]`, `{"a": 1}`}, + row: sql.UntypedSqlRow{`[{"a": 1}]`, `{"a": 1}`}, exp: true, }, { f: f2, - row: sql.Row{`[{"a": [{"b": 1, "c": 2, "d": "test"}]}]`, `{"a": 1}`}, + row: sql.UntypedSqlRow{`[{"a": [{"b": 1, "c": 2, "d": "test"}]}]`, `{"a": 1}`}, exp: false, }, { f: f2, - row: sql.Row{`[{}, [], {"a": "1"}, {"a": [{"b": 1, "c": 2, "d": "test"}]}]`, `{"a": [{"b": 1, "c": 2, "d": "test"}]}`}, + row: sql.UntypedSqlRow{`[{}, [], {"a": "1"}, {"a": [{"b": 1, "c": 2, "d": "test"}]}]`, `{"a": [{"b": 1, "c": 2, "d": "test"}]}`}, exp: true, }, { f: f2, - row: sql.Row{"[[1,2],[3,4],5]", "[1,[2,3],[4,5]]"}, + row: sql.UntypedSqlRow{"[[1,2],[3,4],5]", "[1,[2,3],[4,5]]"}, exp: false, }, { f: f2, - row: sql.Row{`[[1, 2]]`, `[[2, 1]]`}, + row: sql.UntypedSqlRow{`[[1, 2]]`, `[[2, 1]]`}, exp: false, }, } diff --git a/sql/expression/function/json/jsontests/json_remove_tests.go b/sql/expression/function/json/jsontests/json_remove_tests.go index d70f279160..0c141f8c97 100644 --- a/sql/expression/function/json/jsontests/json_remove_tests.go +++ b/sql/expression/function/json/jsontests/json_remove_tests.go @@ -36,120 +36,120 @@ func JsonRemoveTestCases(t *testing.T, prepare prepareJsonValue) []testCase { { name: "remove only element", f: f1, - row: sql.Row{prepare(t, `{"a": 1}`), "$.a"}, + row: sql.UntypedSqlRow{prepare(t, `{"a": 1}`), "$.a"}, expected: prepare(t, `{}`), }, { name: "remove existing", f: f1, - row: sql.Row{json, "$.a"}, + row: sql.UntypedSqlRow{json, "$.a"}, expected: prepare(t, `{"b": [2, 3], "c": {"d": "foo"}}`), }, { name: "remove existing array element", f: f1, - row: sql.Row{json, "$.b[0]"}, + row: sql.UntypedSqlRow{json, "$.b[0]"}, expected: `{"a": 1, "b": [3], "c": {"d": "foo"}}`, }, { name: "remove existing nested", f: f1, - row: sql.Row{json, "$.c.d"}, + row: sql.UntypedSqlRow{json, "$.c.d"}, expected: `{"a": 1, "b": [2, 3], "c": {}}`, }, { name: "remove existing object", f: f1, - row: sql.Row{json, "$.c"}, + row: sql.UntypedSqlRow{json, "$.c"}, expected: `{"a": 1, "b": [2, 3]}`, }, { name: "remove nothing when path not found", f: f1, - row: sql.Row{json, "$.a.e"}, + row: sql.UntypedSqlRow{json, "$.a.e"}, expected: json, }, { name: "remove nothing when path not found", f: f1, - row: sql.Row{json, "$.c[5]"}, + row: sql.UntypedSqlRow{json, "$.c[5]"}, expected: json, }, { name: "remove last element in array", f: f1, - row: sql.Row{json, "$.b[last]"}, + row: sql.UntypedSqlRow{json, "$.b[last]"}, expected: `{"a": 1, "b": [2], "c": {"d": "foo"}}`, }, { name: "remove nothing when array index out of bounds", f: f1, - row: sql.Row{json, "$.b[5]"}, + row: sql.UntypedSqlRow{json, "$.b[5]"}, expected: json, }, { name: "remove nothing when provided a bogus path", f: f1, - row: sql.Row{json, "$[0]"}, + row: sql.UntypedSqlRow{json, "$[0]"}, expected: json, }, { name: "improper struct indexing", f: f1, - row: sql.Row{json, "$.[0]"}, + row: sql.UntypedSqlRow{json, "$.[0]"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]"), }, { name: "invalid path", f: f1, - row: sql.Row{json, "foo", "test"}, + row: sql.UntypedSqlRow{json, "foo", "test"}, err: fmt.Errorf("Invalid JSON path expression. Path must start with '$'"), }, { name: "path contains * wildcard", f: f1, - row: sql.Row{json, "$.c.*", "test"}, + row: sql.UntypedSqlRow{json, "$.c.*", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*"), }, { name: "path contains ** wildcard", f: f1, - row: sql.Row{json, "$.c.**", "test"}, + row: sql.UntypedSqlRow{json, "$.c.**", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**"), }, { name: "whole document", f: f1, - row: sql.Row{json, "$"}, + row: sql.UntypedSqlRow{json, "$"}, err: fmt.Errorf("The path expression '$' is not allowed in this context."), }, { name: "invalid json type", f: f1, - row: sql.Row{1, "$"}, + row: sql.UntypedSqlRow{1, "$"}, err: sql.ErrInvalidJSONArgument.New(1, "json_remove"), }, { name: "invalid json text", f: f1, - row: sql.Row{"}{", "$"}, + row: sql.UntypedSqlRow{"}{", "$"}, err: sql.ErrInvalidJSONText.New(1, "json_remove", "}{"), }, { name: "null document", f: f1, - row: sql.Row{nil, "$"}, + row: sql.UntypedSqlRow{nil, "$"}, }, { name: "if any path is null, return null", f: f2, - row: sql.Row{json, "$.foo", nil}, + row: sql.UntypedSqlRow{json, "$.foo", nil}, expected: nil, }, { name: "remove multiple paths", f: f2, - row: sql.Row{json, "$.a", "$.b"}, + row: sql.UntypedSqlRow{json, "$.a", "$.b"}, expected: `{"c": {"d": "foo"}}`, }, } diff --git a/sql/expression/function/json/jsontests/json_replace_tests.go b/sql/expression/function/json/jsontests/json_replace_tests.go index c6043e6961..afbfff96bd 100644 --- a/sql/expression/function/json/jsontests/json_replace_tests.go +++ b/sql/expression/function/json/jsontests/json_replace_tests.go @@ -33,131 +33,131 @@ func JsonReplaceTestCases(t *testing.T, prepare prepareJsonValue) []testCase { { name: "replace existing", f: f1, - row: sql.Row{json, "$.a", 10.1}, + row: sql.UntypedSqlRow{json, "$.a", 10.1}, expected: `{"a": 10.1, "b": [2, 3], "c": {"d": "foo"}}`}, { name: "replace non-existing does nothing", f: f1, - row: sql.Row{json, "$.e", "new"}, + row: sql.UntypedSqlRow{json, "$.e", "new"}, expected: json, }, { name: "replace nested", f: f1, - row: sql.Row{json, "$.c.d", "test"}, + row: sql.UntypedSqlRow{json, "$.c.d", "test"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "test"}}`, }, { name: "replace multiple, one change.", f: f2, - row: sql.Row{json, "$.a", 10.1, "$.e", "new"}, + row: sql.UntypedSqlRow{json, "$.a", 10.1, "$.e", "new"}, expected: `{"a": 10.1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "replace nested non-existent does nothing", f: f1, - row: sql.Row{json, "$.a.e", "test"}, + row: sql.UntypedSqlRow{json, "$.a.e", "test"}, expected: json, }, { name: "replace nested in existing struct missing field does nothing", f: f1, - row: sql.Row{json, "$.c.e", "test"}, + row: sql.UntypedSqlRow{json, "$.c.e", "test"}, expected: json, }, { name: "replace struct with indexing out of range", f: f1, - row: sql.Row{json, "$.c[5]", 4.1}, + row: sql.UntypedSqlRow{json, "$.c[5]", 4.1}, expected: json, }, { name: "replace element in array", f: f1, - row: sql.Row{json, "$.b[0]", 4.1}, + row: sql.UntypedSqlRow{json, "$.b[0]", 4.1}, expected: `{"a": 1, "b": [4.1, 3], "c": {"d": "foo"}}`, }, { name: "replace element in array out of range does nothing", f: f1, - row: sql.Row{json, "$.b[5]", 4.1}, + row: sql.UntypedSqlRow{json, "$.b[5]", 4.1}, expected: json, }, {name: "replace nested in array does nothing", f: f1, - row: sql.Row{json, "$.b.c", 4}, + row: sql.UntypedSqlRow{json, "$.b.c", 4}, expected: json, }, { name: "replace scalar when treated as array", f: f1, - row: sql.Row{json, "$.a[0]", 4.1}, + row: sql.UntypedSqlRow{json, "$.a[0]", 4.1}, expected: `{"a": 4.1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "replace root element when treated as array", f: f1, - row: sql.Row{json, "$[0]", 4.1}, + row: sql.UntypedSqlRow{json, "$[0]", 4.1}, expected: `4.1`, }, { name: "improper struct indexing", f: f1, - row: sql.Row{json, "$.[0]", 4.1}, + row: sql.UntypedSqlRow{json, "$.[0]", 4.1}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]"), }, { name: "invalid path", f: f1, - row: sql.Row{json, "foo", "test"}, + row: sql.UntypedSqlRow{json, "foo", "test"}, err: fmt.Errorf("Invalid JSON path expression. Path must start with '$'"), }, { name: "path contains * wildcard", f: f1, - row: sql.Row{json, "$.c.*", "test"}, + row: sql.UntypedSqlRow{json, "$.c.*", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*"), }, // { name: "path contains ** wildcard", f: f1, - row: sql.Row{json, "$.c.**", "test"}, + row: sql.UntypedSqlRow{json, "$.c.**", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**"), }, { name: "invalid json type", f: f1, - row: sql.Row{1, "$[0]", 4.1}, + row: sql.UntypedSqlRow{1, "$[0]", 4.1}, err: sql.ErrInvalidJSONArgument.New(1, "json_replace"), }, { name: "invalid json string", f: f1, - row: sql.Row{``, "$[0]", 4.1}, + row: sql.UntypedSqlRow{``, "$[0]", 4.1}, err: sql.ErrInvalidJSONText.New(1, "json_replace", ""), }, { name: "refer to root element with zero index on non-array", f: f1, - row: sql.Row{json, "$[0]", 4.1}, + row: sql.UntypedSqlRow{json, "$[0]", 4.1}, expected: `4.1`, }, { name: "replace root element", f: f1, - row: sql.Row{json, "$", 10.1}, + row: sql.UntypedSqlRow{json, "$", 10.1}, expected: `10.1`, }, { name: "null document returns null", f: f1, - row: sql.Row{nil, "$", 42.7}, + row: sql.UntypedSqlRow{nil, "$", 42.7}, expected: nil, }, { name: "if any path is null, return null", f: f1, - row: sql.Row{json, nil, 10}, + row: sql.UntypedSqlRow{json, nil, 10}, expected: nil, }, } diff --git a/sql/expression/function/json/jsontests/json_search_test.go b/sql/expression/function/json/jsontests/json_search_test.go index 9b1a504156..2a5c3173ab 100644 --- a/sql/expression/function/json/jsontests/json_search_test.go +++ b/sql/expression/function/json/jsontests/json_search_test.go @@ -52,191 +52,191 @@ func TestJSONSearch(t *testing.T) { testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error skip bool }{ { f: f3, - row: sql.Row{1, "one", "abc"}, + row: sql.UntypedSqlRow{1, "one", "abc"}, err: sql.ErrInvalidJSONArgument.New(1, "json_search"), }, { f: f3, - row: sql.Row{"", "one", "abc"}, + row: sql.UntypedSqlRow{"", "one", "abc"}, err: sql.ErrInvalidJSONText.New(1, "json_search", ""), }, { f: f3, - row: sql.Row{jsonInput, "NotOneOrAll", "abc"}, + row: sql.UntypedSqlRow{jsonInput, "NotOneOrAll", "abc"}, err: json.ErrOneOrAll, }, { f: f3, - row: sql.Row{jsonInput, "one ", "abc"}, + row: sql.UntypedSqlRow{jsonInput, "one ", "abc"}, err: json.ErrOneOrAll, }, { f: f4, - row: sql.Row{jsonInput, "one", "abc", "badescape"}, + row: sql.UntypedSqlRow{jsonInput, "one", "abc", "badescape"}, err: json.ErrBadEscape, }, { f: f3, - row: sql.Row{nil, "one", "abc"}, + row: sql.UntypedSqlRow{nil, "one", "abc"}, exp: nil, }, { f: f3, - row: sql.Row{jsonInput, nil, "abc"}, + row: sql.UntypedSqlRow{jsonInput, nil, "abc"}, exp: nil, }, { f: f3, - row: sql.Row{jsonInput, "one", nil}, + row: sql.UntypedSqlRow{jsonInput, "one", nil}, exp: nil, }, { f: f5, - row: sql.Row{jsonInput, "one", "abc", "", nil}, + row: sql.UntypedSqlRow{jsonInput, "one", "abc", "", nil}, exp: nil, }, { f: f6, - row: sql.Row{jsonInput, "one", "abc", "", "$", nil}, + row: sql.UntypedSqlRow{jsonInput, "one", "abc", "", "$", nil}, exp: nil, }, { f: f3, - row: sql.Row{jsonInput, "one", "abc"}, + row: sql.UntypedSqlRow{jsonInput, "one", "abc"}, exp: types.MustJSON(`"$[0]"`), }, { f: f3, - row: sql.Row{jsonInput, "ONE", "abc"}, + row: sql.UntypedSqlRow{jsonInput, "ONE", "abc"}, exp: types.MustJSON(`"$[0]"`), }, { f: f3, - row: sql.Row{jsonInput, "all", "abc"}, + row: sql.UntypedSqlRow{jsonInput, "all", "abc"}, exp: types.MustJSON(`["$[0]", "$[2].x"]`), }, { f: f3, - row: sql.Row{jsonInput, "all", "ghi"}, + row: sql.UntypedSqlRow{jsonInput, "all", "ghi"}, exp: nil, }, { f: f3, - row: sql.Row{jsonInput, "all", "10"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10"}, exp: types.MustJSON(`"$[1][0].k"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "10", nil, "$"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10", nil, "$"}, exp: types.MustJSON(`"$[1][0].k"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "10", nil, "$[*]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10", nil, "$[*]"}, exp: types.MustJSON(`"$[1][0].k"`), }, { // TODO: need to implement ** wildcard in jsonpath package skip: true, f: f5, - row: sql.Row{jsonInput, "all", "10", nil, "$**.k"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10", nil, "$**.k"}, exp: types.MustJSON(`"$[1][0].k"`), }, { skip: true, f: f5, - row: sql.Row{jsonInput, "all", "10", nil, "$[*][0].k"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10", nil, "$[*][0].k"}, exp: types.MustJSON(`"$[1][0].k"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "10", nil, "$[1]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10", nil, "$[1]"}, exp: types.MustJSON(`"$[1][0].k"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "10", nil, "$[1][0]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "10", nil, "$[1][0]"}, exp: types.MustJSON(`"$[1][0].k"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "abc", nil, "$[2]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "abc", nil, "$[2]"}, exp: types.MustJSON(`"$[2].x"`), }, { f: f3, - row: sql.Row{jsonInput, "all", "%a%"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%a%"}, exp: types.MustJSON(`["$[0]", "$[2].x"]`), }, { f: f3, - row: sql.Row{jsonInput, "all", "%b%"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%b%"}, exp: types.MustJSON(`["$[0]", "$[2].x", "$[3].y"]`), }, { f: f5, - row: sql.Row{jsonInput, "all", "%b%", nil, "$[0]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%b%", nil, "$[0]"}, exp: types.MustJSON(`"$[0]"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "%b%", nil, "$[2]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%b%", nil, "$[2]"}, exp: types.MustJSON(`"$[2].x"`), }, { f: f5, - row: sql.Row{jsonInput, "all", "%b%", nil, "$[1]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%b%", nil, "$[1]"}, exp: nil, }, { f: f5, - row: sql.Row{jsonInput, "all", "%b%", "", "$[1]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%b%", "", "$[1]"}, exp: nil, }, { f: f5, - row: sql.Row{jsonInput, "all", "%b%", "", "$[3]"}, + row: sql.UntypedSqlRow{jsonInput, "all", "%b%", "", "$[3]"}, exp: types.MustJSON(`"$[3].y"`), }, { f: f4, - row: sql.Row{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `a%c%`, ""}, + row: sql.UntypedSqlRow{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `a%c%`, ""}, exp: types.MustJSON(`["$[0].a", "$[1].b"]`), }, { f: f4, - row: sql.Row{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `a\%c\%`, ""}, + row: sql.UntypedSqlRow{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `a\%c\%`, ""}, exp: types.MustJSON(`"$[0].a"`), }, { f: f4, - row: sql.Row{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `a\%c\%`, `\`}, + row: sql.UntypedSqlRow{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `a\%c\%`, `\`}, exp: types.MustJSON(`"$[0].a"`), }, { f: f4, - row: sql.Row{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `as%cs%`, `s`}, + row: sql.UntypedSqlRow{`[{"a": "a%c%"}, {"b": "abcd"}]`, "all", `as%cs%`, `s`}, exp: types.MustJSON(`"$[0].a"`), }, { f: f6, - row: sql.Row{jsonInput, "all", `abc`, "", "$[0]", "$[2]"}, + row: sql.UntypedSqlRow{jsonInput, "all", `abc`, "", "$[0]", "$[2]"}, exp: types.MustJSON(`["$[0]", "$[2].x"]`), }, { f: f6, - row: sql.Row{jsonInput, "all", `abc`, "", "$[2]", "$"}, + row: sql.UntypedSqlRow{jsonInput, "all", `abc`, "", "$[2]", "$"}, exp: types.MustJSON(`["$[2].x", "$[0]"]`), }, } diff --git a/sql/expression/function/json/jsontests/json_set_tests.go b/sql/expression/function/json/jsontests/json_set_tests.go index f9d5fbf132..48a3dd92f9 100644 --- a/sql/expression/function/json/jsontests/json_set_tests.go +++ b/sql/expression/function/json/jsontests/json_set_tests.go @@ -35,129 +35,129 @@ func JsonSetTestCases(t *testing.T, prepare prepareJsonValue) []testCase { { name: "update existing", f: f1, - row: sql.Row{jsonInput, "$.a", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$.a", 10.1}, expected: `{"a": 10.1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "set new", f: f1, - row: sql.Row{jsonInput, "$.e", "new"}, + row: sql.UntypedSqlRow{jsonInput, "$.e", "new"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo"},"e":"new"}`, }, { name: "update existing nested", f: f1, - row: sql.Row{jsonInput, "$.c.d", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.d", "test"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "test"}}`, }, { name: "update existing and set new", f: f2, - row: sql.Row{jsonInput, "$.a", 10.1, "$.e", "new"}, + row: sql.UntypedSqlRow{jsonInput, "$.a", 10.1, "$.e", "new"}, expected: `{"a": 10.1, "b": [2, 3], "c": {"d": "foo"},"e":"new"}`, }, { name: "set new nested does nothing", f: f1, - row: sql.Row{jsonInput, "$.a.e", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.a.e", "test"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "set new nested in existing struct", f: f1, - row: sql.Row{jsonInput, "$.c.e", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.e", "test"}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo","e":"test"}}`, }, { name: "update struct with indexing out of range", f: f1, - row: sql.Row{jsonInput, "$.c[5]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.c[5]", 4.1}, expected: `{"a": 1, "b": [2, 3], "c": [{"d": "foo"}, 4.1]}`, }, { name: "update element in array", f: f1, - row: sql.Row{jsonInput, "$.b[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.b[0]", 4.1}, expected: `{"a": 1, "b": [4.1, 3], "c": {"d": "foo"}}`, }, { name: "update element in array out of range", f: f1, - row: sql.Row{jsonInput, "$.b[5]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.b[5]", 4.1}, expected: `{"a": 1, "b": [2, 3, 4.1], "c": {"d": "foo"}}`, }, { name: "set nested in array does nothing", f: f1, - row: sql.Row{jsonInput, "$.b.c", 4}, + row: sql.UntypedSqlRow{jsonInput, "$.b.c", 4}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "update single element with indexing", f: f1, - row: sql.Row{jsonInput, "$.a[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.a[0]", 4.1}, expected: `{"a": 4.1, "b": [2, 3], "c": {"d": "foo"}}`, }, { name: "struct indexing", f: f1, - row: sql.Row{jsonInput, "$[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$[0]", 4.1}, expected: `4.1`, }, { name: "improper struct indexing", f: f1, - row: sql.Row{jsonInput, "$.[0]", 4.1}, + row: sql.UntypedSqlRow{jsonInput, "$.[0]", 4.1}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 2 of $.[0]"), }, { name: "invalid path", f: f1, - row: sql.Row{jsonInput, "foo", "test"}, + row: sql.UntypedSqlRow{jsonInput, "foo", "test"}, err: fmt.Errorf("Invalid JSON path expression. Path must start with '$'"), }, { name: "path contains * wildcard", f: f1, - row: sql.Row{jsonInput, "$.c.*", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.*", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.*"), }, { name: "path contains ** wildcard", f: f1, - row: sql.Row{jsonInput, "$.c.**", "test"}, + row: sql.UntypedSqlRow{jsonInput, "$.c.**", "test"}, err: fmt.Errorf("Invalid JSON path expression. Expected field name after '.' at character 4 of $.c.**"), }, { name: "invalid jsonInput type", f: f1, - row: sql.Row{1, "$", 10.1}, + row: sql.UntypedSqlRow{1, "$", 10.1}, err: sql.ErrInvalidJSONArgument.New(1, "json_set")}, { name: "invalid jsonInput string", f: f1, - row: sql.Row{"#", "$", 10.1}, + row: sql.UntypedSqlRow{"#", "$", 10.1}, err: sql.ErrInvalidJSONText.New(1, "json_set", "#")}, { name: "whole document", f: f1, - row: sql.Row{jsonInput, "$", 10.1}, + row: sql.UntypedSqlRow{jsonInput, "$", 10.1}, expected: `10.1`, }, { name: "null document", f: f1, - row: sql.Row{nil, "$", 42.7}, + row: sql.UntypedSqlRow{nil, "$", 42.7}, }, { name: "if any path is null, return null", f: f1, - row: sql.Row{jsonInput, nil, 10}, + row: sql.UntypedSqlRow{jsonInput, nil, 10}, }, { name: "accumulates L->R", f: f2, - row: sql.Row{jsonInput, "$.z", map[string]interface{}{"zz": 1.1}, "$.z.zz", 42.1}, + row: sql.UntypedSqlRow{jsonInput, "$.z", map[string]interface{}{"zz": 1.1}, "$.z.zz", 42.1}, expected: `{"a": 1, "b": [2, 3], "c": {"d": "foo"},"z":{"zz":42.1}}`, }, @@ -169,7 +169,7 @@ func JsonSetTestCases(t *testing.T, prepare prepareJsonValue) []testCase { // +---------------------------------------------------------------------+ { f: buildGetFieldExpressions(t, json.NewJSONSet, 9), - row: sql.Row{`[]`, + row: sql.UntypedSqlRow{`[]`, "$[2]", 1.1, // [] -> [1.1] "$[2]", 2.2, // [1.1] -> [1.1,2.2] "$[2]", 3.3, // [1.1, 2.2] -> [1.1, 2.2, 3.3] diff --git a/sql/expression/function/json/jsontests/json_type_test.go b/sql/expression/function/json/jsontests/json_type_test.go index 42ca9c6756..d0252c041a 100644 --- a/sql/expression/function/json/jsontests/json_type_test.go +++ b/sql/expression/function/json/jsontests/json_type_test.go @@ -35,128 +35,128 @@ func TestJSONType(t *testing.T) { f1 := buildGetFieldExpressions(t, json.NewJSONType, 1) testCases := []struct { f sql.Expression - row sql.Row + row sql.UntypedSqlRow exp interface{} err error }{ { f: f1, - row: sql.Row{``}, + row: sql.UntypedSqlRow{``}, err: sql.ErrInvalidJSONText.New(1, "json_type", ""), }, { f: f1, - row: sql.Row{`badjson`}, + row: sql.UntypedSqlRow{`badjson`}, err: sql.ErrInvalidJSONText.New(1, "json_type", "badjson"), }, { f: f1, - row: sql.Row{true}, + row: sql.UntypedSqlRow{true}, err: sql.ErrInvalidJSONArgument.New(1, "json_type"), }, { f: f1, - row: sql.Row{1}, + row: sql.UntypedSqlRow{1}, err: sql.ErrInvalidJSONArgument.New(1, "json_type"), }, { f: f1, - row: sql.Row{1.5}, + row: sql.UntypedSqlRow{1.5}, err: sql.ErrInvalidJSONArgument.New(1, "json_type"), }, { f: f1, - row: sql.Row{decimal.New(15, -1)}, + row: sql.UntypedSqlRow{decimal.New(15, -1)}, err: sql.ErrInvalidJSONArgument.New(1, "json_type"), }, { f: f1, - row: sql.Row{nil}, + row: sql.UntypedSqlRow{nil}, exp: "NULL", }, { f: f1, - row: sql.Row{`null`}, + row: sql.UntypedSqlRow{`null`}, exp: "NULL", }, { f: f1, - row: sql.Row{`1`}, + row: sql.UntypedSqlRow{`1`}, exp: "INTEGER", }, { f: f1, - row: sql.Row{`true`}, + row: sql.UntypedSqlRow{`true`}, exp: "BOOLEAN", }, { f: f1, - row: sql.Row{`123.456`}, + row: sql.UntypedSqlRow{`123.456`}, exp: "DOUBLE", }, { f: f1, - row: sql.Row{`[]`}, + row: sql.UntypedSqlRow{`[]`}, exp: "ARRAY", }, { f: f1, - row: sql.Row{`{}`}, + row: sql.UntypedSqlRow{`{}`}, exp: "OBJECT", }, { f: f1, - row: sql.Row{`[1, 2, 3]`}, + row: sql.UntypedSqlRow{`[1, 2, 3]`}, exp: "ARRAY", }, { f: f1, - row: sql.Row{`{"aa": 1, "bb": 2, "c": 3}`}, + row: sql.UntypedSqlRow{`{"aa": 1, "bb": 2, "c": 3}`}, exp: "OBJECT", }, { f: f1, - row: sql.Row{types.JSONDocument{nil}}, + row: sql.UntypedSqlRow{types.JSONDocument{nil}}, exp: "NULL", }, { f: f1, - row: sql.Row{types.JSONDocument{uint64(1)}}, + row: sql.UntypedSqlRow{types.JSONDocument{uint64(1)}}, exp: "UNSIGNED INTEGER", }, { f: f1, - row: sql.Row{types.JSONDocument{int64(1)}}, + row: sql.UntypedSqlRow{types.JSONDocument{int64(1)}}, exp: "INTEGER", }, { f: f1, - row: sql.Row{types.JSONDocument{true}}, + row: sql.UntypedSqlRow{types.JSONDocument{true}}, exp: "BOOLEAN", }, { f: f1, - row: sql.Row{types.JSONDocument{123.456}}, + row: sql.UntypedSqlRow{types.JSONDocument{123.456}}, exp: "DOUBLE", }, { f: f1, - row: sql.Row{types.JSONDocument{decimal.New(123456, -3)}}, + row: sql.UntypedSqlRow{types.JSONDocument{decimal.New(123456, -3)}}, exp: "DECIMAL", }, { f: f1, - row: sql.Row{types.JSONDocument{[]interface{}{}}}, + row: sql.UntypedSqlRow{types.JSONDocument{[]interface{}{}}}, exp: "ARRAY", }, { f: f1, - row: sql.Row{types.JSONDocument{map[string]interface{}{}}}, + row: sql.UntypedSqlRow{types.JSONDocument{map[string]interface{}{}}}, exp: "OBJECT", }, } diff --git a/sql/expression/function/json/jsontests/json_valid_test.go b/sql/expression/function/json/jsontests/json_valid_test.go index 137309e674..08e61d6d61 100644 --- a/sql/expression/function/json/jsontests/json_valid_test.go +++ b/sql/expression/function/json/jsontests/json_valid_test.go @@ -35,23 +35,23 @@ func TestValid(t *testing.T) { row sql.Row expected interface{} }{ - {f1, sql.Row{`null`}, true}, - {f1, sql.Row{`1`}, true}, - {f1, sql.Row{`[1]`}, true}, - {f1, sql.Row{`"fjsadflkd"`}, true}, - {f1, sql.Row{`[1, false]`}, true}, - {f1, sql.Row{`[1, {"a": 1}]`}, true}, - {f1, sql.Row{`{"a": 1}`}, true}, - {f1, sql.Row{`{"a": [1, false]}`}, true}, - {f1, sql.Row{`{"a": [1, {"a": 1}]}`}, true}, - {f1, sql.Row{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`}, true}, - {f1, sql.Row{nil}, nil}, - {f1, sql.Row{1}, false}, - {f1, sql.Row{true}, false}, - {f1, sql.Row{`incorrect`}, false}, - {f1, sql.Row{`{"a": 1"}`}, false}, - {f1, sql.Row{`{1}`}, false}, - {f1, sql.Row{`[1, "a": 1]`}, false}, + {f1, sql.UntypedSqlRow{`null`}, true}, + {f1, sql.UntypedSqlRow{`1`}, true}, + {f1, sql.UntypedSqlRow{`[1]`}, true}, + {f1, sql.UntypedSqlRow{`"fjsadflkd"`}, true}, + {f1, sql.UntypedSqlRow{`[1, false]`}, true}, + {f1, sql.UntypedSqlRow{`[1, {"a": 1}]`}, true}, + {f1, sql.UntypedSqlRow{`{"a": 1}`}, true}, + {f1, sql.UntypedSqlRow{`{"a": [1, false]}`}, true}, + {f1, sql.UntypedSqlRow{`{"a": [1, {"a": 1}]}`}, true}, + {f1, sql.UntypedSqlRow{`{"a": 1, "b": [2, 3], "c": {"d": "foo"}}`}, true}, + {f1, sql.UntypedSqlRow{nil}, nil}, + {f1, sql.UntypedSqlRow{1}, false}, + {f1, sql.UntypedSqlRow{true}, false}, + {f1, sql.UntypedSqlRow{`incorrect`}, false}, + {f1, sql.UntypedSqlRow{`{"a": 1"}`}, false}, + {f1, sql.UntypedSqlRow{`{1}`}, false}, + {f1, sql.UntypedSqlRow{`[1, "a": 1]`}, false}, } for _, tt := range testCases { diff --git a/sql/expression/function/json/jsontests/json_value_tests.go b/sql/expression/function/json/jsontests/json_value_tests.go index 6abe444a46..63ccb60390 100644 --- a/sql/expression/function/json/jsontests/json_value_tests.go +++ b/sql/expression/function/json/jsontests/json_value_tests.go @@ -36,30 +36,30 @@ func RunJsonValueTests(t *testing.T, prepare prepareJsonValue) { expected interface{} err error }{ - {row: sql.Row{prepare(t, `null`)}, expected: nil}, - {row: sql.Row{prepare(t, `1`)}, expected: "1"}, - {row: sql.Row{prepare(t, `[1]`)}, expected: `[1]`}, - {row: sql.Row{prepare(t, `{"a": "fjsadflkd"}`)}, expected: `{"a": "fjsadflkd"}`}, - {row: sql.Row{prepare(t, `[1, false]`)}, expected: `[1, false]`}, - {row: sql.Row{prepare(t, `[1, false]`)}, path: "$[0]", typ: types.Int64, expected: int64(1)}, - {row: sql.Row{prepare(t, `[1, false]`)}, path: "$[0]", typ: types.Uint64, expected: uint64(1)}, - {row: sql.Row{prepare(t, `[1, false]`)}, path: "$[0]", expected: "1"}, - {row: sql.Row{`[1, false]`}, path: "$[3]", expected: nil}, - {row: sql.Row{prepare(t, `[1, {"a": 1}]`)}, path: "$[1].a", typ: types.Int64, expected: int64(1)}, - {row: sql.Row{prepare(t, `[1, {"a": 1}]`)}, path: "$[1]", typ: types.JSON, expected: types.MustJSON(`{"a": 1}`)}, + {row: sql.UntypedSqlRow{prepare(t, `null`)}, expected: nil}, + {row: sql.UntypedSqlRow{prepare(t, `1`)}, expected: "1"}, + {row: sql.UntypedSqlRow{prepare(t, `[1]`)}, expected: `[1]`}, + {row: sql.UntypedSqlRow{prepare(t, `{"a": "fjsadflkd"}`)}, expected: `{"a": "fjsadflkd"}`}, + {row: sql.UntypedSqlRow{prepare(t, `[1, false]`)}, expected: `[1, false]`}, + {row: sql.UntypedSqlRow{prepare(t, `[1, false]`)}, path: "$[0]", typ: types.Int64, expected: int64(1)}, + {row: sql.UntypedSqlRow{prepare(t, `[1, false]`)}, path: "$[0]", typ: types.Uint64, expected: uint64(1)}, + {row: sql.UntypedSqlRow{prepare(t, `[1, false]`)}, path: "$[0]", expected: "1"}, + {row: sql.UntypedSqlRow{`[1, false]`}, path: "$[3]", expected: nil}, + {row: sql.UntypedSqlRow{prepare(t, `[1, {"a": 1}]`)}, path: "$[1].a", typ: types.Int64, expected: int64(1)}, + {row: sql.UntypedSqlRow{prepare(t, `[1, {"a": 1}]`)}, path: "$[1]", typ: types.JSON, expected: types.MustJSON(`{"a": 1}`)}, { - row: sql.Row{prepare(t, `[{"a": 1, "b": 2}, {"a": 3, "b": 4}]`)}, + row: sql.UntypedSqlRow{prepare(t, `[{"a": 1, "b": 2}, {"a": 3, "b": 4}]`)}, path: "$[*].a", typ: types.JSON, expected: types.MustJSON(`[1, 3]`), }, - {row: sql.Row{1}, path: `$.f`, err: sql.ErrInvalidJSONArgument.New(1, "json_value")}, - {row: sql.Row{`}`}, path: `$.f`, err: sql.ErrInvalidJSONText.New(1, "json_value", "}")}, + {row: sql.UntypedSqlRow{1}, path: `$.f`, err: sql.ErrInvalidJSONArgument.New(1, "json_value")}, + {row: sql.UntypedSqlRow{`}`}, path: `$.f`, err: sql.ErrInvalidJSONText.New(1, "json_value", "}")}, } for _, tt := range tests { - args := make([]string, len(tt.row)) - for i, a := range tt.row { + args := make([]string, tt.row.Len()) + for i, a := range tt.row.Values() { args[i] = fmt.Sprint(a) } if tt.path == "" { diff --git a/sql/expression/function/length_test.go b/sql/expression/function/length_test.go index 294aaa376d..5fc13dec8b 100644 --- a/sql/expression/function/length_test.go +++ b/sql/expression/function/length_test.go @@ -110,7 +110,7 @@ func TestLength(t *testing.T) { result, err := tt.fn(expression.NewGetField(0, tt.inputType, "foo", false)).Eval( sql.NewEmptyContext(), - sql.Row{tt.input}, + sql.UntypedSqlRow{tt.input}, ) require.NoError(err) diff --git a/sql/expression/function/load_file_test.go b/sql/expression/function/load_file_test.go index d280afdee5..9463881ca9 100644 --- a/sql/expression/function/load_file_test.go +++ b/sql/expression/function/load_file_test.go @@ -38,7 +38,7 @@ func TestLoadFileNoSecurePriv(t *testing.T) { fn := NewLoadFile(fileName) // Assert that Load File returns the regardless since secure_file_priv is set to an empty directory - res, err := fn.Eval(sql.NewEmptyContext(), sql.Row{}) + res, err := fn.Eval(sql.NewEmptyContext(), sql.UntypedSqlRow{}) assert.NoError(t, err) assert.Equal(t, []byte("my data"), res) } @@ -64,7 +64,7 @@ func TestLoadFileBadDir(t *testing.T) { fn := NewLoadFile(fileName) // Assert that Load File returns nil since the file is not in secure_file_priv directory - res, err := fn.Eval(sql.NewEmptyContext(), sql.Row{}) + res, err := fn.Eval(sql.NewEmptyContext(), sql.UntypedSqlRow{}) assert.NoError(t, err) assert.Equal(t, nil, res) } @@ -121,7 +121,7 @@ func runLoadFileTest(t *testing.T, tt loadFileTestCase, dir string) { fn := NewLoadFile(fileName) // Load the file in - res, err := fn.Eval(sql.NewEmptyContext(), sql.Row{}) + res, err := fn.Eval(sql.NewEmptyContext(), sql.UntypedSqlRow{}) assert.NoError(t, err) assert.Equal(t, tt.fileData, res) } diff --git a/sql/expression/function/locate_test.go b/sql/expression/function/locate_test.go index b1fd5badc3..c7ceb65067 100644 --- a/sql/expression/function/locate_test.go +++ b/sql/expression/function/locate_test.go @@ -117,11 +117,11 @@ func TestLocate(t *testing.T) { expression.NewGetField(0, types.Text, "substr", false), expression.NewGetField(1, types.LongText, "str", false), } - row := sql.Row{tt.Substr, tt.Str} + row := sql.UntypedSqlRow{tt.Substr, tt.Str} if tt.Start != nil { exprs = append(exprs, expression.NewGetField(2, types.Int32, "start", false)) - row = append(row, *tt.Start) + row = row.Append(sql.NewUntypedRow(*tt.Start)).(sql.UntypedSqlRow) } f, err := NewLocate(exprs...) diff --git a/sql/expression/function/registry.go b/sql/expression/function/registry.go index 08583c0ace..e91f8bcc3c 100644 --- a/sql/expression/function/registry.go +++ b/sql/expression/function/registry.go @@ -24,7 +24,6 @@ import ( "github.com/dolthub/go-mysql-server/sql/expression/function/aggregation/window" "github.com/dolthub/go-mysql-server/sql/expression/function/json" "github.com/dolthub/go-mysql-server/sql/expression/function/spatial" - "github.com/dolthub/go-mysql-server/sql/expression/function/vector" ) // ErrFunctionAlreadyRegistered is thrown when a function is already registered @@ -310,8 +309,6 @@ var BuiltIns = []sql.Function{ sql.FunctionN{Name: "week", Fn: NewWeek}, sql.Function1{Name: "values", Fn: NewValues}, sql.Function1{Name: "validate_password_strength", Fn: NewValidatePasswordStrength}, - sql.Function2{Name: "vec_distance", Fn: vector.NewL2SquaredDistance}, - sql.Function2{Name: "vec_distance_l2_squared", Fn: vector.NewL2SquaredDistance}, sql.Function1{Name: "weekday", Fn: NewWeekday}, sql.Function1{Name: "weekofyear", Fn: NewWeekOfYear}, sql.Function1{Name: "year", Fn: NewYear}, diff --git a/sql/expression/function/substring.go b/sql/expression/function/substring.go index 2cc9236a2c..6b0a2b9e41 100644 --- a/sql/expression/function/substring.go +++ b/sql/expression/function/substring.go @@ -26,7 +26,7 @@ import ( // Substring is a function to return a part of a string. // This function behaves as the homonym MySQL function. // Since Go strings are UTF8, this function does not return a direct sub -// string str[start:start+length], instead returns the substring of rune +// string str.GetValue(start:start+length), instead returns the substring of rune // s. That is, "á"[0:1] does not return a partial unicode glyph, but "á" // itself. type Substring struct { diff --git a/sql/expression/function/uuid_test.go b/sql/expression/function/uuid_test.go index bce11aea53..0fe1d43157 100644 --- a/sql/expression/function/uuid_test.go +++ b/sql/expression/function/uuid_test.go @@ -32,7 +32,7 @@ func TestUUID(t *testing.T) { // Generate a UUID and validate that is a legitimate uuid uuidE := NewUUIDFunc() - result, err := uuidE.Eval(ctx, sql.Row{nil}) + result, err := uuidE.Eval(ctx, sql.UntypedSqlRow{nil}) require.NoError(t, err) myUUID := result.(string) @@ -41,7 +41,7 @@ func TestUUID(t *testing.T) { // validate that generated uuid is legitimate for IsUUID val := NewIsUUID(uuidE) - require.Equal(t, true, eval(t, val, sql.Row{nil})) + require.Equal(t, true, eval(t, val, sql.UntypedSqlRow{nil})) // Use a UUID regex as a sanity check re2 := regexp.MustCompile(`\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b`) @@ -69,7 +69,7 @@ func TestIsUUID(t *testing.T) { f := NewIsUUID(expression.NewLiteral(tt.value, tt.rowType)) t.Run(tt.name, func(t *testing.T) { - require.Equal(t, tt.expected, eval(t, f, sql.Row{nil})) + require.Equal(t, tt.expected, eval(t, f, sql.UntypedSqlRow{nil})) }) req := require.New(t) @@ -110,7 +110,7 @@ func TestUUIDToBinValid(t *testing.T) { h := NewHex(f) t.Run(tt.name, func(t *testing.T) { - require.Equal(t, tt.expected, eval(t, h, sql.Row{nil})) + require.Equal(t, tt.expected, eval(t, h, sql.UntypedSqlRow{nil})) }) req := require.New(t) @@ -137,7 +137,7 @@ func TestUUIDToBinFailing(t *testing.T) { t.Run(tt.name, func(t *testing.T) { ctx := sql.NewEmptyContext() - _, err := f.Eval(ctx, sql.Row{nil}) + _, err := f.Eval(ctx, sql.UntypedSqlRow{nil}) require.Error(t, err) }) } @@ -145,7 +145,7 @@ func TestUUIDToBinFailing(t *testing.T) { func TestBinToUUID(t *testing.T) { // Test that UUID_TO_BIN to BIN_TO_UUID is reflexive - uuidE := eval(t, NewUUIDFunc(), sql.Row{nil}) + uuidE := eval(t, NewUUIDFunc(), sql.UntypedSqlRow{nil}) f, err := NewUUIDToBin(expression.NewLiteral(uuidE, types.LongText)) require.NoError(t, err) @@ -153,7 +153,7 @@ func TestBinToUUID(t *testing.T) { retUUID, err := NewBinToUUID(f) require.NoError(t, err) - require.Equal(t, uuidE, eval(t, retUUID, sql.Row{nil})) + require.Equal(t, uuidE, eval(t, retUUID, sql.UntypedSqlRow{nil})) // Run UUID_TO_BIN through a series of test cases. validTestCases := []struct { @@ -183,7 +183,7 @@ func TestBinToUUID(t *testing.T) { require.NoError(t, err) t.Run(tt.name, func(t *testing.T) { - require.Equal(t, tt.expected, eval(t, f, sql.Row{nil})) + require.Equal(t, tt.expected, eval(t, f, sql.UntypedSqlRow{nil})) }) req := require.New(t) @@ -210,7 +210,7 @@ func TestBinToUUIDFailing(t *testing.T) { t.Run(tt.name, func(t *testing.T) { ctx := sql.NewEmptyContext() - _, err := f.Eval(ctx, sql.Row{nil}) + _, err := f.Eval(ctx, sql.UntypedSqlRow{nil}) require.Error(t, err) }) } diff --git a/sql/expression/get_field.go b/sql/expression/get_field.go index af6c60b99b..6dcae558e2 100644 --- a/sql/expression/get_field.go +++ b/sql/expression/get_field.go @@ -138,10 +138,10 @@ var ErrIndexOutOfBounds = errors.NewKind("unable to find field with index %d in // Eval implements the Expression interface. func (p *GetField) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) { - if p.fieldIndex < 0 || p.fieldIndex >= len(row) { - return nil, ErrIndexOutOfBounds.New(p.fieldIndex, len(row)) + if p.fieldIndex < 0 || p.fieldIndex >= row.Len() { + return nil, ErrIndexOutOfBounds.New(p.fieldIndex, row.Len()) } - return row[p.fieldIndex], nil + return row.GetValue(p.fieldIndex), nil } func (p *GetField) Eval2(ctx *sql.Context, row sql.Row2) (sql.Value, error) { @@ -163,11 +163,11 @@ func (p *GetField) WithChildren(children ...sql.Expression) (sql.Expression, err func (p *GetField) String() string { if p.table == "" { if p.backTickNames { - return "`" + p.name + "`" + return fmt.Sprintf("`%s`", p.name) } return p.name } - return p.table + "." + p.name + return fmt.Sprintf("%s.%s", p.table, p.name) } func (p *GetField) DebugString() string { diff --git a/sql/expression/in.go b/sql/expression/in.go index f648f9816f..55ee1c77af 100644 --- a/sql/expression/in.go +++ b/sql/expression/in.go @@ -222,7 +222,7 @@ func newInMap(ctx *sql.Context, right Tuple, lType sql.Type) (map[uint64]sql.Exp hasNull = true continue } - i, err := el.Eval(ctx, sql.Row{}) + i, err := el.Eval(ctx, sql.UntypedSqlRow{}) if err != nil { return nil, hasNull, err } diff --git a/sql/expression/interval_test.go b/sql/expression/interval_test.go index 0a808a5ef0..4aae6a7b7d 100644 --- a/sql/expression/interval_test.go +++ b/sql/expression/interval_test.go @@ -160,7 +160,7 @@ func TestIntervalEvalDelta(t *testing.T) { { NewGetField(0, types.Int64, "foo", false), "DAY", - sql.Row{int64(2)}, + sql.UntypedSqlRow{int64(2)}, TimeDelta{Days: 2}, }, { diff --git a/sql/expression/matchagainst.go b/sql/expression/matchagainst.go index 02a2dbc666..265c13e8ef 100644 --- a/sql/expression/matchagainst.go +++ b/sql/expression/matchagainst.go @@ -84,7 +84,7 @@ func (expr *MatchAgainst) Children() []sql.Expression { // Eval implements sql.Expression func (expr *MatchAgainst) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) { - row = row[:expr.expectedRowLen] + row = row.Subslice(0, expr.expectedRowLen) switch expr.SearchModifier { case fulltext.SearchModifier_NaturalLanguage: return expr.inNaturalLanguageMode(ctx, row) @@ -304,7 +304,7 @@ func (expr *MatchAgainst) inNaturalLanguageMode(ctx *sql.Context, row sql.Row) ( ranges := make(sql.MySQLRange, 1+len(expr.KeyCols.Positions)) ranges[0] = sql.ClosedRangeColumnExpr(wordStr, wordStr, expr.DocCountTable.Schema()[0].Type) for i, keyColPos := range expr.KeyCols.Positions { - ranges[i+1] = sql.ClosedRangeColumnExpr(row[keyColPos], row[keyColPos], expr.DocCountTable.Schema()[i+1].Type) + ranges[i+1] = sql.ClosedRangeColumnExpr(row.GetValue(keyColPos), row.GetValue(keyColPos), expr.DocCountTable.Schema()[i+1].Type) } lookup = sql.IndexLookup{Ranges: sql.MySQLRangeCollection{ranges}, Index: expr.docCountIndex} } else { @@ -336,7 +336,7 @@ func (expr *MatchAgainst) inNaturalLanguageMode(ctx *sql.Context, row sql.Row) ( return 0, fmt.Errorf("somehow there are duplicate entries within the Full-Text doc count table") } docCountRow := docCountRows[0] - docCount := float64(docCountRow[len(docCountRow)-1].(uint64)) + docCount := float64(docCountRow.GetValue(docCountRow.Len() - 1).(uint64)) if docCount == 0 { // We've got an empty document count, so the word does not match (so it should have been deleted) continue @@ -396,8 +396,8 @@ func (expr *MatchAgainst) inNaturalLanguageMode(ctx *sql.Context, row sql.Row) ( // Calculate the relevancy (partially based on an old MySQL implementation) // https://web.archive.org/web/20220122170304/http://dev.mysql.com/doc/internals/en/full-text-search.html - globalCount := float64(globalCountRow[len(globalCountRow)-1].(uint64)) - uniqueWords := float64(rowCountRow[2].(uint64)) + globalCount := float64(globalCountRow.GetValue(globalCountRow.Len() - 1).(uint64)) + uniqueWords := float64(rowCountRow.GetValue(2).(uint64)) base := math.Log(docCount) + 1 normFactor := uniqueWords / (1 + 0.115*uniqueWords) globalMult := math.Log(float64(expr.parentRowCount)/globalCount) + 1 diff --git a/sql/expression/set.go b/sql/expression/set.go index e7e72e95f2..2e307949b8 100644 --- a/sql/expression/set.go +++ b/sql/expression/set.go @@ -64,8 +64,8 @@ func (s *SetField) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) { return nil, errCannotSetField.New(s.LeftChild) } - if getField.fieldIndex < 0 || getField.fieldIndex >= len(row) { - return nil, ErrIndexOutOfBounds.New(getField.fieldIndex, len(row)) + if getField.fieldIndex < 0 || getField.fieldIndex >= row.Len() { + return nil, ErrIndexOutOfBounds.New(getField.fieldIndex, row.Len()) } val, err := s.RightChild.Eval(ctx, row) if err != nil { @@ -83,7 +83,7 @@ func (s *SetField) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) { val = convertedVal } updatedRow := row.Copy() - updatedRow[getField.fieldIndex] = val + updatedRow.SetValue(getField.fieldIndex, val) return updatedRow, nil } diff --git a/sql/fulltext/fulltext.go b/sql/fulltext/fulltext.go index 5cd595915d..4f6605b9d0 100644 --- a/sql/fulltext/fulltext.go +++ b/sql/fulltext/fulltext.go @@ -99,8 +99,8 @@ func HashRow(row sql.Row) (string, error) { h := sha256.New() // Since we can't represent a NULL value in binary, we instead append the NULL results to the end, which will // give us a unique representation for representing NULL values. - valIsNull := make([]bool, len(row)) - for i, val := range row { + valIsNull := make([]bool, row.Len()) + for i, val := range row.Values() { var err error valIsNull[i], err = writeHashedValue(h, val) if err != nil { diff --git a/sql/fulltext/fulltext_editor.go b/sql/fulltext/fulltext_editor.go index 78d1d276b5..56804d4f46 100644 --- a/sql/fulltext/fulltext_editor.go +++ b/sql/fulltext/fulltext_editor.go @@ -265,7 +265,7 @@ func (editor TableEditor) Insert(ctx *sql.Context, row sql.Row) error { // Grab the source columns sourceCols := make([]interface{}, len(index.SourceCols)) for i, sourceCol := range index.SourceCols { - sourceCols[i] = row[sourceCol] + sourceCols[i] = row.GetValue(sourceCol) } // Get the row count for this exact row's hash @@ -277,7 +277,7 @@ func (editor TableEditor) Insert(ctx *sql.Context, row sql.Row) error { // If there are duplicate rows, then we don't need to write to all of the tables if rowCount >= 1 { // We'll update the row count since we're adding a row - if err = index.RowCount.Editor.Update(ctx, sql.Row{hash, rowCount, uniqueWords}, sql.Row{hash, rowCount + 1, uniqueWords}); err != nil { + if err = index.RowCount.Editor.Update(ctx, sql.NewSqlRow(hash, rowCount, uniqueWords), sql.NewSqlRow(hash, rowCount+1, uniqueWords)); err != nil { return err } // We then need to update the global count, since it's dependent on the number of rows as well @@ -305,7 +305,7 @@ func (editor TableEditor) Insert(ctx *sql.Context, row sql.Row) error { if err != nil { return err } - if err = index.RowCount.Editor.Insert(ctx, sql.Row{hash, uint64(1), parser.UniqueWordCount(ctx)}); err != nil { + if err = index.RowCount.Editor.Insert(ctx, sql.NewSqlRow(hash, uint64(1), parser.UniqueWordCount(ctx))); err != nil { return err } @@ -314,7 +314,7 @@ func (editor TableEditor) Insert(ctx *sql.Context, row sql.Row) error { if index.KeyCols.Type != KeyType_None { keyCols = make([]interface{}, len(index.KeyCols.Positions)) for i, refCol := range index.KeyCols.Positions { - keyCols[i] = row[refCol] + keyCols[i] = row.GetValue(refCol) } } else { keyCols = []interface{}{hash} @@ -327,10 +327,12 @@ func (editor TableEditor) Insert(ctx *sql.Context, row sql.Row) error { continue } // Write to the position table - positionRow := make(sql.Row, 1, len(SchemaPosition)+len(keyCols)) - positionRow[0] = word - positionRow = append(positionRow, keyCols...) - positionRow = append(positionRow, position) + positionRow := sql.NewSqlRowWithLen(2 + len(keyCols)) + positionRow.SetValue(0, word) + for i := 1; i < len(keyCols)+1; i++ { + positionRow.SetValue(i, keyCols[i-1]) + } + positionRow.SetValue(1+len(keyCols), position) if err = index.Position.Editor.Insert(ctx, positionRow); err != nil { return err } @@ -350,10 +352,12 @@ func (editor TableEditor) Insert(ctx *sql.Context, row sql.Row) error { if err != nil { return err } - docCountRow := make(sql.Row, 1, len(SchemaDocCount)+len(keyCols)) - docCountRow[0] = word - docCountRow = append(docCountRow, keyCols...) - docCountRow = append(docCountRow, wordDocCount) + docCountRow := sql.NewSqlRowWithLen(2 + len(keyCols)) + docCountRow.SetValue(0, word) + for i := 1; i < len(keyCols)+1; i++ { + docCountRow.SetValue(i, keyCols[i-1]) + } + docCountRow.SetValue(1+len(keyCols), wordDocCount) //TODO: write to this table only once, rather than ignoring duplicate errors if err = index.DocCount.Editor.Insert(ctx, docCountRow); err != nil && !sql.ErrPrimaryKeyViolation.Is(err) && !sql.ErrUniqueKeyViolation.Is(err) && !sql.ErrDuplicateEntry.Is(err) { return err @@ -391,10 +395,10 @@ func (editor TableEditor) Delete(ctx *sql.Context, row sql.Row) error { // Grab the source columns sourceCols := make([]interface{}, len(index.SourceCols)) for i, sourceCol := range index.SourceCols { - if sourceCol >= len(row) { + if sourceCol >= row.Len() { panic(fmt.Sprintf("%v", row)) } - sourceCols[i] = row[sourceCol] + sourceCols[i] = row.GetValue(sourceCol) } // Get the row count for this exact row's hash @@ -411,7 +415,7 @@ func (editor TableEditor) Delete(ctx *sql.Context, row sql.Row) error { // If there are duplicate rows, then we can decrement their counts and update the global counts if rowCount > 1 { // We'll update the row count since we're removing a row - if err = index.RowCount.Editor.Update(ctx, sql.Row{hash, rowCount, uniqueWords}, sql.Row{hash, rowCount - 1, uniqueWords}); err != nil { + if err = index.RowCount.Editor.Update(ctx, sql.NewSqlRow(hash, rowCount, uniqueWords), sql.NewSqlRow(hash, rowCount-1, uniqueWords)); err != nil { return err } // We then need to update the global count, since it's dependent on the number of rows as well @@ -432,7 +436,7 @@ func (editor TableEditor) Delete(ctx *sql.Context, row sql.Row) error { } // Remove the only entry from the row count table - if err = index.RowCount.Editor.Delete(ctx, sql.Row{hash, uint64(1), uniqueWords}); err != nil { + if err = index.RowCount.Editor.Delete(ctx, sql.NewSqlRow(hash, uint64(1), uniqueWords)); err != nil { return err } @@ -441,7 +445,7 @@ func (editor TableEditor) Delete(ctx *sql.Context, row sql.Row) error { if index.KeyCols.Type != KeyType_None { keyCols = make([]interface{}, len(index.KeyCols.Positions)) for i, refCol := range index.KeyCols.Positions { - keyCols[i] = row[refCol] + keyCols[i] = row.GetValue(refCol) } } else { keyCols = []interface{}{hash} @@ -458,10 +462,13 @@ func (editor TableEditor) Delete(ctx *sql.Context, row sql.Row) error { continue } // Delete from the position table - positionRow := make(sql.Row, 1, len(SchemaPosition)+len(keyCols)) - positionRow[0] = word - positionRow = append(positionRow, keyCols...) - positionRow = append(positionRow, position) + + positionRow := sql.NewSqlRowWithLen(2 + len(keyCols)) + positionRow.SetValue(0, word) + for i := 1; i < len(keyCols)+1; i++ { + positionRow.SetValue(i, keyCols[i-1]) + } + positionRow.SetValue(1+len(keyCols), position) if err = index.Position.Editor.Delete(ctx, positionRow); err != nil { return err } @@ -474,10 +481,12 @@ func (editor TableEditor) Delete(ctx *sql.Context, row sql.Row) error { word, reachedTheEnd, err = parser.NextUnique(ctx) for ; err == nil && !reachedTheEnd; word, reachedTheEnd, err = parser.NextUnique(ctx) { // Delete from the document count table - docCountRow := make(sql.Row, 1, len(SchemaDocCount)+len(keyCols)) - docCountRow[0] = word - docCountRow = append(docCountRow, keyCols...) - docCountRow = append(docCountRow, uint64(0)) // Since count isn't in the PK, this should be safe (caught by tests if not) + docCountRow := sql.NewSqlRowWithLen(2 + len(keyCols)) + docCountRow.SetValue(0, word) + for i := 1; i < len(keyCols)+1; i++ { + docCountRow.SetValue(i, keyCols[i-1]) + } + docCountRow.SetValue(1+len(keyCols), uint64(0)) // Since count isn't in the PK, this should be safe (caught by tests if not) if err = index.DocCount.Editor.Delete(ctx, docCountRow); err != nil { return err } @@ -540,7 +549,7 @@ func (TableEditor) getRowCount(ctx *sql.Context, ie IndexEditors, hash string) ( } else if len(rows) > 1 { return 0, 0, fmt.Errorf("somehow there are duplicate entries within the Full-Text row count table") } - return rows[0][1].(uint64), rows[0][2].(uint64), nil + return rows[0].GetValue(1).(uint64), rows[0].GetValue(2).(uint64), nil } // updateGlobalCount either increments or decrements the global count of the given word for the @@ -564,24 +573,24 @@ func (TableEditor) updateGlobalCount(ctx *sql.Context, ie IndexEditors, word str return nil } // Our new count is 1, so we need to create a new entry - return ie.GlobalCount.Editor.Insert(ctx, sql.Row{word, uint64(1)}) + return ie.GlobalCount.Editor.Insert(ctx, sql.NewSqlRow(word, uint64(1))) } else if len(rows) != 1 { return fmt.Errorf("somehow there are duplicate entries within the Full-Text global count table") } row := rows[0] - oldCount := row[len(row)-1].(uint64) + oldCount := row.GetValue(row.Len() - 1).(uint64) // First we'll delete the existing row if err = ie.GlobalCount.Editor.Delete(ctx, row); err != nil { return err } // If we're incrementing, then we can add 1 to the old count if increment { - if err = ie.GlobalCount.Editor.Insert(ctx, sql.Row{word, oldCount + 1}); err != nil { + if err = ie.GlobalCount.Editor.Insert(ctx, sql.NewSqlRow(word, oldCount+1)); err != nil { return err } } else if oldCount > 1 { // We're decrementing from a number higher than 1, so we need to update the row - if err = ie.GlobalCount.Editor.Insert(ctx, sql.Row{word, oldCount - 1}); err != nil { + if err = ie.GlobalCount.Editor.Insert(ctx, sql.NewSqlRow(word, oldCount-1)); err != nil { return err } } diff --git a/sql/go_bench_test.go b/sql/go_bench_test.go new file mode 100644 index 0000000000..6c245081c9 --- /dev/null +++ b/sql/go_bench_test.go @@ -0,0 +1,25 @@ +package sql + +import ( + "testing" +) + +var result_ Row + +func BenchmarkCopyDefaultRow(b *testing.B) { + var res UntypedSqlRow + var r UntypedSqlRow = make([]interface{}, 1) + for i := 0; i < b.N; i++ { + res = r.Copy().(UntypedSqlRow) + } + result_ = Row(res) +} + +func BenchmarkCopyRow(b *testing.B) { + var res Row + var r UntypedSqlRow = make([]interface{}, 1) + for i := 0; i < b.N; i++ { + res = r.Copy() + } + result_ = res +} diff --git a/sql/in_mem_table/multimapeditors_test.go b/sql/in_mem_table/multimapeditors_test.go index 5d2fcf0627..659411cb3f 100644 --- a/sql/in_mem_table/multimapeditors_test.go +++ b/sql/in_mem_table/multimapeditors_test.go @@ -25,31 +25,31 @@ import ( var userValueOps = ValueOps[*user]{ ToRow: func(ctx *sql.Context, u *user) (sql.Row, error) { - return sql.Row{u.username, u.email}, nil + return sql.UntypedSqlRow{u.username, u.email}, nil }, FromRow: func(ctx *sql.Context, r sql.Row) (*user, error) { - if len(r) != 2 { + if r.Len() != 2 { return nil, errors.New("invalid schema for user insert") } - username, ok := r[0].(string) + username, ok := r.GetValue(0).(string) if !ok { return nil, errors.New("invalid schema for user insert") } - email, ok := r[1].(string) + email, ok := r.GetValue(1).(string) if !ok { return nil, errors.New("invalid schema for user insert") } return &user{username, email, 0}, nil }, UpdateWithRow: func(ctx *sql.Context, r sql.Row, u *user) (*user, error) { - if len(r) != 2 { + if r.Len() != 2 { return nil, errors.New("invalid schema for user insert") } - username, ok := r[0].(string) + username, ok := r.GetValue(0).(string) if !ok { return nil, errors.New("invalid schema for user insert") } - email, ok := r[1].(string) + email, ok := r.GetValue(1).(string) if !ok { return nil, errors.New("invalid schema for user insert") } @@ -65,7 +65,7 @@ func TestTableEditorInsert(t *testing.T) { set := NewIndexedSet(ueq, keyers) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Insert(nil, sql.Row{"aaron", "aaron@dolthub.com"})) + require.NoError(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 1, set.Count()) require.Len(t, set.GetMany(usernameKeyer{}, "aaron"), 1) @@ -74,16 +74,16 @@ func TestTableEditorInsert(t *testing.T) { set := NewIndexedSet(ueq, keyers) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Insert(nil, sql.Row{"aaron", "aaron@dolthub.com"})) - require.Error(t, ed.Insert(nil, sql.Row{"aaron", "aaron@dolthub.com"})) + require.NoError(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com"})) + require.Error(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com"})) }) t.Run("InsertBadSchema", func(t *testing.T) { set := NewIndexedSet(ueq, keyers) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.Error(t, ed.Insert(nil, sql.Row{"aaron", "aaron@dolthub.com", "extra value"})) - require.Error(t, ed.Insert(nil, sql.Row{123, "aaron@dolthub.com"})) - require.Error(t, ed.Insert(nil, sql.Row{"aaron", 123})) + require.Error(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "extra value"})) + require.Error(t, ed.Insert(nil, sql.UntypedSqlRow{123, "aaron@dolthub.com"})) + require.Error(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", 123})) }) } @@ -94,7 +94,7 @@ func TestTableEditorDelete(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", 0}) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Delete(nil, sql.Row{"aaron", "aaron@dolthub.com"})) + require.NoError(t, ed.Delete(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 1, set.Count()) require.Len(t, set.GetMany(usernameKeyer{}, "brian"), 1) @@ -105,7 +105,7 @@ func TestTableEditorDelete(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", 0}) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Delete(nil, sql.Row{"jason", "jason@dolthub.com"})) + require.NoError(t, ed.Delete(nil, sql.UntypedSqlRow{"jason", "jason@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 2, set.Count()) require.Len(t, set.GetMany(usernameKeyer{}, "brian"), 1) @@ -117,7 +117,7 @@ func TestTableEditorDelete(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", 0}) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Delete(nil, sql.Row{"aaron", "aaron+alternative@dolthub.com"})) + require.NoError(t, ed.Delete(nil, sql.UntypedSqlRow{"aaron", "aaron+alternative@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 1, set.Count()) require.Len(t, set.GetMany(usernameKeyer{}, "brian"), 1) @@ -132,7 +132,7 @@ func TestTableEditorUpdate(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", 0}) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Update(nil, sql.Row{"aaron", "aaron@dolthub.com"}, sql.Row{"aaron", "aaron+new@dolthub.com"})) + require.NoError(t, ed.Update(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com"}, sql.UntypedSqlRow{"aaron", "aaron+new@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 2, set.Count()) require.Len(t, set.GetMany(usernameKeyer{}, "brian"), 1) @@ -146,7 +146,7 @@ func TestTableEditorUpdate(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", 0}) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Update(nil, sql.Row{"aaron", "aaron@dolthub.com"}, sql.Row{"aaron.son", "aaron+new@dolthub.com"})) + require.NoError(t, ed.Update(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com"}, sql.UntypedSqlRow{"aaron.son", "aaron+new@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 2, set.Count()) require.Len(t, set.GetMany(usernameKeyer{}, "brian"), 1) @@ -165,7 +165,7 @@ func TestTableEditorUpdate(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", 1}) ed := &IndexedSetTableEditor[*user]{set, userValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Update(nil, sql.Row{"brian", "brian@dolthub.com"}, sql.Row{"brian", "brian+new@dolthub.com"})) + require.NoError(t, ed.Update(nil, sql.UntypedSqlRow{"brian", "brian@dolthub.com"}, sql.UntypedSqlRow{"brian", "brian+new@dolthub.com"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 2, set.Count()) res := set.GetMany(usernameKeyer{}, "brian") @@ -184,29 +184,29 @@ var userPetsMultiValueOps = MultiValueOps[*user]{ ToRows: func(ctx *sql.Context, u *user) ([]sql.Row, error) { var res []sql.Row if (u.sidecar & userPetDog) == userPetDog { - res = append(res, sql.Row{u.username, u.email, "dog"}) + res = append(res, sql.UntypedSqlRow{u.username, u.email, "dog"}) } if (u.sidecar & userPetCat) == userPetCat { - res = append(res, sql.Row{u.username, u.email, "cat"}) + res = append(res, sql.UntypedSqlRow{u.username, u.email, "cat"}) } if (u.sidecar & userPetFish) == userPetFish { - res = append(res, sql.Row{u.username, u.email, "fish"}) + res = append(res, sql.UntypedSqlRow{u.username, u.email, "fish"}) } return res, nil }, FromRow: func(ctx *sql.Context, r sql.Row) (*user, error) { - if len(r) != 3 { + if r.Len() != 3 { return nil, errors.New("invalid schema for user pet insert") } - username, ok := r[0].(string) + username, ok := r.GetValue(0).(string) if !ok { return nil, errors.New("invalid schema for user pet insert") } - email, ok := r[1].(string) + email, ok := r.GetValue(1).(string) if !ok { return nil, errors.New("invalid schema for user pet insert") } - pet, ok := r[2].(string) + pet, ok := r.GetValue(2).(string) if !ok { return nil, errors.New("invalid schema for user pet insert") } @@ -223,10 +223,10 @@ var userPetsMultiValueOps = MultiValueOps[*user]{ return &user{username, email, sidecar}, nil }, AddRow: func(ctx *sql.Context, r sql.Row, u *user) (*user, error) { - if len(r) != 3 { + if r.Len() != 3 { return nil, errors.New("invalid schema for user pet insert") } - pet, ok := r[2].(string) + pet, ok := r.GetValue(2).(string) if !ok { return nil, errors.New("invalid schema for user pet insert") } @@ -245,10 +245,10 @@ var userPetsMultiValueOps = MultiValueOps[*user]{ return &uu, nil }, DeleteRow: func(ctx *sql.Context, r sql.Row, u *user) (*user, error) { - if len(r) != 3 { + if r.Len() != 3 { return nil, errors.New("invalid schema for user pet insert") } - pet, ok := r[2].(string) + pet, ok := r.GetValue(2).(string) if !ok { return nil, errors.New("invalid schema for user pet insert") } @@ -274,8 +274,8 @@ func TestMultiTableEditorInsert(t *testing.T) { set.Put(&user{"aaron", "aaron@dolthub.com", 0}) ed := &MultiIndexedSetTableEditor[*user]{set, userPetsMultiValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Insert(nil, sql.Row{"aaron", "aaron@dolthub.com", "dog"})) - require.NoError(t, ed.Insert(nil, sql.Row{"aaron", "aaron@dolthub.com", "fish"})) + require.NoError(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "dog"})) + require.NoError(t, ed.Insert(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "fish"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 1, set.Count()) res := set.GetMany(usernameKeyer{}, "aaron") @@ -290,8 +290,8 @@ func TestMultiTableEditorDelete(t *testing.T) { set.Put(&user{"aaron", "aaron@dolthub.com", userPetDog | userPetFish}) ed := &MultiIndexedSetTableEditor[*user]{set, userPetsMultiValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Delete(nil, sql.Row{"aaron", "aaron@dolthub.com", "fish"})) - require.NoError(t, ed.Delete(nil, sql.Row{"aaron", "aaron@dolthub.com", "cat"})) + require.NoError(t, ed.Delete(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "fish"})) + require.NoError(t, ed.Delete(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "cat"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 1, set.Count()) res := set.GetMany(usernameKeyer{}, "aaron") @@ -313,7 +313,7 @@ func TestMultiTableEditorUpdate(t *testing.T) { set.Put(&user{"aaron", "aaron@dolthub.com", userPetDog | userPetFish}) ed := &MultiIndexedSetTableEditor[*user]{set, userPetsMultiValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Update(nil, sql.Row{"aaron", "aaron@dolthub.com", "dog"}, sql.Row{"aaron", "aaron+new@dolthub.com", "cat"})) + require.NoError(t, ed.Update(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "dog"}, sql.UntypedSqlRow{"aaron", "aaron+new@dolthub.com", "cat"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 1, set.Count()) res := set.GetMany(usernameKeyer{}, "aaron") @@ -330,7 +330,7 @@ func TestMultiTableEditorUpdate(t *testing.T) { set.Put(&user{"aaron", "aaron@dolthub.com", userPetDog | userPetFish}) ed = &MultiIndexedSetTableEditor[*user]{set, userPetsMultiValueOps} ed.StatementBegin(nil) - require.Error(t, ed.Update(nil, sql.Row{"aaron", "aaron@dolthub.com", "dog"}, sql.Row{"aaron.son", "aaron@dolthub.com", "cat"})) + require.Error(t, ed.Update(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "dog"}, sql.UntypedSqlRow{"aaron.son", "aaron@dolthub.com", "cat"})) // And we simply update the matching entry if we try to change // the primary key to something that does exist. @@ -339,7 +339,7 @@ func TestMultiTableEditorUpdate(t *testing.T) { set.Put(&user{"brian", "brian@dolthub.com", userPetDog}) ed = &MultiIndexedSetTableEditor[*user]{set, userPetsMultiValueOps} ed.StatementBegin(nil) - require.NoError(t, ed.Update(nil, sql.Row{"aaron", "aaron@dolthub.com", "dog"}, sql.Row{"brian", "brian@dolthub.com", "cat"})) + require.NoError(t, ed.Update(nil, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "dog"}, sql.UntypedSqlRow{"brian", "brian@dolthub.com", "cat"})) require.NoError(t, ed.StatementComplete(nil)) require.Equal(t, 2, set.Count()) res = set.GetMany(usernameKeyer{}, "aaron") diff --git a/sql/in_mem_table/multimaptable.go b/sql/in_mem_table/multimaptable.go index e5174b2794..1794615ad0 100644 --- a/sql/in_mem_table/multimaptable.go +++ b/sql/in_mem_table/multimaptable.go @@ -27,7 +27,7 @@ func ToRows[V any](ctx *sql.Context, ops *ValueOps[V], is IndexedSet[V]) ([]sql. if err != nil { return } - var r sql.Row + var r sql.Row = sql.UntypedSqlRow{} r, err = ops.ToRow(ctx, v) if err == nil { res = append(res, r) diff --git a/sql/in_mem_table/multimaptable_test.go b/sql/in_mem_table/multimaptable_test.go index 07da5b493e..01542ca329 100644 --- a/sql/in_mem_table/multimaptable_test.go +++ b/sql/in_mem_table/multimaptable_test.go @@ -56,8 +56,8 @@ func TestMultiToRows(t *testing.T) { require.NoError(t, err) require.Len(t, rows, 3) require.Len(t, rows[0], 3) - require.Contains(t, rows, sql.Row{"aaron", "aaron@dolthub.com", "dog"}) - require.Contains(t, rows, sql.Row{"aaron", "aaron@dolthub.com", "cat"}) - require.Contains(t, rows, sql.Row{"brian", "brian@dolthub.com", "dog"}) + require.Contains(t, rows, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "dog"}) + require.Contains(t, rows, sql.UntypedSqlRow{"aaron", "aaron@dolthub.com", "cat"}) + require.Contains(t, rows, sql.UntypedSqlRow{"brian", "brian@dolthub.com", "dog"}) }) } diff --git a/sql/index.go b/sql/index.go index 4ef6a4ca8b..7b985d2012 100644 --- a/sql/index.go +++ b/sql/index.go @@ -108,8 +108,6 @@ type Index interface { IsSpatial() bool // IsFullText returns whether this index is a Full-Text index IsFullText() bool - // IsVector returns whether this index is a Full-Text index - IsVector() bool // Comment returns the comment for this index Comment() string // IndexType returns the type of this index, e.g. BTREE diff --git a/sql/index_builder_test.go b/sql/index_builder_test.go index 2e1f425610..3d91c112b2 100644 --- a/sql/index_builder_test.go +++ b/sql/index_builder_test.go @@ -200,10 +200,6 @@ func (testIndex) IsFullText() bool { return false } -func (testIndex) IsVector() bool { - return false -} - func (testIndex) Comment() string { return "" } diff --git a/sql/index_registry_test.go b/sql/index_registry_test.go index e83e949826..ad8704c126 100644 --- a/sql/index_registry_test.go +++ b/sql/index_registry_test.go @@ -450,7 +450,6 @@ func (i dummyIdx) Driver() string { return "dummy" } func (i dummyIdx) IsUnique() bool { return false } func (i dummyIdx) IsSpatial() bool { return false } func (i dummyIdx) IsFullText() bool { return false } -func (i dummyIdx) IsVector() bool { return false } func (i dummyIdx) Comment() string { return "" } func (i dummyIdx) IsGenerated() bool { return false } func (i dummyIdx) IndexType() string { return "BTREE" } diff --git a/sql/information_schema/columns_table.go b/sql/information_schema/columns_table.go index ca946ae917..116453384c 100644 --- a/sql/information_schema/columns_table.go +++ b/sql/information_schema/columns_table.go @@ -303,7 +303,7 @@ func getRowFromColumn(ctx *sql.Context, curOrdPos int, col *sql.Column, catName, sort.Strings(curColPrivStr) privileges := strings.Join(curColPrivStr, ",") - return sql.Row{ + return sql.UntypedSqlRow{ catName, // table_catalog schName, // table_schema tblName, // table_name diff --git a/sql/information_schema/information_schema.go b/sql/information_schema/information_schema.go index 0b6f284c33..78cc89dde2 100644 --- a/sql/information_schema/information_schema.go +++ b/sql/information_schema/information_schema.go @@ -754,7 +754,7 @@ var viewTableUsageSchema = Schema{ func characterSetsRowIter(ctx *Context, c Catalog) (RowIter, error) { var rows []Row for _, c := range SupportedCharsets { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ c.String(), // character_set_name c.DefaultCollation().Name(), // default_collation_name c.Description(), // description @@ -793,7 +793,7 @@ func checkConstraintsRowIter(ctx *Context, c Catalog) (RowIter, error) { } for _, checkDefinition := range checkDefinitions { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema checkDefinition.Name, // constraint_name @@ -812,7 +812,7 @@ func collationCharacterSetApplicabilityRowIter(ctx *Context, c Catalog) (RowIter var rows []Row collIter := NewCollationsIterator() for c, ok := collIter.Next(); ok; c, ok = collIter.Next() { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ c.Name, // collation_name c.CharacterSet.String(), // character_set_name }) @@ -825,7 +825,7 @@ func collationsRowIter(ctx *Context, c Catalog) (RowIter, error) { var rows []Row collIter := NewCollationsIterator() for c, ok := collIter.Next(); ok; c, ok = collIter.Next() { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ c.Name, // collation_name c.CharacterSet.Name(), // character_set_name uint64(c.ID), // id @@ -870,7 +870,7 @@ func columnStatisticsRowIter(ctx *Context, c Catalog) (RowIter, error) { continue } } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.SchemaName, // table_schema t.Name(), // table_name strings.Join(stats.Columns(), ","), // column_name @@ -900,7 +900,7 @@ func columnsExtensionsRowIter(ctx *Context, cat Catalog) (RowIter, error) { err := DBTableIter(ctx, db.Database, func(t Table) (cont bool, err error) { tblName := t.Name() for _, col := range t.Schema() { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema tblName, // table_name @@ -922,7 +922,7 @@ func columnsExtensionsRowIter(ctx *Context, cat Catalog) (RowIter, error) { func enginesRowIter(ctx *Context, cat Catalog) (RowIter, error) { var rows []Row for _, c := range SupportedEngines { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ c.String(), // engine c.Support(), // support c.Comment(), // comment @@ -1005,7 +1005,7 @@ func eventsRowIter(ctx *Context, c Catalog) (RowIter, error) { lastExecuted := ed.LastExecuted.Format(EventDateSpaceTimeFormat) // TODO: timezone should use e.TimezoneOffset, but is always 'SYSTEM' for now. - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // event_catalog db.SchemaName, // event_schema ed.Name, // event_name @@ -1080,7 +1080,7 @@ func keyColumnUsageRowIter(ctx *Context, c Catalog) (RowIter, error) { for i, colName := range colNames { ordinalPosition := i + 1 // Ordinal Positions starts at one - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema index.ID(), // constraint_name @@ -1114,7 +1114,7 @@ func keyColumnUsageRowIter(ctx *Context, c Catalog) (RowIter, error) { referencedTableName := fk.ParentTable referencedColumnName := strings.Replace(fk.ParentColumns[j], "`", "", -1) // get rid of backticks - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema fk.Name, // constraint_name @@ -1141,7 +1141,7 @@ func keyColumnUsageRowIter(ctx *Context, c Catalog) (RowIter, error) { func keywordsRowIter(ctx *Context, cat Catalog) (RowIter, error) { var rows []Row for _, spRef := range keywordsArray { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ spRef.Word, // word spRef.Reserved, // reserved }) @@ -1170,7 +1170,7 @@ func processListRowIter(ctx *Context, c Catalog) (RowIter, error) { db = proc.Database } - rows[i] = Row{ + rows[i] = UntypedSqlRow{ uint64(proc.Connection), // id proc.User, // user proc.Host, // host @@ -1261,7 +1261,7 @@ func referentialConstraintsRowIter(ctx *Context, c Catalog) (RowIter, error) { return nil, refErr } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema fk.Name, // constraint_name @@ -1309,8 +1309,8 @@ func schemaPrivilegesRowIter(ctx *Context, c Catalog) (RowIter, error) { err = iterRows(ctx, dbTbl, func(r Row) error { // mysql.db table will have 'Host', 'Db', 'User' as first 3 columns in string format. keys = append(keys, mysql_db.UserPrimaryKey{ - Host: r[0].(string), - User: r[2].(string), + Host: r.GetValue(0).(string), + User: r.GetValue(2).(string), }) return nil }) @@ -1367,7 +1367,7 @@ func schemataExtensionsRowIter(ctx *Context, c Catalog) (RowIter, error) { readOnly = "READ ONLY=1" } } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // catalog_name db.SchemaName, // schema_name readOnly, // options @@ -1407,7 +1407,7 @@ func stGeometryColumnsRowIter(ctx *Context, cat Catalog) (RowIter, error) { srsId = srid } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema tblName, // table_name @@ -1431,7 +1431,7 @@ func stGeometryColumnsRowIter(ctx *Context, cat Catalog) (RowIter, error) { func stSpatialReferenceSystemsRowIter(ctx *Context, cat Catalog) (RowIter, error) { var rows []Row for _, spRef := range types.SupportedSRIDs { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ spRef.Name, // srs_name spRef.ID, // srs_id spRef.Organization, // organization @@ -1448,7 +1448,7 @@ func stSpatialReferenceSystemsRowIter(ctx *Context, cat Catalog) (RowIter, error func stUnitsOfMeasureRowIter(ctx *Context, cat Catalog) (RowIter, error) { var rows []Row for _, spRef := range unitsOfMeasureArray { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ spRef.Name, // unit_name spRef.Type, // unit_type spRef.ConversionFactor, // conversion_factor @@ -1540,7 +1540,7 @@ func statisticsRowIter(ctx *Context, c Catalog) (RowIter, error) { // TODO: we currently don't support expression index such as ((i * 20)) - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema tbl.Name(), // table_name @@ -1604,7 +1604,7 @@ func tableConstraintsRowIter(ctx *Context, c Catalog) (RowIter, error) { if !checkDefinition.Enforced { enforced = "NO" } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema checkDefinition.Name, // constraint_name @@ -1637,7 +1637,7 @@ func tableConstraintsRowIter(ctx *Context, c Catalog) (RowIter, error) { } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema index.ID(), // constraint_name @@ -1658,7 +1658,7 @@ func tableConstraintsRowIter(ctx *Context, c Catalog) (RowIter, error) { } for _, fk := range fks { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema fk.Name, // constraint_name @@ -1707,7 +1707,7 @@ func tableConstraintsExtensionsRowIter(ctx *Context, c Catalog) (RowIter, error) } for _, index := range indexes { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // constraint_catalog db.SchemaName, // constraint_schema index.ID(), // constraint_name @@ -1796,8 +1796,8 @@ func tablePrivilegesRowIter(ctx *Context, c Catalog) (RowIter, error) { var keys []mysql_db.UserPrimaryKey err = iterRows(ctx, tblsPriv, func(r Row) error { keys = append(keys, mysql_db.UserPrimaryKey{ - Host: r[0].(string), - User: r[2].(string), + Host: r.GetValue(0).(string), + User: r.GetValue(2).(string), }) return nil }) @@ -1882,7 +1882,7 @@ func tablesExtensionsRowIter(ctx *Context, cat Catalog) (RowIter, error) { for _, db := range databases { err := DBTableIter(ctx, db.Database, func(t Table) (cont bool, err error) { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema t.Name(), // table_name @@ -1995,7 +1995,7 @@ func triggersRowIter(ctx *Context, c Catalog) (RowIter, error) { // To see information about a table's triggers, you must have the TRIGGER privilege for the table. if hasGlobalTriggerPriv || hasDbTriggerPriv || privTblSet.Has(PrivilegeType_Trigger) { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // trigger_catalog db.SchemaName, // trigger_schema triggerPlan.TriggerName, // trigger_name @@ -2059,7 +2059,7 @@ func userAttributesRowIter(ctx *Context, catalog Catalog) (RowIter, error) { if user.Attributes != nil { attributes = *user.Attributes } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ user.User, // user user.Host, // host attributes, // attributes @@ -2068,7 +2068,7 @@ func userAttributesRowIter(ctx *Context, catalog Catalog) (RowIter, error) { } else { // TODO: current user needs to be exposed to access user attribute from mysql_db currClient := ctx.Session.Client() - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ currClient.User, // user currClient.Address, // host nil, // attributes @@ -2709,7 +2709,7 @@ func getGlobalPrivsRowsFromPrivSet(privSet PrivilegeSet, grantee string) []Row { if hasGrantOpt { isGrantable = "YES" } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ grantee, // grantee "def", // table_catalog priv.String(), // privilege_type @@ -2731,7 +2731,7 @@ func getSchemaPrivsRowsFromPrivDbSet(privSetDb PrivilegeSetDatabase, grantee str if hasGrantOpt { isGrantable = "YES" } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ grantee, // grantee "def", // table_catalog privSetDb.Name(), // table_schema @@ -2754,7 +2754,7 @@ func getTablePrivsRowsFromPrivTblSet(privSetTbl PrivilegeSetTable, grantee, dbNa if hasGrantOpt { isGrantable = "YES" } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ grantee, // grantee "def", // table_catalog dbName, // table_schema diff --git a/sql/information_schema/innodb_tables.go b/sql/information_schema/innodb_tables.go index a417ea39f6..29114efe08 100644 --- a/sql/information_schema/innodb_tables.go +++ b/sql/information_schema/innodb_tables.go @@ -449,7 +449,7 @@ func innoDBTempTableRowIter(ctx *Context, c Catalog) (RowIter, error) { } for i, table := range tables { - rows = append(rows, Row{i, table.String(), len(table.Schema()), 0}) + rows = append(rows, UntypedSqlRow{i, table.String(), len(table.Schema()), 0}) } } diff --git a/sql/information_schema/routines_table.go b/sql/information_schema/routines_table.go index efb3589909..4e07d66de2 100644 --- a/sql/information_schema/routines_table.go +++ b/sql/information_schema/routines_table.go @@ -195,7 +195,7 @@ func routinesRowIter(ctx *Context, c Catalog, p map[string][]*plan.Procedure) (R if procedure.SecurityContext == plan.ProcedureSecurityContext_Invoker { securityType = "INVOKER" } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ procedure.Name, // specific_name NOT NULL "def", // routine_catalog dbName, // routine_schema @@ -289,7 +289,7 @@ func parametersRowIter(ctx *Context, c Catalog, p map[string][]*plan.Procedure) datetimePrecision = 6 } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ "def", // specific_catalog dbName, // specific_schema procedure.Name, // specific_name diff --git a/sql/information_schema/schemata_table.go b/sql/information_schema/schemata_table.go index 238e7065bc..53a2d8104f 100644 --- a/sql/information_schema/schemata_table.go +++ b/sql/information_schema/schemata_table.go @@ -56,7 +56,7 @@ func schemataRowIter(ctx *Context, c Catalog) (RowIter, error) { for _, db := range dbs { collation := plan.GetDatabaseCollation(ctx, db.Database) - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // catalog_name db.SchemaName, // schema_name collation.CharacterSet().String(), // default_character_set_name diff --git a/sql/information_schema/tables_table.go b/sql/information_schema/tables_table.go index 06bcd40d68..3c53a1a3ca 100644 --- a/sql/information_schema/tables_table.go +++ b/sql/information_schema/tables_table.go @@ -133,7 +133,7 @@ func tablesRowIter(ctx *Context, cat Catalog) (RowIter, error) { } } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema t.Name(), // table_name @@ -170,7 +170,7 @@ func tablesRowIter(ctx *Context, cat Catalog) (RowIter, error) { } for _, view := range views { - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema view.Name, // table_name diff --git a/sql/information_schema/views_table.go b/sql/information_schema/views_table.go index a9ac29661f..f16dadca86 100644 --- a/sql/information_schema/views_table.go +++ b/sql/information_schema/views_table.go @@ -112,7 +112,7 @@ func viewsRowIter(ctx *Context, catalog Catalog) (RowIter, error) { securityType = "DEFINER" } - rows = append(rows, Row{ + rows = append(rows, UntypedSqlRow{ db.CatalogName, // table_catalog db.SchemaName, // table_schema view.Name, // table_name diff --git a/sql/iters/rel_iters.go b/sql/iters/rel_iters.go index 0ef4742c55..3c081adbc9 100644 --- a/sql/iters/rel_iters.go +++ b/sql/iters/rel_iters.go @@ -61,7 +61,7 @@ func (i *topRowsIter) Next(ctx *sql.Context) (sql.Row, error) { } row := i.topRows[i.idx] i.idx++ - return row[:len(row)-1], nil + return row.Subslice(0, row.Len()-1), nil } func (i *topRowsIter) Close(ctx *sql.Context) error { @@ -93,7 +93,7 @@ func (i *topRowsIter) computeTopRows(ctx *sql.Context) error { } i.numFoundRows++ - row = append(row, i.numFoundRows) + row = row.Append(sql.UntypedSqlRow{i.numFoundRows}) heap.Push(topRowsHeap, row) if int64(topRowsHeap.Len()) > i.limit { @@ -231,14 +231,14 @@ func (c *JsonTableCol) Next(obj interface{}, pass bool, ord int) (sql.Row, error innerObj = c.data[c.pos] } - var row sql.Row + row := sql.NewUntypedRow() for i, col := range c.Cols { innerPass := len(col.Cols) != 0 && i != c.currSib rowPart, err := col.Next(innerObj, pass || innerPass, c.pos+1) if err != nil { return nil, err } - row = append(row, rowPart...) + row = row.Append(rowPart) } if pass { @@ -261,21 +261,21 @@ func (c *JsonTableCol) Next(obj interface{}, pass bool, ord int) (sql.Row, error // this should only apply to nested columns, maybe... if pass { - return sql.Row{nil}, nil + return sql.NewUntypedRow(nil), nil } // FOR ORDINAL is a special case if c.Opts != nil && c.Opts.ForOrd { - return sql.Row{ord}, nil + return sql.NewUntypedRow(ord), nil } // TODO: cache this? val, err := jsonpath.JsonPathLookup(obj, c.Path) if c.Opts.Exists { if err != nil { - return sql.Row{0}, nil + return sql.NewUntypedRow(0), nil } else { - return sql.Row{1}, nil + return sql.NewUntypedRow(1), nil } } @@ -300,7 +300,7 @@ func (c *JsonTableCol) Next(obj interface{}, pass bool, ord int) (sql.Row, error // Base columns are always finished c.finished = true - return sql.Row{val}, nil + return sql.NewUntypedRow(val), nil } type JsonTableRowIter struct { @@ -341,14 +341,14 @@ func (j *JsonTableRowIter) Next(ctx *sql.Context) (sql.Row, error) { } obj := j.Data[j.pos] - var row sql.Row + row := sql.NewUntypedRow() for i, col := range j.Cols { pass := len(col.Cols) != 0 && i != j.currSib rowPart, err := col.Next(obj, pass, j.pos+1) if err != nil { return nil, err } - row = append(row, rowPart...) + row = row.Append(rowPart) } if j.NextSibling() { diff --git a/sql/memo/rel_props_test.go b/sql/memo/rel_props_test.go index 721caf1b66..e834df876b 100644 --- a/sql/memo/rel_props_test.go +++ b/sql/memo/rel_props_test.go @@ -229,10 +229,6 @@ func (dummyIndex) IsFullText() bool { return false } -func (dummyIndex) IsVector() bool { - return false -} - func (dummyIndex) CanSupportOrderBy(sql.Expression) bool { return false } diff --git a/sql/mysql_db/db_table.go b/sql/mysql_db/db_table.go index 03a89fdf10..7a3a108f4a 100644 --- a/sql/mysql_db/db_table.go +++ b/sql/mysql_db/db_table.go @@ -36,11 +36,11 @@ var ( ) func UserAddDBRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { - if len(row) != len(dbTblSchema) { + if row.Len() != len(dbTblSchema) { return nil, errDbRow } - db, ok := row[dbTblColIndex_Db].(string) + db, ok := row.GetValue(dbTblColIndex_Db).(string) if !ok { return nil, errDbRow } @@ -48,7 +48,7 @@ func UserAddDBRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { user = UserCopy(user) var privs []sql.PrivilegeType - for i, val := range row { + for i, val := range row.Values() { if uintVal, ok := val.(uint16); ok && uintVal == 2 { switch i { case dbTblColIndex_Select_priv: @@ -99,11 +99,11 @@ func UserAddDBRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { } func UserRemoveDBRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { - if len(row) != len(dbTblSchema) { + if row.Len() != len(dbTblSchema) { return nil, errDbRow } - db, ok := row[dbTblColIndex_Db].(string) + db, ok := row.GetValue(dbTblColIndex_Db).(string) if !ok { return nil, errDbRow } @@ -114,14 +114,14 @@ func UserRemoveDBRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { } func UserFromDBRow(ctx *sql.Context, row sql.Row) (*User, error) { - if len(row) != len(dbTblSchema) { + if row.Len() != len(dbTblSchema) { return nil, errDbRow } - host, ok := row[dbTblColIndex_Host].(string) + host, ok := row.GetValue(dbTblColIndex_Host).(string) if !ok { return nil, errDbRow } - user, ok := row[dbTblColIndex_User].(string) + user, ok := row.GetValue(dbTblColIndex_User).(string) if !ok { return nil, errDbRow } @@ -135,10 +135,12 @@ func UserToDBRows(ctx *sql.Context, u *User) ([]sql.Row, error) { var rows []sql.Row newRow := func() (sql.Row, error) { - row := make(sql.Row, len(dbTblSchema)) + row := sql.NewSqlRowWithLen(len(dbTblSchema)) var err error for i, col := range dbTblSchema { - row[i], err = col.Default.Eval(ctx, nil) + var v interface{} + v, err = col.Default.Eval(ctx, nil) + row.SetValue(i, v) if err != nil { return nil, err // Should never happen, schema is static } @@ -155,49 +157,49 @@ func UserToDBRows(ctx *sql.Context, u *User) ([]sql.Row, error) { return nil, err } - row[dbTblColIndex_User] = u.User - row[dbTblColIndex_Host] = u.Host - row[dbTblColIndex_Db] = dbSet.Name() + row.SetValue(dbTblColIndex_User, u.User) + row.SetValue(dbTblColIndex_Host, u.Host) + row.SetValue(dbTblColIndex_Db, dbSet.Name()) for _, priv := range dbSet.ToSlice() { switch priv { case sql.PrivilegeType_Select: - row[dbTblColIndex_Select_priv] = uint16(2) + row.SetValue(dbTblColIndex_Select_priv, uint16(2)) case sql.PrivilegeType_Insert: - row[dbTblColIndex_Insert_priv] = uint16(2) + row.SetValue(dbTblColIndex_Insert_priv, uint16(2)) case sql.PrivilegeType_Update: - row[dbTblColIndex_Update_priv] = uint16(2) + row.SetValue(dbTblColIndex_Update_priv, uint16(2)) case sql.PrivilegeType_Delete: - row[dbTblColIndex_Delete_priv] = uint16(2) + row.SetValue(dbTblColIndex_Delete_priv, uint16(2)) case sql.PrivilegeType_Create: - row[dbTblColIndex_Create_priv] = uint16(2) + row.SetValue(dbTblColIndex_Create_priv, uint16(2)) case sql.PrivilegeType_Drop: - row[dbTblColIndex_Drop_priv] = uint16(2) + row.SetValue(dbTblColIndex_Drop_priv, uint16(2)) case sql.PrivilegeType_GrantOption: - row[dbTblColIndex_Grant_priv] = uint16(2) + row.SetValue(dbTblColIndex_Grant_priv, uint16(2)) case sql.PrivilegeType_References: - row[dbTblColIndex_References_priv] = uint16(2) + row.SetValue(dbTblColIndex_References_priv, uint16(2)) case sql.PrivilegeType_Index: - row[dbTblColIndex_Index_priv] = uint16(2) + row.SetValue(dbTblColIndex_Index_priv, uint16(2)) case sql.PrivilegeType_Alter: - row[dbTblColIndex_Alter_priv] = uint16(2) + row.SetValue(dbTblColIndex_Alter_priv, uint16(2)) case sql.PrivilegeType_CreateTempTable: - row[dbTblColIndex_Create_tmp_table_priv] = uint16(2) + row.SetValue(dbTblColIndex_Create_tmp_table_priv, uint16(2)) case sql.PrivilegeType_LockTables: - row[dbTblColIndex_Lock_tables_priv] = uint16(2) + row.SetValue(dbTblColIndex_Lock_tables_priv, uint16(2)) case sql.PrivilegeType_CreateView: - row[dbTblColIndex_Create_view_priv] = uint16(2) + row.SetValue(dbTblColIndex_Create_view_priv, uint16(2)) case sql.PrivilegeType_ShowView: - row[dbTblColIndex_Show_view_priv] = uint16(2) + row.SetValue(dbTblColIndex_Show_view_priv, uint16(2)) case sql.PrivilegeType_CreateRoutine: - row[dbTblColIndex_Create_routine_priv] = uint16(2) + row.SetValue(dbTblColIndex_Create_routine_priv, uint16(2)) case sql.PrivilegeType_AlterRoutine: - row[dbTblColIndex_Alter_routine_priv] = uint16(2) + row.SetValue(dbTblColIndex_Alter_routine_priv, uint16(2)) case sql.PrivilegeType_Execute: - row[dbTblColIndex_Execute_priv] = uint16(2) + row.SetValue(dbTblColIndex_Execute_priv, uint16(2)) case sql.PrivilegeType_Event: - row[dbTblColIndex_Event_priv] = uint16(2) + row.SetValue(dbTblColIndex_Event_priv, uint16(2)) case sql.PrivilegeType_Trigger: - row[dbTblColIndex_Trigger_priv] = uint16(2) + row.SetValue(dbTblColIndex_Trigger_priv, uint16(2)) } } diff --git a/sql/mysql_db/global_grants_table.go b/sql/mysql_db/global_grants_table.go index 012384211b..a029e27865 100644 --- a/sql/mysql_db/global_grants_table.go +++ b/sql/mysql_db/global_grants_table.go @@ -37,15 +37,15 @@ var ( ) func UserAddGlobalGrantsRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { - if len(row) != len(globalGrantsTblSchema) { + if row.Len() != len(globalGrantsTblSchema) { return nil, errGlobalGrantRow } - privilege, ok := row[globalGrantsTblColIndex_PRIV].(string) + privilege, ok := row.GetValue(globalGrantsTblColIndex_PRIV).(string) if !ok { return nil, errGlobalGrantRow } - withGrantOption, ok := row[globalGrantsTblColIndex_WITH_GRANT_OPTION].(uint16) + withGrantOption, ok := row.GetValue(globalGrantsTblColIndex_WITH_GRANT_OPTION).(uint16) if !ok { return nil, errGlobalGrantRow } @@ -59,17 +59,17 @@ func UserAddGlobalGrantsRow(ctx *sql.Context, row sql.Row, user *User) (*User, e } func UserRemoveGlobalGrantsRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { - if len(row) != len(globalGrantsTblSchema) { + if row.Len() != len(globalGrantsTblSchema) { return nil, errGlobalGrantRow } - privilege, ok := row[globalGrantsTblColIndex_PRIV].(string) + privilege, ok := row.GetValue(globalGrantsTblColIndex_PRIV).(string) if !ok { return nil, errGlobalGrantRow } //TODO: handle "WITH GRANT OPTION" - //withGrantOption, ok := row[globalGrantsTblColIndex_WITH_GRANT_OPTION].(uint16) + //withGrantOption, ok := row.GetValue(globalGrantsTblColIndex_WITH_GRANT_OPTION).(uint16) //if !ok { // return nil, errGlobalGrantRow //} @@ -82,14 +82,14 @@ func UserRemoveGlobalGrantsRow(ctx *sql.Context, row sql.Row, user *User) (*User } func UserFromGlobalGrantsRow(ctx *sql.Context, row sql.Row) (*User, error) { - if len(row) != len(globalGrantsTblSchema) { + if row.Len() != len(globalGrantsTblSchema) { return nil, errGlobalGrantRow } - host, ok := row[globalGrantsTblColIndex_HOST].(string) + host, ok := row.GetValue(globalGrantsTblColIndex_HOST).(string) if !ok { return nil, errGlobalGrantRow } - user, ok := row[globalGrantsTblColIndex_USER].(string) + user, ok := row.GetValue(globalGrantsTblColIndex_USER).(string) if !ok { return nil, errGlobalGrantRow } @@ -102,20 +102,22 @@ func UserFromGlobalGrantsRow(ctx *sql.Context, row sql.Row) (*User, error) { func UserToGlobalGrantsRows(ctx *sql.Context, user *User) ([]sql.Row, error) { var rows []sql.Row for dynamicPriv, _ := range user.PrivilegeSet.globalDynamic { - row := make(sql.Row, len(globalGrantsTblSchema)) + row := sql.NewSqlRowWithLen(len(globalGrantsTblSchema)) var err error for i, col := range globalGrantsTblSchema { - row[i], err = col.Default.Eval(ctx, nil) + var v interface{} + v, err = col.Default.Eval(ctx, nil) + row.SetValue(i, v) if err != nil { return nil, err // Should never happen, schema is static } } - row[globalGrantsTblColIndex_USER] = user.User - row[globalGrantsTblColIndex_HOST] = user.Host - row[globalGrantsTblColIndex_PRIV] = strings.ToUpper(dynamicPriv) + row.SetValue(globalGrantsTblColIndex_USER, user.User) + row.SetValue(globalGrantsTblColIndex_HOST, user.Host) + row.SetValue(globalGrantsTblColIndex_PRIV, strings.ToUpper(dynamicPriv)) //TODO: handle "WITH GRANT OPTION" - row[globalGrantsTblColIndex_WITH_GRANT_OPTION] = 2 + row.SetValue(globalGrantsTblColIndex_WITH_GRANT_OPTION, 2) rows = append(rows, row) } diff --git a/sql/mysql_db/procs_priv.go b/sql/mysql_db/procs_priv.go index 8edaaeca8a..78a996b86c 100644 --- a/sql/mysql_db/procs_priv.go +++ b/sql/mysql_db/procs_priv.go @@ -50,10 +50,12 @@ func NewUserProcsIndexedSetTable(set in_mem_table.IndexedSet[*User], lock, rlock } func newEmptyRow(ctx *sql.Context) sql.Row { - row := make(sql.Row, len(procsPrivTblSchema)) + row := sql.NewSqlRowWithLen(len(procsPrivTblSchema)) var err error for i, col := range procsPrivTblSchema { - row[i], err = col.Default.Eval(ctx, nil) + var v interface{} + v, err = col.Default.Eval(ctx, nil) + row.SetValue(i, v) if err != nil { panic(err) // Schema is static. New rows should never fail. } @@ -71,11 +73,11 @@ func UserToProcsPrivRows(ctx *sql.Context, user *User) ([]sql.Row, error) { } row := newEmptyRow(ctx) - row[procsPrivTblColIndex_Host] = user.Host - row[procsPrivTblColIndex_Db] = dbSet.Name() - row[procsPrivTblColIndex_User] = user.User - row[procsPrivTblColIndex_RoutineName] = routineSet.RoutineName() - row[procsPrivTblColIndex_RoutineType] = routineSet.RoutineType() + row.SetValue(procsPrivTblColIndex_Host, user.Host) + row.SetValue(procsPrivTblColIndex_Db, dbSet.Name()) + row.SetValue(procsPrivTblColIndex_User, user.User) + row.SetValue(procsPrivTblColIndex_RoutineName, routineSet.RoutineName()) + row.SetValue(procsPrivTblColIndex_RoutineType, routineSet.RoutineType()) var privs []string for _, priv := range routineSet.ToSlice() { @@ -89,7 +91,7 @@ func UserToProcsPrivRows(ctx *sql.Context, user *User) ([]sql.Row, error) { } } privsStr := strings.Join(privs, ",") - row[procsPrivTblColIndex_ProcPriv] = privsStr + row.SetValue(procsPrivTblColIndex_ProcPriv, privsStr) ans = append(ans, row) } diff --git a/sql/mysql_db/replica_source_info.go b/sql/mysql_db/replica_source_info.go index ad8c8063f4..9bf3148ad8 100644 --- a/sql/mysql_db/replica_source_info.go +++ b/sql/mysql_db/replica_source_info.go @@ -35,28 +35,30 @@ type ReplicaSourceInfo struct { } func ReplicaSourceInfoToRow(ctx *sql.Context, v *ReplicaSourceInfo) (sql.Row, error) { - row := make(sql.Row, len(replicaSourceInfoTblSchema)) + row := sql.NewSqlRowWithLen(len(replicaSourceInfoTblSchema)) var err error for i, col := range replicaSourceInfoTblSchema { - row[i], err = col.Default.Eval(ctx, nil) + var v interface{} + v, err = col.Default.Eval(ctx, nil) + row.SetValue(i, v) if err != nil { panic(err) // Should never happen, schema is static } } //TODO: once the remaining fields are added, fill those in as well if v.Host != "" { - row[replicaSourceInfoTblColIndex_Host] = v.Host + row.SetValue(replicaSourceInfoTblColIndex_Host, v.Host) } if v.User != "" { - row[replicaSourceInfoTblColIndex_User_name] = v.User + row.SetValue(replicaSourceInfoTblColIndex_User_name, v.User) } if v.Uuid != "" { - row[replicaSourceInfoTblColIndex_Uuid] = v.Uuid + row.SetValue(replicaSourceInfoTblColIndex_Uuid, v.Uuid) } - row[replicaSourceInfoTblColIndex_User_password] = v.Password - row[replicaSourceInfoTblColIndex_Port] = v.Port - row[replicaSourceInfoTblColIndex_Connect_retry] = v.ConnectRetryInterval - row[replicaSourceInfoTblColIndex_Retry_count] = v.ConnectRetryCount + row.SetValue(replicaSourceInfoTblColIndex_User_password, v.Password) + row.SetValue(replicaSourceInfoTblColIndex_Port, v.Port) + row.SetValue(replicaSourceInfoTblColIndex_Connect_retry, v.ConnectRetryInterval) + row.SetValue(replicaSourceInfoTblColIndex_Retry_count, v.ConnectRetryCount) return row, nil } @@ -67,13 +69,13 @@ func ReplicaSourceInfoFromRow(ctx *sql.Context, row sql.Row) (*ReplicaSourceInfo } return &ReplicaSourceInfo{ - Host: row[replicaSourceInfoTblColIndex_Host].(string), - User: row[replicaSourceInfoTblColIndex_User_name].(string), - Password: row[replicaSourceInfoTblColIndex_User_password].(string), - Port: row[replicaSourceInfoTblColIndex_Port].(uint16), - Uuid: row[replicaSourceInfoTblColIndex_Uuid].(string), - ConnectRetryInterval: row[replicaSourceInfoTblColIndex_Connect_retry].(uint32), - ConnectRetryCount: row[replicaSourceInfoTblColIndex_Retry_count].(uint64), + Host: row.GetValue(replicaSourceInfoTblColIndex_Host).(string), + User: row.GetValue(replicaSourceInfoTblColIndex_User_name).(string), + Password: row.GetValue(replicaSourceInfoTblColIndex_User_password).(string), + Port: row.GetValue(replicaSourceInfoTblColIndex_Port).(uint16), + Uuid: row.GetValue(replicaSourceInfoTblColIndex_Uuid).(string), + ConnectRetryInterval: row.GetValue(replicaSourceInfoTblColIndex_Connect_retry).(uint32), + ConnectRetryCount: row.GetValue(replicaSourceInfoTblColIndex_Retry_count).(uint64), }, nil } diff --git a/sql/mysql_db/role_edge.go b/sql/mysql_db/role_edge.go index 2c3f24ea5d..0edf1200fb 100644 --- a/sql/mysql_db/role_edge.go +++ b/sql/mysql_db/role_edge.go @@ -33,15 +33,15 @@ type RoleEdge struct { } func RoleEdgeToRow(ctx *sql.Context, r *RoleEdge) (sql.Row, error) { - row := make(sql.Row, len(roleEdgesTblSchema)) - row[roleEdgesTblColIndex_FROM_HOST] = r.FromHost - row[roleEdgesTblColIndex_FROM_USER] = r.FromUser - row[roleEdgesTblColIndex_TO_HOST] = r.ToHost - row[roleEdgesTblColIndex_TO_USER] = r.ToUser + row := sql.NewSqlRowWithLen(len(roleEdgesTblSchema)) + row.SetValue(roleEdgesTblColIndex_FROM_HOST, r.FromHost) + row.SetValue(roleEdgesTblColIndex_FROM_USER, r.FromUser) + row.SetValue(roleEdgesTblColIndex_TO_HOST, r.ToHost) + row.SetValue(roleEdgesTblColIndex_TO_USER, r.ToUser) if r.WithAdminOption { - row[roleEdgesTblColIndex_WITH_ADMIN_OPTION] = uint16(2) + row.SetValue(roleEdgesTblColIndex_WITH_ADMIN_OPTION, uint16(2)) } else { - row[roleEdgesTblColIndex_WITH_ADMIN_OPTION] = uint16(1) + row.SetValue(roleEdgesTblColIndex_WITH_ADMIN_OPTION, uint16(1)) } return row, nil } @@ -51,11 +51,11 @@ func RoleEdgeFromRow(ctx *sql.Context, row sql.Row) (*RoleEdge, error) { return nil, err } return &RoleEdge{ - FromHost: row[roleEdgesTblColIndex_FROM_HOST].(string), - FromUser: row[roleEdgesTblColIndex_FROM_USER].(string), - ToHost: row[roleEdgesTblColIndex_TO_HOST].(string), - ToUser: row[roleEdgesTblColIndex_TO_USER].(string), - WithAdminOption: row[roleEdgesTblColIndex_WITH_ADMIN_OPTION].(uint16) == 2, + FromHost: row.GetValue(roleEdgesTblColIndex_FROM_HOST).(string), + FromUser: row.GetValue(roleEdgesTblColIndex_FROM_USER).(string), + ToHost: row.GetValue(roleEdgesTblColIndex_TO_HOST).(string), + ToUser: row.GetValue(roleEdgesTblColIndex_TO_USER).(string), + WithAdminOption: row.GetValue(roleEdgesTblColIndex_WITH_ADMIN_OPTION).(uint16) == 2, }, nil } diff --git a/sql/mysql_db/tables_priv.go b/sql/mysql_db/tables_priv.go index 5e74c76fb8..a68c8a4367 100644 --- a/sql/mysql_db/tables_priv.go +++ b/sql/mysql_db/tables_priv.go @@ -38,19 +38,19 @@ var ( ) func UserAddTablesRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { - if len(row) != len(tablesPrivTblSchema) { + if row.Len() != len(tablesPrivTblSchema) { return nil, errTablesPrivRow } - dbName, ok := row[tablesPrivTblColIndex_Db].(string) + dbName, ok := row.GetValue(tablesPrivTblColIndex_Db).(string) if !ok { return nil, errTablesPrivRow } - tblName, ok := row[tablesPrivTblColIndex_Table_name].(string) + tblName, ok := row.GetValue(tablesPrivTblColIndex_Table_name).(string) if !ok { return nil, errTablesPrivRow } - tablePrivs, ok := row[tablesPrivTblColIndex_Table_priv].(uint64) + tablePrivs, ok := row.GetValue(tablesPrivTblColIndex_Table_priv).(uint64) if !ok { return nil, errTablesPrivRow } @@ -100,15 +100,15 @@ func UserAddTablesRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) } func UserRemoveTablesRow(ctx *sql.Context, row sql.Row, user *User) (*User, error) { - if len(row) != len(tablesPrivTblSchema) { + if row.Len() != len(tablesPrivTblSchema) { return nil, errTablesPrivRow } - db, ok := row[tablesPrivTblColIndex_Db].(string) + db, ok := row.GetValue(tablesPrivTblColIndex_Db).(string) if !ok { return nil, errTablesPrivRow } - tbl, ok := row[tablesPrivTblColIndex_Table_name].(string) + tbl, ok := row.GetValue(tablesPrivTblColIndex_Table_name).(string) if !ok { return nil, errTablesPrivRow } @@ -119,14 +119,14 @@ func UserRemoveTablesRow(ctx *sql.Context, row sql.Row, user *User) (*User, erro } func UserFromTablesRow(ctx *sql.Context, row sql.Row) (*User, error) { - if len(row) != len(tablesPrivTblSchema) { + if row.Len() != len(tablesPrivTblSchema) { return nil, errTablesPrivRow } - host, ok := row[tablesPrivTblColIndex_Host].(string) + host, ok := row.GetValue(tablesPrivTblColIndex_Host).(string) if !ok { return nil, errTablesPrivRow } - user, ok := row[tablesPrivTblColIndex_User].(string) + user, ok := row.GetValue(tablesPrivTblColIndex_User).(string) if !ok { return nil, errTablesPrivRow } @@ -138,10 +138,12 @@ func UserFromTablesRow(ctx *sql.Context, row sql.Row) (*User, error) { func UserToTablesRows(ctx *sql.Context, user *User) ([]sql.Row, error) { newRow := func() (sql.Row, error) { - row := make(sql.Row, len(tablesPrivTblSchema)) + row := sql.NewSqlRowWithLen(len(tablesPrivTblSchema)) var err error for i, col := range tablesPrivTblSchema { - row[i], err = col.Default.Eval(ctx, nil) + var v interface{} + v, err = col.Default.Eval(ctx, nil) + row.SetValue(i, v) if err != nil { return nil, err // Should never happen, schema is static } @@ -160,10 +162,10 @@ func UserToTablesRows(ctx *sql.Context, user *User) ([]sql.Row, error) { return nil, err } - row[tablesPrivTblColIndex_User] = user.User - row[tablesPrivTblColIndex_Host] = user.Host - row[tablesPrivTblColIndex_Db] = dbSet.Name() - row[tablesPrivTblColIndex_Table_name] = tblSet.Name() + row.SetValue(tablesPrivTblColIndex_User, user.User) + row.SetValue(tablesPrivTblColIndex_Host, user.Host) + row.SetValue(tablesPrivTblColIndex_Db, dbSet.Name()) + row.SetValue(tablesPrivTblColIndex_Table_name, tblSet.Name()) var privs []string for _, priv := range tblSet.ToSlice() { @@ -200,7 +202,7 @@ func UserToTablesRows(ctx *sql.Context, user *User) ([]sql.Row, error) { if err != nil { return nil, err } - row[tablesPrivTblColIndex_Table_priv] = formattedSet.(uint64) + row.SetValue(tablesPrivTblColIndex_Table_priv, formattedSet.(uint64)) rows = append(rows, row) } } diff --git a/sql/mysql_db/user.go b/sql/mysql_db/user.go index 79fd2c955c..12626add46 100644 --- a/sql/mysql_db/user.go +++ b/sql/mysql_db/user.go @@ -44,26 +44,28 @@ type User struct { } func UserToRow(ctx *sql.Context, u *User) (sql.Row, error) { - row := make(sql.Row, len(userTblSchema)) + row := sql.NewSqlRowWithLen(len(userTblSchema)) var err error for i, col := range userTblSchema { - row[i], err = col.Default.Eval(ctx, nil) + var v interface{} + v, err = col.Default.Eval(ctx, nil) + row.SetValue(i, v) if err != nil { panic(err) // Should never happen, schema is static } } //TODO: once the remaining fields are added, fill those in as well - row[userTblColIndex_User] = u.User - row[userTblColIndex_Host] = u.Host - row[userTblColIndex_plugin] = u.Plugin - row[userTblColIndex_authentication_string] = u.Password - row[userTblColIndex_password_last_changed] = u.PasswordLastChanged - row[userTblColIndex_identity] = u.Identity + row.SetValue(userTblColIndex_User, u.User) + row.SetValue(userTblColIndex_Host, u.Host) + row.SetValue(userTblColIndex_plugin, u.Plugin) + row.SetValue(userTblColIndex_authentication_string, u.Password) + row.SetValue(userTblColIndex_password_last_changed, u.PasswordLastChanged) + row.SetValue(userTblColIndex_identity, u.Identity) if u.Locked { - row[userTblColIndex_account_locked] = uint16(2) + row.SetValue(userTblColIndex_account_locked, uint16(2)) } if u.Attributes != nil { - row[userTblColIndex_User_attributes] = *u.Attributes + row.SetValue(userTblColIndex_User_attributes, *u.Attributes) } u.privSetToRow(ctx, row) return row, nil @@ -76,22 +78,22 @@ func UserFromRow(ctx *sql.Context, row sql.Row) (*User, error) { //TODO: once the remaining fields are added, fill those in as well var attributes *string passwordLastChanged := time.Now().UTC() - if val, ok := row[userTblColIndex_User_attributes].(string); ok { + if val, ok := row.GetValue(userTblColIndex_User_attributes).(string); ok { attributes = &val } - if val, ok := row[userTblColIndex_password_last_changed].(time.Time); ok { + if val, ok := row.GetValue(userTblColIndex_password_last_changed).(time.Time); ok { passwordLastChanged = val } return &User{ - User: row[userTblColIndex_User].(string), - Host: row[userTblColIndex_Host].(string), + User: row.GetValue(userTblColIndex_User).(string), + Host: row.GetValue(userTblColIndex_Host).(string), PrivilegeSet: UserRowToPrivSet(ctx, row), - Plugin: row[userTblColIndex_plugin].(string), - Password: row[userTblColIndex_authentication_string].(string), + Plugin: row.GetValue(userTblColIndex_plugin).(string), + Password: row.GetValue(userTblColIndex_authentication_string).(string), PasswordLastChanged: passwordLastChanged, - Locked: row[userTblColIndex_account_locked].(uint16) == 2, + Locked: row.GetValue(userTblColIndex_account_locked).(uint16) == 2, Attributes: attributes, - Identity: row[userTblColIndex_identity].(string), + Identity: row.GetValue(userTblColIndex_identity).(string), IsRole: false, }, nil } @@ -168,7 +170,7 @@ func (u User) UserHostToString(quote string) string { func UserRowToPrivSet(ctx *sql.Context, row sql.Row) PrivilegeSet { privSet := NewPrivilegeSet() - for i, val := range row { + for i, val := range row.Values() { switch i { case userTblColIndex_Select_priv: if val.(uint16) == 2 { @@ -305,67 +307,67 @@ func (u *User) privSetToRow(ctx *sql.Context, row sql.Row) { for _, priv := range u.PrivilegeSet.ToSlice() { switch priv { case sql.PrivilegeType_Select: - row[userTblColIndex_Select_priv] = uint16(2) + row.SetValue(userTblColIndex_Select_priv, uint16(2)) case sql.PrivilegeType_Insert: - row[userTblColIndex_Insert_priv] = uint16(2) + row.SetValue(userTblColIndex_Insert_priv, uint16(2)) case sql.PrivilegeType_Update: - row[userTblColIndex_Update_priv] = uint16(2) + row.SetValue(userTblColIndex_Update_priv, uint16(2)) case sql.PrivilegeType_Delete: - row[userTblColIndex_Delete_priv] = uint16(2) + row.SetValue(userTblColIndex_Delete_priv, uint16(2)) case sql.PrivilegeType_Create: - row[userTblColIndex_Create_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_priv, uint16(2)) case sql.PrivilegeType_Drop: - row[userTblColIndex_Drop_priv] = uint16(2) + row.SetValue(userTblColIndex_Drop_priv, uint16(2)) case sql.PrivilegeType_Reload: - row[userTblColIndex_Reload_priv] = uint16(2) + row.SetValue(userTblColIndex_Reload_priv, uint16(2)) case sql.PrivilegeType_Shutdown: - row[userTblColIndex_Shutdown_priv] = uint16(2) + row.SetValue(userTblColIndex_Shutdown_priv, uint16(2)) case sql.PrivilegeType_Process: - row[userTblColIndex_Process_priv] = uint16(2) + row.SetValue(userTblColIndex_Process_priv, uint16(2)) case sql.PrivilegeType_File: - row[userTblColIndex_File_priv] = uint16(2) + row.SetValue(userTblColIndex_File_priv, uint16(2)) case sql.PrivilegeType_GrantOption: - row[userTblColIndex_Grant_priv] = uint16(2) + row.SetValue(userTblColIndex_Grant_priv, uint16(2)) case sql.PrivilegeType_References: - row[userTblColIndex_References_priv] = uint16(2) + row.SetValue(userTblColIndex_References_priv, uint16(2)) case sql.PrivilegeType_Index: - row[userTblColIndex_Index_priv] = uint16(2) + row.SetValue(userTblColIndex_Index_priv, uint16(2)) case sql.PrivilegeType_Alter: - row[userTblColIndex_Alter_priv] = uint16(2) + row.SetValue(userTblColIndex_Alter_priv, uint16(2)) case sql.PrivilegeType_ShowDB: - row[userTblColIndex_Show_db_priv] = uint16(2) + row.SetValue(userTblColIndex_Show_db_priv, uint16(2)) case sql.PrivilegeType_Super: - row[userTblColIndex_Super_priv] = uint16(2) + row.SetValue(userTblColIndex_Super_priv, uint16(2)) case sql.PrivilegeType_CreateTempTable: - row[userTblColIndex_Create_tmp_table_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_tmp_table_priv, uint16(2)) case sql.PrivilegeType_LockTables: - row[userTblColIndex_Lock_tables_priv] = uint16(2) + row.SetValue(userTblColIndex_Lock_tables_priv, uint16(2)) case sql.PrivilegeType_Execute: - row[userTblColIndex_Execute_priv] = uint16(2) + row.SetValue(userTblColIndex_Execute_priv, uint16(2)) case sql.PrivilegeType_ReplicationSlave: - row[userTblColIndex_Repl_slave_priv] = uint16(2) + row.SetValue(userTblColIndex_Repl_slave_priv, uint16(2)) case sql.PrivilegeType_ReplicationClient: - row[userTblColIndex_Repl_client_priv] = uint16(2) + row.SetValue(userTblColIndex_Repl_client_priv, uint16(2)) case sql.PrivilegeType_CreateView: - row[userTblColIndex_Create_view_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_view_priv, uint16(2)) case sql.PrivilegeType_ShowView: - row[userTblColIndex_Show_view_priv] = uint16(2) + row.SetValue(userTblColIndex_Show_view_priv, uint16(2)) case sql.PrivilegeType_CreateRoutine: - row[userTblColIndex_Create_routine_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_routine_priv, uint16(2)) case sql.PrivilegeType_AlterRoutine: - row[userTblColIndex_Alter_routine_priv] = uint16(2) + row.SetValue(userTblColIndex_Alter_routine_priv, uint16(2)) case sql.PrivilegeType_CreateUser: - row[userTblColIndex_Create_user_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_user_priv, uint16(2)) case sql.PrivilegeType_Event: - row[userTblColIndex_Event_priv] = uint16(2) + row.SetValue(userTblColIndex_Event_priv, uint16(2)) case sql.PrivilegeType_Trigger: - row[userTblColIndex_Trigger_priv] = uint16(2) + row.SetValue(userTblColIndex_Trigger_priv, uint16(2)) case sql.PrivilegeType_CreateTablespace: - row[userTblColIndex_Create_tablespace_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_tablespace_priv, uint16(2)) case sql.PrivilegeType_CreateRole: - row[userTblColIndex_Create_role_priv] = uint16(2) + row.SetValue(userTblColIndex_Create_role_priv, uint16(2)) case sql.PrivilegeType_DropRole: - row[userTblColIndex_Drop_role_priv] = uint16(2) + row.SetValue(userTblColIndex_Drop_role_priv, uint16(2)) } } } diff --git a/sql/plan/alter_event.go b/sql/plan/alter_event.go index ab1e681f5c..2b3b77ca3d 100644 --- a/sql/plan/alter_event.go +++ b/sql/plan/alter_event.go @@ -450,7 +450,7 @@ func (a *alterEventIter) Next(ctx *sql.Context) (sql.Row, error) { if err != nil { return nil, err } - return sql.Row{types.NewOkResult(0)}, nil + return sql.UntypedSqlRow{types.NewOkResult(0)}, nil } } } @@ -465,7 +465,7 @@ func (a *alterEventIter) Next(ctx *sql.Context) (sql.Row, error) { a.scheduler.UpdateEvent(ctx, a.eventDb, a.originalName, a.event) } - return sql.Row{types.NewOkResult(0)}, nil + return sql.UntypedSqlRow{types.NewOkResult(0)}, nil } // Close implements the sql.RowIter interface. diff --git a/sql/plan/create_user_data.go b/sql/plan/create_user_data.go index be61d54dc0..296db54f57 100644 --- a/sql/plan/create_user_data.go +++ b/sql/plan/create_user_data.go @@ -126,11 +126,10 @@ func NewDefaultAuthentication(password string) Authentication { type AuthenticationOther struct { password string plugin string - identity string } -func NewOtherAuthentication(password, plugin, identity string) Authentication { - return AuthenticationOther{password, plugin, identity} +func NewOtherAuthentication(password, plugin string) Authentication { + return AuthenticationOther{password, plugin} } func (a AuthenticationOther) Plugin() string { @@ -138,8 +137,5 @@ func (a AuthenticationOther) Plugin() string { } func (a AuthenticationOther) Password() string { - if a.password == "" { - return a.identity - } return string(a.password) } diff --git a/sql/plan/create_view.go b/sql/plan/create_view.go index 1c6f8e5541..ece9a1d59b 100644 --- a/sql/plan/create_view.go +++ b/sql/plan/create_view.go @@ -87,7 +87,7 @@ func (cv *CreateView) Schema() sql.Schema { return types.OkResultSchema } -// String implements the fmt.Stringer interface, using sql.TreePrinter to +// String implements the fmt.Stringer interface{}, using sql.TreePrinter to // generate the string. func (cv *CreateView) String() string { pr := sql.NewTreePrinter() @@ -112,13 +112,13 @@ func (*CreateView) CollationCoercibility(ctx *sql.Context) (collation sql.Collat return sql.Collation_binary, 7 } -// Database implements the Databaser interface, and it returns the database in +// Database implements the Databaser interface{}, and it returns the database in // which CreateView will create the view. func (cv *CreateView) Database() sql.Database { return cv.database } -// WithDatabase implements the Databaser interface, and it returns a copy of this +// WithDatabase implements the Databaser interface{}, and it returns a copy of this // node with the specified database. func (cv *CreateView) WithDatabase(database sql.Database) (sql.Node, error) { if privilegedDatabase, ok := database.(mysql_db.PrivilegedDatabase); ok { diff --git a/sql/plan/ddl_event.go b/sql/plan/ddl_event.go index f99138711b..c0b6cf803c 100644 --- a/sql/plan/ddl_event.go +++ b/sql/plan/ddl_event.go @@ -373,7 +373,7 @@ func (c *createEventIter) Next(ctx *sql.Context) (sql.Row, error) { Code: 1537, Message: fmt.Sprintf(err.Error()), }) - return sql.Row{types.NewOkResult(0)}, nil + return sql.UntypedSqlRow{types.NewOkResult(0)}, nil } return nil, err } @@ -405,7 +405,7 @@ func (c *createEventIter) Next(ctx *sql.Context) (sql.Row, error) { Message: "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.", }) } - return sql.Row{types.NewOkResult(0)}, nil + return sql.UntypedSqlRow{types.NewOkResult(0)}, nil } } @@ -414,7 +414,7 @@ func (c *createEventIter) Next(ctx *sql.Context) (sql.Row, error) { c.eventScheduler.AddEvent(ctx, c.eventDb, c.event) } - return sql.Row{types.NewOkResult(0)}, nil + return sql.UntypedSqlRow{types.NewOkResult(0)}, nil } // Close implements the sql.RowIter interface. @@ -631,7 +631,7 @@ func (d *DropEvent) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, error) return nil, err } - return sql.RowsToRowIter(sql.Row{types.NewOkResult(0)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{types.NewOkResult(0)}), nil } // WithChildren implements the sql.Node interface. diff --git a/sql/plan/drop_role.go b/sql/plan/drop_role.go index 6a5937ffbd..b98c6c2fd5 100644 --- a/sql/plan/drop_role.go +++ b/sql/plan/drop_role.go @@ -141,5 +141,5 @@ func (n *DropRole) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, error) { if err := mysqlDb.Persist(ctx, editor); err != nil { return nil, err } - return sql.RowsToRowIter(sql.Row{types.NewOkResult(0)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{types.NewOkResult(0)}), nil } diff --git a/sql/plan/drop_user.go b/sql/plan/drop_user.go index 67dbdef468..6ddca76f57 100644 --- a/sql/plan/drop_user.go +++ b/sql/plan/drop_user.go @@ -136,5 +136,5 @@ func (n *DropUser) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, error) { if err := mysqlDb.Persist(ctx, editor); err != nil { return nil, err } - return sql.RowsToRowIter(sql.Row{types.NewOkResult(0)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{types.NewOkResult(0)}), nil } diff --git a/sql/plan/drop_view.go b/sql/plan/drop_view.go index 7bf1794c2a..db5490ef2c 100644 --- a/sql/plan/drop_view.go +++ b/sql/plan/drop_view.go @@ -64,7 +64,7 @@ func (dv *SingleDropView) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, e // Schema implements the Node interface. It always returns nil. func (dv *SingleDropView) Schema() sql.Schema { return nil } -// String implements the fmt.Stringer interface, using sql.TreePrinter to +// String implements the fmt.Stringer interface{}, using sql.TreePrinter to // generate the string. func (dv *SingleDropView) String() string { pr := sql.NewTreePrinter() @@ -93,7 +93,7 @@ func (dv *SingleDropView) Database() sql.Database { return dv.database } -// WithDatabase implements the sql.Databaser interface, and it returns a copy of this +// WithDatabase implements the sql.Databaser interface{}, and it returns a copy of this // node with the specified database. func (dv *SingleDropView) WithDatabase(database sql.Database) (sql.Node, error) { if privilegedDatabase, ok := database.(mysql_db.PrivilegedDatabase); ok { @@ -141,7 +141,7 @@ func (dvs *DropView) Resolved() bool { // Schema implements the Node interface. It always returns nil. func (dvs *DropView) Schema() sql.Schema { return nil } -// String implements the fmt.Stringer interface, using sql.TreePrinter to +// String implements the fmt.Stringer interface{}, using sql.TreePrinter to // generate the string. func (dvs *DropView) String() string { childrenStrings := make([]string, len(dvs.children)) diff --git a/sql/plan/flush.go b/sql/plan/flush.go index d06fa3a9dd..d2e13e0aa1 100644 --- a/sql/plan/flush.go +++ b/sql/plan/flush.go @@ -50,7 +50,7 @@ func (f *FlushPrivileges) RowIter(ctx *sql.Context, _ sql.Row) (sql.RowIter, err if err != nil { return nil, err } - return sql.RowsToRowIter(sql.Row{types.NewOkResult(0)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{types.NewOkResult(0)}), nil } // String implements the interface sql.Node. diff --git a/sql/plan/foreign_key_editor.go b/sql/plan/foreign_key_editor.go index bc4c364992..d8166380ed 100644 --- a/sql/plan/foreign_key_editor.go +++ b/sql/plan/foreign_key_editor.go @@ -84,7 +84,7 @@ func (fkEditor *ForeignKeyEditor) Update(ctx *sql.Context, old sql.Row, new sql. // Only check the reference for the columns that are updated hasChange := false for _, idx := range reference.RowMapper.IndexPositions { - cmp, err := fkEditor.Schema[idx].Type.Compare(old[idx], new[idx]) + cmp, err := fkEditor.Schema[idx].Type.Compare(old.GetValue(idx), new.GetValue(idx)) if err != nil { return err } @@ -164,18 +164,18 @@ func (fkEditor *ForeignKeyEditor) OnUpdateCascade(ctx *sql.Context, refActionDat return err } defer rowIter.Close(ctx) - var rowToUpdate sql.Row + var rowToUpdate sql.Row = sql.UntypedSqlRow{} for rowToUpdate, err = rowIter.Next(ctx); err == nil; rowToUpdate, err = rowIter.Next(ctx) { if depth > 15 { return sql.ErrForeignKeyDepthLimit.New() } - updatedRow := make(sql.Row, len(rowToUpdate)) - for i := range rowToUpdate { + updatedRow := sql.NewSqlRowWithLen(rowToUpdate.Len()) + for i := range rowToUpdate.Values() { mappedVal := refActionData.ChildParentMapping[i] if mappedVal == -1 { - updatedRow[i] = rowToUpdate[i] + updatedRow.SetValue(i, rowToUpdate.GetValue(i)) } else { - updatedRow[i] = new[mappedVal] + updatedRow.SetValue(i, new.GetValue(mappedVal)) } } err = refActionData.Editor.Update(ctx, rowToUpdate, updatedRow, depth) @@ -202,16 +202,16 @@ func (fkEditor *ForeignKeyEditor) OnUpdateSetNull(ctx *sql.Context, refActionDat return err } defer rowIter.Close(ctx) - var rowToUpdate sql.Row + var rowToUpdate sql.Row = sql.UntypedSqlRow{} for rowToUpdate, err = rowIter.Next(ctx); err == nil; rowToUpdate, err = rowIter.Next(ctx) { if depth > 15 { return sql.ErrForeignKeyDepthLimit.New() } - updatedRow := make(sql.Row, len(rowToUpdate)) - for i := range rowToUpdate { + updatedRow := sql.NewSqlRowWithLen(rowToUpdate.Len()) + for i := range rowToUpdate.Values() { // Row contents are nil by default, so we only need to assign the non-affected values if refActionData.ChildParentMapping[i] == -1 { - updatedRow[i] = rowToUpdate[i] + updatedRow.SetValue(i, rowToUpdate.GetValue(i)) } } err = refActionData.Editor.Update(ctx, rowToUpdate, updatedRow, depth) @@ -280,7 +280,7 @@ func (fkEditor *ForeignKeyEditor) OnDeleteCascade(ctx *sql.Context, refActionDat return err } defer rowIter.Close(ctx) - var rowToDelete sql.Row + var rowToDelete sql.Row = sql.UntypedSqlRow{} for rowToDelete, err = rowIter.Next(ctx); err == nil; rowToDelete, err = rowIter.Next(ctx) { // MySQL seems to have a bug where cyclical foreign keys return an error at a depth of 15 instead of 16. // This replicates the observed behavior, regardless of whether we're replicating a bug or intentional behavior. @@ -309,7 +309,7 @@ func (fkEditor *ForeignKeyEditor) OnDeleteSetNull(ctx *sql.Context, refActionDat return err } defer rowIter.Close(ctx) - var rowToNull sql.Row + var rowToNull sql.Row = sql.UntypedSqlRow{} for rowToNull, err = rowIter.Next(ctx); err == nil; rowToNull, err = rowIter.Next(ctx) { // MySQL seems to have a bug where cyclical foreign keys return an error at a depth of 15 instead of 16. // This replicates the observed behavior, regardless of whether we're replicating a bug or intentional behavior. @@ -320,11 +320,11 @@ func (fkEditor *ForeignKeyEditor) OnDeleteSetNull(ctx *sql.Context, refActionDat return sql.ErrForeignKeyDepthLimit.New() } } - nulledRow := make(sql.Row, len(rowToNull)) - for i := range rowToNull { + nulledRow := sql.NewSqlRowWithLen(rowToNull.Len()) + for i := range rowToNull.Values() { // Row contents are nil by default, so we only need to assign the non-affected values if refActionData.ChildParentMapping[i] == -1 { - nulledRow[i] = rowToNull[i] + nulledRow.SetValue(i, rowToNull.GetValue(i)) } } err = refActionData.Editor.Update(ctx, rowToNull, nulledRow, depth) @@ -346,8 +346,8 @@ func (fkEditor *ForeignKeyEditor) ColumnsUpdated(refActionData ForeignKeyRefActi if mappedVal == -1 { continue } - oldVal := old[mappedVal] - newVal := new[mappedVal] + oldVal := old.GetValue(mappedVal) + newVal := new.GetValue(mappedVal) cmp, err := fkEditor.Schema[mappedVal].Type.Compare(oldVal, newVal) if err != nil { return false, err @@ -387,7 +387,7 @@ func (reference *ForeignKeyReferenceHandler) IsInitialized() bool { func (reference *ForeignKeyReferenceHandler) CheckReference(ctx *sql.Context, row sql.Row) error { // If even one of the values are NULL then we don't check the parent for _, pos := range reference.RowMapper.IndexPositions { - if row[pos] == nil { + if row.GetValue(pos) == nil { return nil } } @@ -412,7 +412,7 @@ func (reference *ForeignKeyReferenceHandler) CheckReference(ctx *sql.Context, ro for i := range reference.ForeignKey.Columns { colPos := reference.SelfCols[strings.ToLower(reference.ForeignKey.Columns[i])] refPos := reference.SelfCols[strings.ToLower(reference.ForeignKey.ParentColumns[i])] - cmp, err := reference.RowMapper.SourceSch[colPos].Type.Compare(row[colPos], row[refPos]) + cmp, err := reference.RowMapper.SourceSch[colPos].Type.Compare(row.GetValue(colPos), row.GetValue(refPos)) if err != nil { return err } @@ -476,7 +476,7 @@ func (mapper *ForeignKeyRowMapper) IsInitialized() bool { func (mapper *ForeignKeyRowMapper) GetIter(ctx *sql.Context, row sql.Row, refCheck bool) (sql.RowIter, error) { rang := make(sql.MySQLRange, len(mapper.IndexPositions)+len(mapper.AppendTypes)) for rangPosition, rowPos := range mapper.IndexPositions { - rowVal := row[rowPos] + rowVal := row.GetValue(rowPos) // If any value is NULL then it is ignored by foreign keys if rowVal == nil { return sql.RowsToRowIter(), nil @@ -513,7 +513,7 @@ func (mapper *ForeignKeyRowMapper) GetIter(ctx *sql.Context, row sql.Row, refChe func (mapper *ForeignKeyRowMapper) GetKeyString(row sql.Row) string { keyStrParts := make([]string, len(mapper.IndexPositions)) for i, rowPos := range mapper.IndexPositions { - keyStrParts[i] = fmt.Sprint(row[rowPos]) + keyStrParts[i] = fmt.Sprint(row.GetValue(rowPos)) } return fmt.Sprintf("[%s]", strings.Join(keyStrParts, ",")) } diff --git a/sql/plan/hash_lookup.go b/sql/plan/hash_lookup.go index 216b1bc7b3..ec092de145 100644 --- a/sql/plan/hash_lookup.go +++ b/sql/plan/hash_lookup.go @@ -127,7 +127,7 @@ func (n *HashLookup) GetHashKey(ctx *sql.Context, e sql.Expression, row sql.Row) return nil, err } if s, ok := key.([]interface{}); ok { - return sql.HashOf(s) + return sql.HashOf(sql.NewUntypedRow(s...)) } // byte slices are not hashable if k, ok := key.([]byte); ok { diff --git a/sql/plan/show_charset.go b/sql/plan/show_charset.go index 79385a23bb..ba1d7344b2 100644 --- a/sql/plan/show_charset.go +++ b/sql/plan/show_charset.go @@ -91,7 +91,7 @@ func (sc *ShowCharset) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, erro iter := sql.NewCharacterSetsIterator() for charset, ok := iter.Next(); ok; charset, ok = iter.Next() { if charset.Encoder != nil && charset.BinaryCollation.Sorter() != nil && charset.DefaultCollation.Sorter() != nil { - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ charset.Name, charset.Description, charset.DefaultCollation.String(), @@ -113,10 +113,10 @@ func (sci *showCharsetIter) Next(ctx *sql.Context) (sql.Row, error) { } // switch the ordering (see notes on Schema()) - defaultCollationName := row[1] + defaultCollationName := row.GetValue(1) - row[1] = row[2] - row[2] = defaultCollationName + row.SetValue(1, row.GetValue(2)) + row.SetValue(2, defaultCollationName) return row, nil } diff --git a/sql/plan/show_create_procedure.go b/sql/plan/show_create_procedure.go index 22f4ff03fe..4fc562d707 100644 --- a/sql/plan/show_create_procedure.go +++ b/sql/plan/show_create_procedure.go @@ -92,7 +92,7 @@ func (s *ShowCreateProcedure) RowIter(ctx *sql.Context, _ sql.Row) (sql.RowIter, if s.ExternalStoredProcedure != nil { // If an external stored procedure has been plugged in by the analyzer, use that fakeCreateProcedureStmt := s.ExternalStoredProcedure.FakeCreateProcedureStmt() - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ s.ExternalStoredProcedure.Name, // Procedure "", // sql_mode fakeCreateProcedureStmt, // Create Procedure @@ -112,7 +112,7 @@ func (s *ShowCreateProcedure) RowIter(ctx *sql.Context, _ sql.Row) (sql.RowIter, } for _, procedure := range procedures { if strings.ToLower(procedure.Name) == s.ProcedureName { - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ procedure.Name, // Procedure "", // sql_mode procedure.CreateStatement, // Create Procedure diff --git a/sql/plan/show_events.go b/sql/plan/show_events.go index 95337bfd89..60ce80e10a 100644 --- a/sql/plan/show_events.go +++ b/sql/plan/show_events.go @@ -131,7 +131,7 @@ func (s *ShowEvents) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, error) } // TODO: Time zone and Originator are set to default for now. - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ dbName, // Db e.Name, // Name e.Definer, // Definer diff --git a/sql/plan/show_privileges.go b/sql/plan/show_privileges.go index b0433cf48b..753cf9efd5 100644 --- a/sql/plan/show_privileges.go +++ b/sql/plan/show_privileges.go @@ -74,71 +74,71 @@ func (*ShowPrivileges) CollationCoercibility(ctx *sql.Context) (collation sql.Co // RowIter implements the interface sql.Node. func (n *ShowPrivileges) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, error) { return sql.RowsToRowIter( - sql.Row{"Alter", "Tables", "To alter the table"}, - sql.Row{"Alter routine", "Functions,Procedures", "To alter or drop stored functions/procedures"}, - sql.Row{"Create", "Databases,Tables,Indexes", "To create new databases and tables"}, - sql.Row{"Create routine", "Databases", "To use CREATE FUNCTION/PROCEDURE"}, - sql.Row{"Create role", "Server Admin", "To create new roles"}, - sql.Row{"Create temporary tables", "Databases", "To use CREATE TEMPORARY TABLE"}, - sql.Row{"Create view", "Tables", "To create new views"}, - sql.Row{"Create user", "Server Admin", "To create new users"}, - sql.Row{"Delete", "Tables", "To delete existing rows"}, - sql.Row{"Drop", "Databases,Tables", "To drop databases, tables, and views"}, - sql.Row{"Drop role", "Server Admin", "To drop roles"}, - sql.Row{"Event", "Server Admin", "To create, alter, drop and execute events"}, - sql.Row{"Execute", "Functions,Procedures", "To execute stored routines"}, - sql.Row{"File", "File access on server", "To read and write files on the server"}, - sql.Row{"Grant option", "Databases,Tables,Functions,Procedures", "To give to other users those privileges you possess"}, - sql.Row{"Index", "Tables", "To create or drop indexes"}, - sql.Row{"Insert", "Tables", "To insert data into tables"}, - sql.Row{"Lock tables", "Databases", "To use LOCK TABLES (together with SELECT privilege)"}, - sql.Row{"Process", "Server Admin", "To view the plain text of currently executing queries"}, - sql.Row{"Proxy", "Server Admin", "To make proxy user possible"}, - sql.Row{"References", "Databases,Tables", "To have references on tables"}, - sql.Row{"Reload", "Server Admin", "To reload or refresh tables, logs and privileges"}, - sql.Row{"Replication client", "Server Admin", "To ask where the slave or master servers are"}, - sql.Row{"Replication slave", "Server Admin", "To read binary log events from the master"}, - sql.Row{"Select", "Tables", "To retrieve rows from table"}, - sql.Row{"Show databases", "Server Admin", "To see all databases with SHOW DATABASES"}, - sql.Row{"Show view", "Tables", "To see views with SHOW CREATE VIEW"}, - sql.Row{"Shutdown", "Server Admin", "To shut down the server"}, - sql.Row{"Super", "Server Admin", "To use KILL thread, SET GLOBAL, CHANGE MASTER, etc."}, - sql.Row{"Trigger", "Tables", "To use triggers"}, - sql.Row{"Create tablespace", "Server Admin", "To create/alter/drop tablespaces"}, - sql.Row{"Update", "Tables", "To update existing rows"}, - sql.Row{"Usage", "Server Admin", "No privileges - allow connect only"}, - sql.Row{"ENCRYPTION_KEY_ADMIN", "Server Admin", ""}, - sql.Row{"INNODB_REDO_LOG_ARCHIVE", "Server Admin", ""}, - sql.Row{"REPLICATION_APPLIER", "Server Admin", ""}, - sql.Row{"INNODB_REDO_LOG_ENABLE", "Server Admin", ""}, - sql.Row{"SET_USER_ID", "Server Admin", ""}, - sql.Row{"SERVICE_CONNECTION_ADMIN", "Server Admin", ""}, - sql.Row{"GROUP_REPLICATION_ADMIN", "Server Admin", ""}, - sql.Row{"AUDIT_ABORT_EXEMPT", "Server Admin", ""}, - sql.Row{"GROUP_REPLICATION_STREAM", "Server Admin", ""}, - sql.Row{"CLONE_ADMIN", "Server Admin", ""}, - sql.Row{"SYSTEM_USER", "Server Admin", ""}, - sql.Row{"AUTHENTICATION_POLICY_ADMIN", "Server Admin", ""}, - sql.Row{"SHOW_ROUTINE", "Server Admin", ""}, - sql.Row{"BACKUP_ADMIN", "Server Admin", ""}, - sql.Row{"CONNECTION_ADMIN", "Server Admin", ""}, - sql.Row{"PERSIST_RO_VARIABLES_ADMIN", "Server Admin", ""}, - sql.Row{"RESOURCE_GROUP_ADMIN", "Server Admin", ""}, - sql.Row{"SESSION_VARIABLES_ADMIN", "Server Admin", ""}, - sql.Row{"SYSTEM_VARIABLES_ADMIN", "Server Admin", ""}, - sql.Row{"APPLICATION_PASSWORD_ADMIN", "Server Admin", ""}, - sql.Row{"FLUSH_OPTIMIZER_COSTS", "Server Admin", ""}, - sql.Row{"AUDIT_ADMIN", "Server Admin", ""}, - sql.Row{"BINLOG_ADMIN", "Server Admin", ""}, - sql.Row{"BINLOG_ENCRYPTION_ADMIN", "Server Admin", ""}, - sql.Row{"FLUSH_STATUS", "Server Admin", ""}, - sql.Row{"FLUSH_TABLES", "Server Admin", ""}, - sql.Row{"FLUSH_USER_RESOURCES", "Server Admin", ""}, - sql.Row{"XA_RECOVER_ADMIN", "Server Admin", ""}, - sql.Row{"PASSWORDLESS_USER_ADMIN", "Server Admin", ""}, - sql.Row{"TABLE_ENCRYPTION_ADMIN", "Server Admin", ""}, - sql.Row{"ROLE_ADMIN", "Server Admin", ""}, - sql.Row{"REPLICATION_SLAVE_ADMIN", "Server Admin", ""}, - sql.Row{"RESOURCE_GROUP_USER", "Server Admin", ""}, + sql.UntypedSqlRow{"Alter", "Tables", "To alter the table"}, + sql.UntypedSqlRow{"Alter routine", "Functions,Procedures", "To alter or drop stored functions/procedures"}, + sql.UntypedSqlRow{"Create", "Databases,Tables,Indexes", "To create new databases and tables"}, + sql.UntypedSqlRow{"Create routine", "Databases", "To use CREATE FUNCTION/PROCEDURE"}, + sql.UntypedSqlRow{"Create role", "Server Admin", "To create new roles"}, + sql.UntypedSqlRow{"Create temporary tables", "Databases", "To use CREATE TEMPORARY TABLE"}, + sql.UntypedSqlRow{"Create view", "Tables", "To create new views"}, + sql.UntypedSqlRow{"Create user", "Server Admin", "To create new users"}, + sql.UntypedSqlRow{"Delete", "Tables", "To delete existing rows"}, + sql.UntypedSqlRow{"Drop", "Databases,Tables", "To drop databases, tables, and views"}, + sql.UntypedSqlRow{"Drop role", "Server Admin", "To drop roles"}, + sql.UntypedSqlRow{"Event", "Server Admin", "To create, alter, drop and execute events"}, + sql.UntypedSqlRow{"Execute", "Functions,Procedures", "To execute stored routines"}, + sql.UntypedSqlRow{"File", "File access on server", "To read and write files on the server"}, + sql.UntypedSqlRow{"Grant option", "Databases,Tables,Functions,Procedures", "To give to other users those privileges you possess"}, + sql.UntypedSqlRow{"Index", "Tables", "To create or drop indexes"}, + sql.UntypedSqlRow{"Insert", "Tables", "To insert data into tables"}, + sql.UntypedSqlRow{"Lock tables", "Databases", "To use LOCK TABLES (together with SELECT privilege)"}, + sql.UntypedSqlRow{"Process", "Server Admin", "To view the plain text of currently executing queries"}, + sql.UntypedSqlRow{"Proxy", "Server Admin", "To make proxy user possible"}, + sql.UntypedSqlRow{"References", "Databases,Tables", "To have references on tables"}, + sql.UntypedSqlRow{"Reload", "Server Admin", "To reload or refresh tables, logs and privileges"}, + sql.UntypedSqlRow{"Replication client", "Server Admin", "To ask where the slave or master servers are"}, + sql.UntypedSqlRow{"Replication slave", "Server Admin", "To read binary log events from the master"}, + sql.UntypedSqlRow{"Select", "Tables", "To retrieve rows from table"}, + sql.UntypedSqlRow{"Show databases", "Server Admin", "To see all databases with SHOW DATABASES"}, + sql.UntypedSqlRow{"Show view", "Tables", "To see views with SHOW CREATE VIEW"}, + sql.UntypedSqlRow{"Shutdown", "Server Admin", "To shut down the server"}, + sql.UntypedSqlRow{"Super", "Server Admin", "To use KILL thread, SET GLOBAL, CHANGE MASTER, etc."}, + sql.UntypedSqlRow{"Trigger", "Tables", "To use triggers"}, + sql.UntypedSqlRow{"Create tablespace", "Server Admin", "To create/alter/drop tablespaces"}, + sql.UntypedSqlRow{"Update", "Tables", "To update existing rows"}, + sql.UntypedSqlRow{"Usage", "Server Admin", "No privileges - allow connect only"}, + sql.UntypedSqlRow{"ENCRYPTION_KEY_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"INNODB_REDO_LOG_ARCHIVE", "Server Admin", ""}, + sql.UntypedSqlRow{"REPLICATION_APPLIER", "Server Admin", ""}, + sql.UntypedSqlRow{"INNODB_REDO_LOG_ENABLE", "Server Admin", ""}, + sql.UntypedSqlRow{"SET_USER_ID", "Server Admin", ""}, + sql.UntypedSqlRow{"SERVICE_CONNECTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"GROUP_REPLICATION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"AUDIT_ABORT_EXEMPT", "Server Admin", ""}, + sql.UntypedSqlRow{"GROUP_REPLICATION_STREAM", "Server Admin", ""}, + sql.UntypedSqlRow{"CLONE_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SYSTEM_USER", "Server Admin", ""}, + sql.UntypedSqlRow{"AUTHENTICATION_POLICY_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SHOW_ROUTINE", "Server Admin", ""}, + sql.UntypedSqlRow{"BACKUP_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"CONNECTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"PERSIST_RO_VARIABLES_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"RESOURCE_GROUP_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SESSION_VARIABLES_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SYSTEM_VARIABLES_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"APPLICATION_PASSWORD_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_OPTIMIZER_COSTS", "Server Admin", ""}, + sql.UntypedSqlRow{"AUDIT_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"BINLOG_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"BINLOG_ENCRYPTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_STATUS", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_TABLES", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_USER_RESOURCES", "Server Admin", ""}, + sql.UntypedSqlRow{"XA_RECOVER_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"PASSWORDLESS_USER_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"TABLE_ENCRYPTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"ROLE_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"REPLICATION_SLAVE_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"RESOURCE_GROUP_USER", "Server Admin", ""}, ), nil } diff --git a/sql/plan/show_status.go b/sql/plan/show_status.go index 5bca6c02fa..89f42eb264 100644 --- a/sql/plan/show_status.go +++ b/sql/plan/show_status.go @@ -101,7 +101,7 @@ func (s *ShowStatus) RowIter(ctx *sql.Context, _ sql.Row) (sql.RowIter, error) { rows := make([]sql.Row, len(names)) for i, name := range names { - rows[i] = sql.Row{name, vars[name].Value()} + rows[i] = sql.UntypedSqlRow{name, vars[name].Value()} } return sql.RowsToRowIter(rows...), nil } diff --git a/sql/plan/subquery.go b/sql/plan/subquery.go index 2d0d5f7147..a6fd6aca86 100644 --- a/sql/plan/subquery.go +++ b/sql/plan/subquery.go @@ -356,8 +356,8 @@ func (s *Subquery) evalMultiple(ctx *sql.Context, row sql.Row) ([]interface{}, e returnsTuple := len(s.Query.Schema()) > 1 - // Reduce the result row to the size of the expected schema. This means chopping off the first len(row) columns. - col := len(row) + // Reduce the result row to the size of the expected schema. This means chopping off the first row.Len() columns. + col := row.Len() var result []interface{} for { row, err := iter.Next(ctx) @@ -370,9 +370,9 @@ func (s *Subquery) evalMultiple(ctx *sql.Context, row sql.Row) ([]interface{}, e } if returnsTuple { - result = append(result, append([]interface{}{}, row[col:]...)) + result = append(result, append([]interface{}{}, row.Subslice(col, row.Len()).Values()...)) } else { - result = append(result, row[col]) + result = append(result, row.GetValue(col)) } } diff --git a/sql/plan/table_copier.go b/sql/plan/table_copier.go index dafb41875f..d161837669 100644 --- a/sql/plan/table_copier.go +++ b/sql/plan/table_copier.go @@ -122,7 +122,7 @@ func (tc *TableCopier) CopyTableOver(ctx *sql.Context, sourceTable string, desti return sql.RowsToRowIter(), err } - return sql.RowsToRowIter([]sql.Row{{types.OkResult{RowsAffected: rowsUpdated, InsertID: 0, Info: nil}}}...), nil + return sql.RowsToRowIter(sql.NewSqlRow(types.OkResult{RowsAffected: rowsUpdated, InsertID: 0, Info: nil})), nil } func (tc *TableCopier) Schema() sql.Schema { diff --git a/sql/plan/transaction_committing_iter.go b/sql/plan/transaction_committing_iter.go index 0ac2cf9818..b8aa1bbc87 100644 --- a/sql/plan/transaction_committing_iter.go +++ b/sql/plan/transaction_committing_iter.go @@ -27,3 +27,17 @@ func IsSessionAutocommit(ctx *sql.Context) (bool, error) { } return sql.ConvertToBool(ctx, autoCommitSessionVar) } + +func ReadCommitted(ctx *sql.Context) bool { + val, err := ctx.GetSessionVariable(ctx, "transaction_isolation") + if err != nil { + return false + } + + valStr, ok := val.(string) + if !ok { + return false + } + + return valStr == "READ-COMMITTED" +} diff --git a/sql/plan/update_join.go b/sql/plan/update_join.go index 96984b201c..1d505cc82a 100644 --- a/sql/plan/update_join.go +++ b/sql/plan/update_join.go @@ -217,7 +217,7 @@ func SplitRowIntoTableRowMap(row sql.Row, joinSchema sql.Schema) map[string]sql. } currentTable := joinSchema[0].Source - currentRow := sql.Row{row[0]} + currentRow := sql.UntypedSqlRow{row.GetValue(0)} for i := 1; i < len(joinSchema); i++ { c := joinSchema[i] @@ -225,10 +225,10 @@ func SplitRowIntoTableRowMap(row sql.Row, joinSchema sql.Schema) map[string]sql. if c.Source != currentTable { ret[currentTable] = currentRow currentTable = c.Source - currentRow = sql.Row{row[i]} + currentRow = sql.UntypedSqlRow{row.GetValue(i)} } else { currentTable = c.Source - currentRow = append(currentRow, row[i]) + currentRow = append(currentRow, row.GetValue(i)) } } diff --git a/sql/planbuilder/ddl.go b/sql/planbuilder/ddl.go index 7c8a9e96ee..7ef25a7579 100644 --- a/sql/planbuilder/ddl.go +++ b/sql/planbuilder/ddl.go @@ -366,45 +366,6 @@ func assignColumnIndexesInSchema(schema sql.Schema) sql.Schema { return newSch } -func (b *Builder) getIndexDefs(table sql.Table) sql.IndexDefs { - idxTbl, isIdxTbl := table.(sql.IndexAddressableTable) - if !isIdxTbl { - return nil - } - var idxDefs sql.IndexDefs - idxs, err := idxTbl.GetIndexes(b.ctx) - if err != nil { - b.handleErr(err) - } - for _, idx := range idxs { - if idx.IsGenerated() { - continue - } - constraint := sql.IndexConstraint_None - if idx.IsUnique() { - if idx.ID() == "PRIMARY" { - constraint = sql.IndexConstraint_Primary - } else { - constraint = sql.IndexConstraint_Unique - } - } - columns := make([]sql.IndexColumn, len(idx.Expressions())) - for i, col := range idx.Expressions() { - // TODO: find a better way to get only the column name if the table is present - col = strings.TrimPrefix(col, idxTbl.Name()+".") - columns[i] = sql.IndexColumn{Name: col} - } - idxDefs = append(idxDefs, &sql.IndexDef{ - Name: idx.ID(), - Storage: sql.IndexUsing_Default, - Constraint: constraint, - Columns: columns, - Comment: idx.Comment(), - }) - } - return idxDefs -} - func (b *Builder) buildCreateTableLike(inScope *scope, ct *ast.DDL) *scope { database, ok := b.resolveDbForTable(ct.Table) if !ok { @@ -520,6 +481,45 @@ func (b *Builder) buildCreateTableLike(inScope *scope, ct *ast.DDL) *scope { return outScope } +func (b *Builder) getIndexDefs(table sql.Table) sql.IndexDefs { + idxTbl, isIdxTbl := table.(sql.IndexAddressableTable) + if !isIdxTbl { + return nil + } + var idxDefs sql.IndexDefs + idxs, err := idxTbl.GetIndexes(b.ctx) + if err != nil { + b.handleErr(err) + } + for _, idx := range idxs { + if idx.IsGenerated() { + continue + } + constraint := sql.IndexConstraint_None + if idx.IsUnique() { + if idx.ID() == "PRIMARY" { + constraint = sql.IndexConstraint_Primary + } else { + constraint = sql.IndexConstraint_Unique + } + } + columns := make([]sql.IndexColumn, len(idx.Expressions())) + for i, col := range idx.Expressions() { + // TODO: find a better way to get only the column name if the table is present + col = strings.TrimPrefix(col, idxTbl.Name()+".") + columns[i] = sql.IndexColumn{Name: col} + } + idxDefs = append(idxDefs, &sql.IndexDef{ + Name: idx.ID(), + Storage: sql.IndexUsing_Default, + Constraint: constraint, + Columns: columns, + Comment: idx.Comment(), + }) + } + return idxDefs +} + func (b *Builder) buildRenameTable(inScope *scope, ddl *ast.DDL) (outScope *scope) { outScope = inScope if len(ddl.FromTables) != len(ddl.ToTables) { @@ -800,6 +800,7 @@ func (b *Builder) buildIndexDefs(_ *scope, spec *ast.TableSpec) (idxDefs sql.Ind } else if idxDef.Info.Vector { // TODO: different kinds of vector HNSW, IVFFLAT, etc... constraint = sql.IndexConstraint_Vector + b.handleErr(sql.ErrUnsupportedFeature.New("vector index")) } columns := b.gatherIndexColumns(idxDef.Columns) @@ -937,6 +938,7 @@ func (b *Builder) buildAlterIndex(inScope *scope, ddl *ast.DDL, table *plan.Reso constraint = sql.IndexConstraint_Spatial case ast.VectorStr: constraint = sql.IndexConstraint_Vector + b.handleErr(sql.ErrUnsupportedFeature.New("vector index")) case ast.PrimaryStr: constraint = sql.IndexConstraint_Primary default: diff --git a/sql/planbuilder/from.go b/sql/planbuilder/from.go index 51283365b3..f347ec9cde 100644 --- a/sql/planbuilder/from.go +++ b/sql/planbuilder/from.go @@ -815,6 +815,10 @@ func resolvedViewScope(outScope *scope, view sql.Node, db string, name string) ( func (b *Builder) resolveView(name string, database sql.Database, asOf interface{}) sql.Node { var view *sql.View + if pdb, ok := database.(mysql_db.PrivilegedDatabase); ok { + database = pdb.Unwrap() + } + if vdb, vok := database.(sql.ViewDatabase); vok { viewDef, vdok, err := vdb.GetViewDefinition(b.ctx, name) if err != nil { diff --git a/sql/planbuilder/priv.go b/sql/planbuilder/priv.go index 36f6ea0374..f0cc291763 100644 --- a/sql/planbuilder/priv.go +++ b/sql/planbuilder/priv.go @@ -156,7 +156,7 @@ func (b *Builder) buildAuthenticatedUser(user ast.AccountWithAuth) plan.Authenti if user.Auth1.Plugin == "mysql_native_password" && len(user.Auth1.Password) > 0 { authUser.Auth1 = plan.AuthenticationMysqlNativePassword(user.Auth1.Password) } else if len(user.Auth1.Plugin) > 0 { - authUser.Auth1 = plan.NewOtherAuthentication(user.Auth1.Password, user.Auth1.Plugin, user.Auth1.Identity) + authUser.Auth1 = plan.NewOtherAuthentication(user.Auth1.Password, user.Auth1.Plugin) } else { // We default to using the password, even if it's empty authUser.Auth1 = plan.NewDefaultAuthentication(user.Auth1.Password) diff --git a/sql/planbuilder/scope.go b/sql/planbuilder/scope.go index ae52e61fdf..e12583e1ce 100644 --- a/sql/planbuilder/scope.go +++ b/sql/planbuilder/scope.go @@ -15,6 +15,7 @@ package planbuilder import ( + "fmt" "strings" ast "github.com/dolthub/vitess/go/vt/sqlparser" @@ -637,6 +638,6 @@ func (c scopeColumn) String() string { if c.table == "" { return c.col } else { - return c.table + "." + c.col + return fmt.Sprintf("%s.%s", c.table, c.col) } } diff --git a/sql/planbuilder/select.go b/sql/planbuilder/select.go index d3c3cec402..511bde12a2 100644 --- a/sql/planbuilder/select.go +++ b/sql/planbuilder/select.go @@ -211,11 +211,12 @@ func (b *Builder) currentDb() sql.Database { if err != nil { b.handleErr(err) } + + if privilegedDatabase, ok := database.(mysql_db.PrivilegedDatabase); ok { + database = privilegedDatabase.Unwrap() + } b.currentDatabase = database } - if privilegedDatabase, ok := b.currentDatabase.(mysql_db.PrivilegedDatabase); ok { - b.currentDatabase = privilegedDatabase.Unwrap() - } return b.currentDatabase } diff --git a/sql/range_test.go b/sql/range_test.go index b1c642f997..f336919dc7 100644 --- a/sql/range_test.go +++ b/sql/range_test.go @@ -185,7 +185,7 @@ func TestRangeOverlapTwoColumns(t *testing.T) { verificationRanges, err := removeOverlappingRangesVerification(test.ranges...) require.NoError(t, err) for _, row := range values2 { - referenceBool, err := test.reference.Eval(ctx, row) + referenceBool, err := test.reference.Eval(ctx, sql.UntypedSqlRow(row)) require.NoError(t, err) rangeBool := evalRanges(t, discreteRanges, row) assert.Equal(t, referenceBool, rangeBool, fmt.Sprintf("%v: DiscreteRanges: %s", row, discreteRanges.DebugString())) @@ -300,7 +300,7 @@ func TestRangeOverlapThreeColumns(t *testing.T) { verificationRanges, err := removeOverlappingRangesVerification(test.ranges...) require.NoError(t, err) for _, row := range values3 { - referenceBool, err := test.reference.Eval(ctx, row) + referenceBool, err := test.reference.Eval(ctx, sql.UntypedSqlRow(row)) require.NoError(t, err) rangeBool := evalRanges(t, discreteRanges, row) assert.Equal(t, referenceBool, rangeBool, fmt.Sprintf("%v: DiscreteRanges: %s", row, discreteRanges.DebugString())) @@ -389,7 +389,7 @@ func TestRangeOverlapNulls(t *testing.T) { verificationRanges, err := removeOverlappingRangesVerification(test.ranges...) require.NoError(t, err) for _, row := range valuesNull { - referenceBool, err := test.reference.Eval(ctx, row) + referenceBool, err := test.reference.Eval(ctx, sql.UntypedSqlRow(row)) require.NoError(t, err) rangeBool := evalRanges(t, discreteRanges, row) assert.Equal(t, referenceBool, rangeBool, fmt.Sprintf("%v: DiscreteRanges: %s", row, discreteRanges.DebugString())) diff --git a/sql/row_frame.go b/sql/row_frame.go index 5fd4aafbfe..0360a13989 100644 --- a/sql/row_frame.go +++ b/sql/row_frame.go @@ -35,7 +35,7 @@ func (r Row2) GetField(i int) Value { // Len returns the number of fields of this row func (r Row2) Len() int { - return len(r) + return r.Len() } // Value is a logical index into a Row2. For efficiency reasons, use sparingly. diff --git a/sql/rowexec/agg.go b/sql/rowexec/agg.go index 8d470de283..399b36f53d 100644 --- a/sql/rowexec/agg.go +++ b/sql/rowexec/agg.go @@ -303,11 +303,13 @@ func evalBuffers( ctx *sql.Context, buffers []sql.AggregationBuffer, ) (sql.Row, error) { - var row = make(sql.Row, len(buffers)) + row := sql.NewSqlRowWithLen(len(buffers)) var err error for i, b := range buffers { - row[i], err = b.Eval(ctx) + var v interface{} + v, err = b.Eval(ctx) + row.SetValue(i, v) if err != nil { return nil, err } diff --git a/sql/rowexec/cross_join_test.go b/sql/rowexec/cross_join_test.go index ec03367af4..b2774624ac 100644 --- a/sql/rowexec/cross_join_test.go +++ b/sql/rowexec/cross_join_test.go @@ -78,29 +78,29 @@ func TestCrossJoin(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal(8, len(row)) + require.Equal(8, row.Len()) - require.Equal("col1_1", row[0]) - require.Equal("col2_1", row[1]) - require.Equal(int32(1), row[2]) - require.Equal(int64(2), row[3]) - require.Equal("col1_1", row[4]) - require.Equal("col2_1", row[5]) - require.Equal(int32(1), row[6]) - require.Equal(int64(2), row[7]) + require.Equal("col1_1", row.GetValue(0)) + require.Equal("col2_1", row.GetValue(1)) + require.Equal(int32(1), row.GetValue(2)) + require.Equal(int64(2), row.GetValue(3)) + require.Equal("col1_1", row.GetValue(4)) + require.Equal("col2_1", row.GetValue(5)) + require.Equal(int32(1), row.GetValue(6)) + require.Equal(int64(2), row.GetValue(7)) row, err = iter.Next(ctx) require.NoError(err) require.NotNil(row) - require.Equal("col1_1", row[0]) - require.Equal("col2_1", row[1]) - require.Equal(int32(1), row[2]) - require.Equal(int64(2), row[3]) - require.Equal("col1_2", row[4]) - require.Equal("col2_2", row[5]) - require.Equal(int32(3), row[6]) - require.Equal(int64(4), row[7]) + require.Equal("col1_1", row.GetValue(0)) + require.Equal("col2_1", row.GetValue(1)) + require.Equal(int32(1), row.GetValue(2)) + require.Equal(int64(2), row.GetValue(3)) + require.Equal("col1_2", row.GetValue(4)) + require.Equal("col2_2", row.GetValue(5)) + require.Equal(int32(3), row.GetValue(6)) + require.Equal(int64(4), row.GetValue(7)) for i := 0; i < 2; i++ { row, err = iter.Next(ctx) @@ -161,9 +161,9 @@ func insertData(t *testing.T, ctx *sql.Context, table *memory.Table) { t.Helper() require := require.New(t) - rows := []sql.Row{ - sql.NewRow("col1_1", "col2_1", int32(1), int64(2)), - sql.NewRow("col1_2", "col2_2", int32(3), int64(4)), + rows := []sql.UntypedSqlRow{ + {"col1_1", "col2_1", int32(1), int64(2)}, + {"col1_2", "col2_2", int32(3), int64(4)}, } for _, r := range rows { diff --git a/sql/rowexec/ddl.go b/sql/rowexec/ddl.go index 9a0b591dd2..6db7d5e19c 100644 --- a/sql/rowexec/ddl.go +++ b/sql/rowexec/ddl.go @@ -362,7 +362,7 @@ func (b *BaseBuilder) buildDeclareCondition(ctx *sql.Context, n *plan.DeclareCon func (b *BaseBuilder) buildCreateDB(ctx *sql.Context, n *plan.CreateDB, row sql.Row) (sql.RowIter, error) { exists := n.Catalog.HasDatabase(ctx, n.DbName) - rows := []sql.Row{{types.OkResult{RowsAffected: 1}}} + rows := []sql.Row{sql.UntypedSqlRow{types.OkResult{RowsAffected: 1}}} if exists { if n.IfNotExists && ctx != nil && ctx.Session != nil { @@ -417,7 +417,7 @@ func (b *BaseBuilder) buildCreateSchema(ctx *sql.Context, n *plan.CreateSchema, return nil, err } - rows := []sql.Row{{types.OkResult{RowsAffected: 1}}} + rows := []sql.Row{sql.UntypedSqlRow{types.OkResult{RowsAffected: 1}}} if exists { if n.IfNotExists && ctx != nil && ctx.Session != nil { @@ -517,7 +517,7 @@ func (b *BaseBuilder) buildAlterUser(ctx *sql.Context, a *plan.AlterUser, _ sql. previousUserEntry, ok := editor.GetUser(userPk) if !ok { if a.IfExists { - return sql.RowsToRowIter(sql.Row{types.NewOkResult(0)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{types.NewOkResult(0)}), nil } return nil, sql.ErrUserAlterFailure.New(user.UserName.String("'")) } @@ -543,7 +543,7 @@ func (b *BaseBuilder) buildAlterUser(ctx *sql.Context, a *plan.AlterUser, _ sql. return nil, err } - return sql.RowsToRowIter(sql.Row{types.NewOkResult(0)}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{types.NewOkResult(0)}), nil } func (b *BaseBuilder) buildCreateUser(ctx *sql.Context, n *plan.CreateUser, _ sql.Row) (sql.RowIter, error) { @@ -750,7 +750,7 @@ func (b *BaseBuilder) buildDropDB(ctx *sql.Context, n *plan.DropDB, row sql.Row) Message: fmt.Sprintf("Can't drop database %s; database doesn't exist ", n.DbName), }) - rows := []sql.Row{{types.OkResult{RowsAffected: 0}}} + rows := []sql.Row{sql.UntypedSqlRow{types.OkResult{RowsAffected: 0}}} return sql.RowsToRowIter(rows...), nil } else { @@ -773,7 +773,7 @@ func (b *BaseBuilder) buildDropDB(ctx *sql.Context, n *plan.DropDB, row sql.Row) ctx.SetCurrentDatabase("") } - rows := []sql.Row{{types.OkResult{RowsAffected: 1}}} + rows := []sql.Row{sql.UntypedSqlRow{types.OkResult{RowsAffected: 1}}} return sql.RowsToRowIter(rows...), nil } @@ -895,8 +895,8 @@ func (b *BaseBuilder) buildAlterDB(ctx *sql.Context, n *plan.AlterDB, row sql.Ro return nil, err } - rows := []sql.Row{{types.OkResult{RowsAffected: 1}}} - return sql.RowsToRowIter(rows...), nil + rows := sql.NewSqlRow(types.OkResult{RowsAffected: 1}) + return sql.RowsToRowIter(rows), nil } func (b *BaseBuilder) buildCreateTable(ctx *sql.Context, n *plan.CreateTable, row sql.Row) (sql.RowIter, error) { diff --git a/sql/rowexec/ddl_iters.go b/sql/rowexec/ddl_iters.go index 4498650958..0098db5f9e 100644 --- a/sql/rowexec/ddl_iters.go +++ b/sql/rowexec/ddl_iters.go @@ -87,7 +87,7 @@ func (l *loadDataIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr erro } } - row := make(sql.Row, len(exprs)) + row := sql.NewSqlRowWithLen(len(exprs)) var secondPass []int for i, expr := range exprs { if expr != nil { @@ -96,20 +96,24 @@ func (l *loadDataIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr erro secondPass = append(secondPass, i) continue } - row[i], err = expr.Eval(ctx, row) + var v interface{} + v, err = expr.Eval(ctx, row) + row.SetValue(i, v) if err != nil { return nil, err } } } for _, idx := range secondPass { - row[idx], err = exprs[idx].Eval(ctx, row) + var v interface{} + v, err = exprs[idx].Eval(ctx, row) + row.SetValue(idx, v) if err != nil { return nil, err } } - return sql.NewRow(row...), nil + return row, nil } func (l *loadDataIter) Close(ctx *sql.Context) error { @@ -169,9 +173,9 @@ func (l *loadDataIter) parseFields(ctx *sql.Context, line string) ([]sql.Express } } - fieldRow := make(sql.Row, len(fields)) + fieldRow := sql.NewSqlRowWithLen(len(fields)) for i, field := range fields { - fieldRow[i] = field + fieldRow.SetValue(i, field) } exprs := make([]sql.Expression, len(l.destSch)) @@ -565,14 +569,14 @@ func (i *modifyColumnIter) rewriteTable(ctx *sql.Context, rwt sql.RewritableTabl } // remap old enum values to new enum values - if isOldEnum && isNewEnum && newRow[newColIdx] != nil { - oldIdx := int(newRow[newColIdx].(uint16)) + if isOldEnum && isNewEnum && newRow.GetValue(newColIdx) != nil { + oldIdx := int(newRow.GetValue(newColIdx).(uint16)) oldStr, _ := oldEnum.At(oldIdx) newIdx := newEnum.IndexOf(oldStr) if newIdx == -1 { return false, fmt.Errorf("data truncated for column %s", newCol.Name) } - newRow[newColIdx] = uint16(newIdx) + newRow.SetValue(newColIdx, uint16(newIdx)) } err = i.validateNullability(ctx, newSch, newRow) @@ -704,7 +708,7 @@ func modifyColumnInSchema(schema sql.Schema, name string, column *sql.Column, or // TODO: this shares logic with insert func (i *modifyColumnIter) validateNullability(ctx *sql.Context, dstSchema sql.Schema, row sql.Row) error { for count, col := range dstSchema { - if !col.Nullable && row[count] == nil { + if !col.Nullable && row.GetValue(count) == nil { return sql.ErrInsertIntoNonNullableProvidedNull.New(col.Name) } } @@ -909,17 +913,17 @@ func projectRowWithTypes(ctx *sql.Context, sch sql.Schema, projections []sql.Exp return nil, err } - for i := range newRow { - converted, inRange, err := sch[i].Type.Convert(newRow[i]) + for i := 0; i < newRow.Len(); i++ { + converted, inRange, err := sch[i].Type.Convert(newRow.GetValue(i)) if err != nil { if sql.ErrNotMatchingSRID.Is(err) { err = sql.ErrNotMatchingSRIDWithColName.New(sch[i].Name, err) } return nil, err } else if !inRange { - return nil, sql.ErrValueOutOfRange.New(newRow[i], sch[i].Type) + return nil, sql.ErrValueOutOfRange.New(newRow.GetValue(i), sch[i].Type) } - newRow[i] = converted + newRow.SetValue(i, converted) } return newRow, nil @@ -1101,7 +1105,7 @@ func (c *createPkIter) rewriteTable(ctx *sql.Context, rwt sql.RewritableTable) e // check for null values in the primary key insert for _, i := range newSchema.PkOrdinals { - if r[i] == nil { + if r.GetValue(i) == nil { return sql.ErrInsertIntoNonNullableProvidedNull.New(newSchema.Schema[i].Name) } } @@ -1338,7 +1342,7 @@ func (i *addColumnIter) UpdateRowsWithDefaults(ctx *sql.Context, table sql.Table // present and in the order as represented by the schema. func applyDefaults(ctx *sql.Context, tblSch sql.Schema, col int, row sql.Row, cd *sql.ColumnDefaultValue) (sql.Row, error) { newRow := row.Copy() - if len(tblSch) != len(row) { + if len(tblSch) != row.Len() { return nil, fmt.Errorf("any row given to ApplyDefaults must be of the same length as the table it represents") } @@ -1347,23 +1351,21 @@ func applyDefaults(ctx *sql.Context, tblSch sql.Schema, col int, row sql.Row, cd } columnDefaultExpr := cd + var val interface{} + var err error if columnDefaultExpr == nil && !tblSch[col].Nullable { - val := tblSch[col].Type.Zero() - var err error - newRow[col], _, err = tblSch[col].Type.Convert(val) - if err != nil { - return nil, err - } + val = tblSch[col].Type.Zero() } else { - val, err := columnDefaultExpr.Eval(ctx, newRow) - if err != nil { - return nil, err - } - newRow[col], _, err = tblSch[col].Type.Convert(val) + val, err = columnDefaultExpr.Eval(ctx, newRow) if err != nil { return nil, err } } + v, _, err := tblSch[col].Type.Convert(val) + if err != nil { + return nil, err + } + newRow.SetValue(col, v) return newRow, nil } @@ -1438,7 +1440,7 @@ func (i *addColumnIter) rewriteTable(ctx *sql.Context, rwt sql.RewritableTable) if err != nil { return false, err } - newRow[autoIncColIdx] = v + newRow.SetValue(autoIncColIdx, v) val, err = autoTbl.GetNextAutoIncrementValue(ctx, val) if err != nil { return false, err @@ -1589,7 +1591,7 @@ func (c *createProcedureIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - return sql.Row{types.NewOkResult(0)}, nil + return sql.NewSqlRow(types.NewOkResult(0)), nil } // Close implements the sql.RowIter interface. @@ -1624,7 +1626,7 @@ func (c *createTriggerIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - return sql.Row{types.NewOkResult(0)}, nil + return sql.NewSqlRow(types.NewOkResult(0)), nil } func (c *createTriggerIter) Close(*sql.Context) error { diff --git a/sql/rowexec/delete.go b/sql/rowexec/delete.go index 03bc341d3d..25a9c2b603 100644 --- a/sql/rowexec/delete.go +++ b/sql/rowexec/delete.go @@ -85,12 +85,12 @@ func (d *deleteIter) Next(ctx *sql.Context) (sql.Row, error) { // the columns that are part of that target table. This means looking at the position in the schema for // the target table and also removing any prepended columns contributed by outer scopes. fullSchemaLength := len(d.schema) - rowLength := len(row) + rowLength := row.Len() for _, deleter := range d.deleters { schemaLength := deleter.schemaEnd - deleter.schemaStart subSlice := row if schemaLength < rowLength { - subSlice = row[(rowLength - fullSchemaLength + deleter.schemaStart):(rowLength - fullSchemaLength + deleter.schemaEnd)] + subSlice = row.Subslice((rowLength - fullSchemaLength + deleter.schemaStart), (rowLength - fullSchemaLength + deleter.schemaEnd)) } err = deleter.deleter.Delete(ctx, subSlice) if err != nil { diff --git a/sql/rowexec/describe_test.go b/sql/rowexec/describe_test.go index e20c1cfc85..8d083b731a 100644 --- a/sql/rowexec/describe_test.go +++ b/sql/rowexec/describe_test.go @@ -105,7 +105,7 @@ func TestDescribeQuery(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {"Project"}, {" ├─ columns: [foo.a, foo.b]"}, {" └─ Filter"}, @@ -114,5 +114,5 @@ func TestDescribeQuery(t *testing.T) { {" └─ name: foo"}, } - require.Equal(expected, rows) + require.Equal(expected, sql.RowsToUntyped(rows)) } diff --git a/sql/rowexec/distinct_test.go b/sql/rowexec/distinct_test.go index 5fc3d7f376..54f630c0da 100644 --- a/sql/rowexec/distinct_test.go +++ b/sql/rowexec/distinct_test.go @@ -40,12 +40,12 @@ func TestDistinct(t *testing.T) { }) child := memory.NewTable(db.BaseDatabase, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("john", "john@doe.com"), - sql.NewRow("jane", "jane@doe.com"), - sql.NewRow("john", "johnx@doe.com"), - sql.NewRow("martha", "marthax@doe.com"), - sql.NewRow("martha", "martha@doe.com"), + rows := []sql.UntypedSqlRow{ + {"john", "john@doe.com"}, + {"jane", "jane@doe.com"}, + {"john", "johnx@doe.com"}, + {"martha", "marthax@doe.com"}, + {"martha", "martha@doe.com"}, } for _, r := range rows { @@ -69,8 +69,8 @@ func TestDistinct(t *testing.T) { } require.NoError(err) - result, ok := row[0].(string) - require.True(ok, "first row column should be string, but is %T", row[0]) + result, ok := row.GetValue(0).(string) + require.True(ok, "first row column should be string, but is %T", row.GetValue(0)) results = append(results, result) } @@ -90,12 +90,12 @@ func TestOrderedDistinct(t *testing.T) { }) child := memory.NewTable(db.BaseDatabase, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("jane", "jane@doe.com"), - sql.NewRow("john", "john@doe.com"), - sql.NewRow("john", "johnx@doe.com"), - sql.NewRow("martha", "martha@doe.com"), - sql.NewRow("martha", "marthax@doe.com"), + rows := []sql.UntypedSqlRow{ + {"jane", "jane@doe.com"}, + {"john", "john@doe.com"}, + {"john", "johnx@doe.com"}, + {"martha", "martha@doe.com"}, + {"martha", "marthax@doe.com"}, } for _, r := range rows { @@ -119,8 +119,8 @@ func TestOrderedDistinct(t *testing.T) { } require.NoError(err) - result, ok := row[0].(string) - require.True(ok, "first row column should be string, but is %T", row[0]) + result, ok := row.GetValue(0).(string) + require.True(ok, "first row column should be string, but is %T", row.GetValue(0)) results = append(results, result) } diff --git a/sql/rowexec/dml_iters.go b/sql/rowexec/dml_iters.go index e9366649bf..078a1352b2 100644 --- a/sql/rowexec/dml_iters.go +++ b/sql/rowexec/dml_iters.go @@ -139,7 +139,7 @@ func (i *triggerBlockIter) Next(ctx *sql.Context) (sql.Row, error) { // value of new.field, so that the wrapping iterator can use it for the insert / update. Otherwise, this iterator // always returns its input row. if shouldUseTriggerStatementForReturnRow(s) { - row = newRow[len(newRow)/2:] + row = newRow.Subslice(newRow.Len()/2, newRow.Len()) } } } @@ -245,7 +245,7 @@ func (t *triggerIter) Next(ctx *sql.Context) (row sql.Row, returnErr error) { } }() - var logicRow sql.Row + var logicRow sql.Row = sql.UntypedSqlRow{} for { row, err := logicIter.Next(ctx) if err == io.EOF { @@ -280,7 +280,7 @@ func shouldUseLogicResult(logic sql.Node, row sql.Row) (bool, sql.Row) { return true }) } - return hasSetField, row[len(row)/2:] + return hasSetField, row.Subslice(row.Len()/2, row.Len()) case *plan.TriggerBeginEndBlock: hasSetField := false transform.Inspect(logic, func(n sql.Node) bool { @@ -347,8 +347,8 @@ func (r *replaceRowHandler) handleRowUpdate(row sql.Row) error { // If a row was deleted as well as inserted, increment the counter again. A row was deleted if at least one column in // the first half of the row is non-null. - for i := 0; i < len(row)/2; i++ { - if row[i] != nil { + for i := 0; i < row.Len()/2; i++ { + if row.GetValue(i) != nil { r.rowsAffected++ break } @@ -370,14 +370,14 @@ type onDuplicateUpdateHandler struct { func (o *onDuplicateUpdateHandler) handleRowUpdate(row sql.Row) error { // See https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html for row count semantics // If a row was inserted, increment by 1 - if len(row) == len(o.schema) { + if row.Len() == len(o.schema) { o.rowsAffected++ return nil } // Otherwise (a row was updated), increment by 2 if the row changed, 0 if not - oldRow := row[:len(row)/2] - newRow := row[len(row)/2:] + oldRow := row.Subslice(0, row.Len()/2) + newRow := row.Subslice(row.Len()/2, row.Len()) if equals, err := oldRow.Equals(newRow, o.schema); err == nil { if equals { // Ig the CLIENT_FOUND_ROWS capabilities flag is set, increment by 1 if a row stays the same. @@ -407,8 +407,8 @@ type updateRowHandler struct { func (u *updateRowHandler) handleRowUpdate(row sql.Row) error { u.rowsMatched++ - oldRow := row[:len(row)/2] - newRow := row[len(row)/2:] + oldRow := row.Subslice(0, row.Len()/2) + newRow := row.Subslice(row.Len()/2, row.Len()) if equals, err := oldRow.Equals(newRow, u.schema); err == nil { if !equals { u.rowsAffected++ @@ -462,8 +462,8 @@ func (u *updateJoinRowHandler) handleRowMatched() { } func (u *updateJoinRowHandler) handleRowUpdate(row sql.Row) error { - oldJoinRow := row[:len(row)/2] - newJoinRow := row[len(row)/2:] + oldJoinRow := row.Subslice(0, row.Len()/2) + newJoinRow := row.Subslice(row.Len()/2, row.Len()) tableToOldRow := plan.SplitRowIntoTableRowMap(oldJoinRow, u.joinSchema) tableToNewRow := plan.SplitRowIntoTableRowMap(newJoinRow, u.joinSchema) @@ -685,9 +685,9 @@ func (u *updateSourceIter) Next(ctx *sql.Context) (sql.Row, error) { // scope, which will be the first N values in the row. // TODO: handle this in the analyzer instead? expectedSchemaLen := len(u.tableSchema) - if expectedSchemaLen < len(oldRow) { - oldRow = oldRow[len(oldRow)-expectedSchemaLen:] - newRow = newRow[len(newRow)-expectedSchemaLen:] + if expectedSchemaLen < oldRow.Len() { + oldRow = oldRow.Subslice(oldRow.Len()-expectedSchemaLen, oldRow.Len()) + newRow = newRow.Subslice(newRow.Len()-expectedSchemaLen, newRow.Len()) } return oldRow.Append(newRow), nil diff --git a/sql/rowexec/existssubquery_test.go b/sql/rowexec/existssubquery_test.go index 2a126fa7eb..e1f74d5a99 100644 --- a/sql/rowexec/existssubquery_test.go +++ b/sql/rowexec/existssubquery_test.go @@ -35,9 +35,9 @@ func TestExistsSubquery(t *testing.T) { {Name: "t", Source: "foo", Type: types.Text}, }), nil) - require.NoError(t, table.Insert(ctx, sql.Row{"one"})) - require.NoError(t, table.Insert(ctx, sql.Row{"two"})) - require.NoError(t, table.Insert(ctx, sql.Row{"three"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"one"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"two"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"three"})) emptyTable := memory.NewTable(db.BaseDatabase, "empty", sql.NewPrimaryKeySchema(sql.Schema{ {Name: "t", Source: "empty", Type: types.Int64}, diff --git a/sql/rowexec/filter_test.go b/sql/rowexec/filter_test.go index 1e2dd5d183..293f2e8430 100644 --- a/sql/rowexec/filter_test.go +++ b/sql/rowexec/filter_test.go @@ -41,10 +41,10 @@ func TestFilter(t *testing.T) { }) child := memory.NewTable(db.BaseDatabase, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("col1_1", "col2_1", int32(1111), int64(2222)), - sql.NewRow("col1_2", "col2_2", int32(3333), int64(4444)), - sql.NewRow("col1_3", "col2_3", nil, int64(4444)), + rows := []sql.UntypedSqlRow{ + {"col1_1", "col2_1", int32(1111), int64(2222)}, + {"col1_2", "col2_2", int32(3333), int64(4444)}, + {"col1_3", "col2_3", nil, int64(4444)}, } for _, r := range rows { @@ -67,8 +67,8 @@ func TestFilter(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal("col1_1", row[0]) - require.Equal("col2_1", row[1]) + require.Equal("col1_1", row.GetValue(0)) + require.Equal("col2_1", row.GetValue(1)) row, err = iter.Next(ctx) require.NotNil(err) @@ -87,8 +87,8 @@ func TestFilter(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal(int32(1111), row[2]) - require.Equal(int64(2222), row[3]) + require.Equal(int32(1111), row.GetValue(2)) + require.Equal(int64(2222), row.GetValue(3)) f = plan.NewFilter(expression.NewEquals( expression.NewGetField(3, types.Int64, "col4", true), @@ -103,6 +103,6 @@ func TestFilter(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal(int32(3333), row[2]) - require.Equal(int64(4444), row[3]) + require.Equal(int32(3333), row.GetValue(2)) + require.Equal(int64(4444), row.GetValue(3)) } diff --git a/sql/rowexec/fulltext_filter.go b/sql/rowexec/fulltext_filter.go index 91c323d085..2d90d825c8 100644 --- a/sql/rowexec/fulltext_filter.go +++ b/sql/rowexec/fulltext_filter.go @@ -233,8 +233,8 @@ func (f *fulltextFilterTableRowIter) Next(ctx *sql.Context) (sql.Row, error) { } // Get the key so that we may get rows from the parent table - ranges := make(sql.MySQLRange, len(docRow)-2) - for i, val := range docRow[1 : len(docRow)-1] { + ranges := make(sql.MySQLRange, docRow.Len()-2) + for i, val := range docRow.Subslice(1, docRow.Len()-1).Values() { ranges[i] = sql.ClosedRangeColumnExpr(val, val, f.matchAgainst.DocCountTable.Schema()[i+1].Type) } lookup := sql.IndexLookup{Ranges: sql.MySQLRangeCollection{ranges}, Index: f.parentIndex} diff --git a/sql/rowexec/group_by_test.go b/sql/rowexec/group_by_test.go index ed65f45f2e..f7e31e0ce7 100644 --- a/sql/rowexec/group_by_test.go +++ b/sql/rowexec/group_by_test.go @@ -75,12 +75,12 @@ func TestGroupByRowIter(t *testing.T) { } child := memory.NewTable(db.BaseDatabase, "test", sql.NewPrimaryKeySchema(childSchema), nil) - rows := []sql.Row{ - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_2", int64(4444)), - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_2", int64(4444)), + rows := []sql.UntypedSqlRow{ + {"col1_1", int64(1111)}, + {"col1_1", int64(1111)}, + {"col1_2", int64(4444)}, + {"col1_1", int64(1111)}, + {"col1_2", int64(4444)}, } for _, r := range rows { @@ -111,12 +111,13 @@ func TestGroupByRowIter(t *testing.T) { require.Equal(1, len(p.Children())) - rows, err := NodeToRows(ctx, p) + sqlRows, err := NodeToRows(ctx, p) require.NoError(err) - require.Len(rows, 2) + require.Len(sqlRows, 2) + rows = sql.RowsToUntyped(sqlRows) - require.Equal(sql.NewRow("col1_1", int64(1111)), rows[0]) - require.Equal(sql.NewRow("col1_2", int64(4444)), rows[1]) + require.Equal(sql.UntypedSqlRow{"col1_1", int64(1111)}, rows[0]) + require.Equal(sql.UntypedSqlRow{"col1_2", int64(4444)}, rows[1]) } func TestGroupByAggregationGrouping(t *testing.T) { @@ -133,12 +134,12 @@ func TestGroupByAggregationGrouping(t *testing.T) { child := memory.NewTable(db.BaseDatabase, "test", sql.NewPrimaryKeySchema(childSchema), nil) - rows := []sql.Row{ - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_2", int64(4444)), - sql.NewRow("col1_1", int64(1111)), - sql.NewRow("col1_2", int64(4444)), + rows := []sql.UntypedSqlRow{ + {"col1_1", int64(1111)}, + {"col1_1", int64(1111)}, + {"col1_2", int64(4444)}, + {"col1_1", int64(1111)}, + {"col1_2", int64(4444)}, } for _, r := range rows { @@ -157,10 +158,12 @@ func TestGroupByAggregationGrouping(t *testing.T) { plan.NewResolvedTable(child, nil, nil), ) - rows, err := NodeToRows(ctx, p) + sqlRows, err := NodeToRows(ctx, p) require.NoError(err) - expected := []sql.Row{ + rows = sql.RowsToUntyped(sqlRows) + + expected := []sql.UntypedSqlRow{ {int64(3), false}, {int64(2), false}, } @@ -214,12 +217,12 @@ func TestGroupByCollations(t *testing.T) { child := memory.NewTable(db.BaseDatabase, "test", sql.NewPrimaryKeySchema(childSchema), nil) - rows := []sql.Row{ - sql.NewRow(tc.Value(t, "col1_1"), int64(1111)), - sql.NewRow(tc.Value(t, "Col1_1"), int64(1111)), - sql.NewRow(tc.Value(t, "col1_2"), int64(4444)), - sql.NewRow(tc.Value(t, "col1_1"), int64(1111)), - sql.NewRow(tc.Value(t, "Col1_2"), int64(4444)), + rows := []sql.UntypedSqlRow{ + {tc.Value(t, "col1_1"), int64(1111)}, + {tc.Value(t, "Col1_1"), int64(1111)}, + {tc.Value(t, "col1_2"), int64(4444)}, + {tc.Value(t, "col1_1"), int64(1111)}, + {tc.Value(t, "Col1_2"), int64(4444)}, } for _, r := range rows { @@ -238,15 +241,15 @@ func TestGroupByCollations(t *testing.T) { plan.NewResolvedTable(child, nil, nil), ) - rows, err := NodeToRows(ctx, p) + sqlRows, err := NodeToRows(ctx, p) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {float64(3333)}, {float64(8888)}, } - require.Equal(expected, rows) + require.Equal(expected, sql.RowsToUntyped(sqlRows)) }) } } @@ -264,9 +267,9 @@ func BenchmarkGroupBy(b *testing.B) { plan.NewResolvedTable(table, nil, nil), ) - expected := []sql.Row{{int64(200)}} + expected := []sql.UntypedSqlRow{{int64(200)}} - bench := func(node sql.Node, expected []sql.Row) func(*testing.B) { + bench := func(node sql.Node, expected []sql.UntypedSqlRow) func(*testing.B) { return func(b *testing.B) { require := require.New(b) @@ -297,9 +300,9 @@ func BenchmarkGroupBy(b *testing.B) { plan.NewResolvedTable(table, nil, nil), ) - expected = []sql.Row{} + expected = []sql.UntypedSqlRow{} for i := int64(0); i < 50; i++ { - expected = append(expected, sql.NewRow(i, int64(200))) + expected = append(expected, sql.UntypedSqlRow{i, int64(200)}) } b.Run("grouping", bench(node, expected)) @@ -317,7 +320,7 @@ func benchmarkTable(t testing.TB) sql.Table { for i := int64(0); i < 50; i++ { for j := int64(200); j > 0; j-- { - row := sql.NewRow(i, j) + row := sql.UntypedSqlRow{i, j} require.NoError(table.Insert(sql.NewEmptyContext(), row)) } } diff --git a/sql/rowexec/having_test.go b/sql/rowexec/having_test.go index 855761bf52..5c0ed3cb3f 100644 --- a/sql/rowexec/having_test.go +++ b/sql/rowexec/having_test.go @@ -41,10 +41,10 @@ func TestHaving(t *testing.T) { }) child := memory.NewTable(db.BaseDatabase, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("col1_1", "col2_1", int32(1111), int64(2222)), - sql.NewRow("col1_2", "col2_2", int32(3333), int64(4444)), - sql.NewRow("col1_3", "col2_3", nil, int64(4444)), + rows := []sql.UntypedSqlRow{ + {"col1_1", "col2_1", int32(1111), int64(2222)}, + {"col1_2", "col2_2", int32(3333), int64(4444)}, + {"col1_3", "col2_3", nil, int64(4444)}, } for _, r := range rows { @@ -68,8 +68,8 @@ func TestHaving(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal("col1_1", row[0]) - require.Equal("col2_1", row[1]) + require.Equal("col1_1", row.GetValue(0)) + require.Equal("col2_1", row.GetValue(1)) row, err = iter.Next(ctx) require.NotNil(err) @@ -91,8 +91,8 @@ func TestHaving(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal(int32(1111), row[2]) - require.Equal(int64(2222), row[3]) + require.Equal(int32(1111), row.GetValue(2)) + require.Equal(int64(2222), row.GetValue(3)) f = plan.NewHaving( expression.NewEquals( @@ -110,6 +110,6 @@ func TestHaving(t *testing.T) { require.NoError(err) require.NotNil(row) - require.Equal(int32(3333), row[2]) - require.Equal(int64(4444), row[3]) + require.Equal(int32(3333), row.GetValue(2)) + require.Equal(int64(4444), row.GetValue(3)) } diff --git a/sql/rowexec/insert.go b/sql/rowexec/insert.go index 573c5fc7f7..4237be60fd 100644 --- a/sql/rowexec/insert.go +++ b/sql/rowexec/insert.go @@ -72,8 +72,8 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) // Prune the row down to the size of the schema. It can be larger in the case of running with an outer scope, in which // case the additional scope variables are prepended to the row. - if len(row) > len(i.schema) { - row = row[len(row)-len(i.schema):] + if row.Len() > len(i.schema) { + row = row.Subslice(row.Len()-len(i.schema), row.Len()) } err = i.validateNullability(ctx, i.schema, row) @@ -86,15 +86,14 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) return nil, i.ignoreOrClose(ctx, row, err) } - origRow := make(sql.Row, len(row)) - copy(origRow, row) + origRow := row.Copy() // Do any necessary type conversions to the target schema for idx, col := range i.schema { - if row[idx] != nil { - converted, inRange, cErr := col.Type.Convert(row[idx]) + if row.GetValue(idx) != nil { + converted, inRange, cErr := col.Type.Convert(row.GetValue(idx)) if cErr == nil && !inRange { - cErr = sql.ErrValueOutOfRange.New(row[idx], col.Type) + cErr = sql.ErrValueOutOfRange.New(row.GetValue(idx), col.Type) } if cErr != nil { // Ignore individual column errors when INSERT IGNORE, UPDATE IGNORE, etc. is specified. @@ -107,7 +106,7 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) if converted == nil { converted = i.schema[idx].Type.Zero() } - row[idx] = converted + row.SetValue(idx, converted) // Add a warning instead ctx.Session.Warn(&sql.Warning{ Level: "Note", @@ -121,21 +120,21 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) } else { // Fill in error with information if types.ErrLengthBeyondLimit.Is(cErr) { - cErr = types.ErrLengthBeyondLimit.New(row[idx], col.Name) + cErr = types.ErrLengthBeyondLimit.New(row.GetValue(idx), col.Name) } else if sql.ErrNotMatchingSRID.Is(cErr) { cErr = sql.ErrNotMatchingSRIDWithColName.New(col.Name, cErr) } return nil, sql.NewWrappedInsertError(origRow, cErr) } } - row[idx] = converted + row.SetValue(idx, converted) } } if i.replacer != nil { - toReturn := make(sql.Row, len(row)*2) - for i := 0; i < len(row); i++ { - toReturn[i+len(row)] = row[i] + toReturn := sql.NewSqlRowWithLen(row.Len() * 2) + for i := 0; i < row.Len(); i++ { + toReturn.SetValue(i+row.Len(), row.GetValue(i)) } // May have multiple duplicate pk & unique errors due to multiple indexes //TODO: how does this interact with triggers? @@ -154,7 +153,9 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) return nil, sql.NewWrappedInsertError(row, err) } // the row had to be deleted, write the values into the toReturn row - copy(toReturn, ue.Existing) + for i, v := range ue.Existing.Values() { + toReturn.SetValue(i, v) + } } else { break } @@ -178,8 +179,8 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) func (i *insertIter) handleOnDuplicateKeyUpdate(ctx *sql.Context, oldRow, newRow sql.Row) (returnRow sql.Row, returnErr error) { var err error - updateAcc := append(oldRow, newRow...) - var evalRow sql.Row + updateAcc := oldRow.Append(newRow) + var evalRow sql.Row = sql.UntypedSqlRow{} for _, updateExpr := range i.updateExprs { // this SET indexes into LHS, but the can // reference the new row on RHS @@ -200,7 +201,7 @@ func (i *insertIter) handleOnDuplicateKeyUpdate(ctx *sql.Context, oldRow, newRow updateAcc = val.(sql.Row) } // project LHS only - evalRow = updateAcc[:len(oldRow)] + evalRow = updateAcc.Subslice(0, oldRow.Len()) // Should revaluate the check conditions. err = i.evaluateChecks(ctx, evalRow) @@ -245,7 +246,7 @@ func (i *insertIter) resolveValues(ctx *sql.Context, insertRow sql.Row) error { err = fmt.Errorf("VALUES functions may only contain column names") return false } - valuesExpr.Value = insertRow[getField.Index()] + valuesExpr.Value = insertRow.GetValue(getField.Index()) return false }) if err != nil { @@ -304,7 +305,7 @@ func (i *insertIter) updateLastInsertId(ctx *sql.Context, row sql.Row) { func (i *insertIter) getAutoIncVal(row sql.Row) int64 { for i, expr := range i.insertExprs { if _, ok := expr.(*expression.AutoIncrement); ok { - return toInt64(row[i]) + return toInt64(row.GetValue(i)) } } return 0 @@ -324,9 +325,9 @@ func (i *insertIter) ignoreOrClose(ctx *sql.Context, row sql.Row, err error) err func convertDataAndWarn(ctx *sql.Context, tableSchema sql.Schema, row sql.Row, columnIdx int, err error) sql.Row { if types.ErrLengthBeyondLimit.Is(err) { maxLength := tableSchema[columnIdx].Type.(sql.StringType).MaxCharacterLength() - row[columnIdx] = row[columnIdx].(string)[:maxLength] // truncate string + row.SetValue(columnIdx, row.GetValue(columnIdx).(string)[:maxLength]) // truncate string } else { - row[columnIdx] = tableSchema[columnIdx].Type.Zero() + row.SetValue(columnIdx, tableSchema[columnIdx].Type.Zero()) } sqlerr := sql.CastSQLError(err) @@ -393,10 +394,10 @@ func (i *insertIter) evaluateChecks(ctx *sql.Context, row sql.Row) error { func (i *insertIter) validateNullability(ctx *sql.Context, dstSchema sql.Schema, row sql.Row) error { for count, col := range dstSchema { - if !col.Nullable && row[count] == nil { + if !col.Nullable && row.GetValue(count) == nil { // In the case of an IGNORE we set the nil value to a default and add a warning if i.ignore { - row[count] = col.Type.Zero() + row.SetValue(count, col.Type.Zero()) _ = warnOnIgnorableError(ctx, row, sql.ErrInsertIntoNonNullableProvidedNull.New(col.Name)) // will always return nil } else { return sql.ErrInsertIntoNonNullableProvidedNull.New(col.Name) diff --git a/sql/rowexec/insert_test.go b/sql/rowexec/insert_test.go index 6213f806c1..3aa84c5163 100644 --- a/sql/rowexec/insert_test.go +++ b/sql/rowexec/insert_test.go @@ -91,7 +91,7 @@ func TestInsertIgnoreConversions(t *testing.T) { row, err := ri.Next(ctx) require.NoError(t, err) - require.Equal(t, sql.Row{tc.expected}, row) + require.Equal(t, sql.UntypedSqlRow{tc.expected}, row) var warningCnt int if tc.err { diff --git a/sql/rowexec/insubquery_test.go b/sql/rowexec/insubquery_test.go index 45e26a350e..a8551311e5 100644 --- a/sql/rowexec/insubquery_test.go +++ b/sql/rowexec/insubquery_test.go @@ -40,8 +40,8 @@ func TestInSubquery(t *testing.T) { {Name: "t", Source: "foo", Type: varChar3}, }), nil) - require.NoError(t, table.Insert(ctx, sql.Row{"one"})) - require.NoError(t, table.Insert(ctx, sql.Row{"two"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"one"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"two"})) project := func(expr sql.Expression) sql.Node { return plan.NewProject([]sql.Expression{ @@ -150,9 +150,9 @@ func TestNotInSubquery(t *testing.T) { {Name: "t", Source: "foo", Type: types.Text}, }), nil) - require.NoError(t, table.Insert(ctx, sql.Row{"one"})) - require.NoError(t, table.Insert(ctx, sql.Row{"two"})) - require.NoError(t, table.Insert(ctx, sql.Row{"three"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"one"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"two"})) + require.NoError(t, table.Insert(ctx, sql.UntypedSqlRow{"three"})) project := func(expr sql.Expression) sql.Node { return plan.NewProject([]sql.Expression{ diff --git a/sql/rowexec/join_iters.go b/sql/rowexec/join_iters.go index 4cf50bfff3..edf0c6e639 100644 --- a/sql/rowexec/join_iters.go +++ b/sql/rowexec/join_iters.go @@ -59,7 +59,7 @@ func newJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, row secondaryProvider: j.Right(), cond: j.Filter, joinType: j.Op, - rowSize: len(row) + len(j.Left().Schema()) + len(j.Right().Schema()), + rowSize: row.Len() + len(j.Left().Schema()) + len(j.Right().Schema()), scopeLen: j.ScopeLen, b: b, }), nil @@ -138,14 +138,15 @@ func (i *joinIter) Next(ctx *sql.Context) (sql.Row, error) { if errors.Is(err, io.EOF) { if !i.foundMatch && i.joinType.IsLeftOuter() { i.primaryRow = nil - row := i.buildRow(primary, nil) + row := i.buildRow(primary, sql.NewSqlRowWithLen(len(i.secondaryProvider.Schema()))) return i.removeParentRow(row), nil } continue } else if errors.Is(err, plan.ErrEmptyCachedResult) { if !i.foundMatch && i.joinType.IsLeftOuter() { i.primaryRow = nil - row := i.buildRow(primary, nil) + rightNull := sql.NewSqlRowWithLen(len(i.secondaryProvider.Schema())) + row := i.buildRow(primary, rightNull) return i.removeParentRow(row), nil } @@ -180,18 +181,18 @@ func (i *joinIter) Next(ctx *sql.Context) (sql.Row, error) { } func (i *joinIter) removeParentRow(r sql.Row) sql.Row { - copy(r[i.scopeLen:], r[len(i.parentRow):]) - r = r[:len(r)-len(i.parentRow)+i.scopeLen] - return r + if i.parentRow.Len() == 0 { + return r + } + vals := r.Values() + copy(vals[i.scopeLen:], vals[i.parentRow.Len():]) + vals = vals[:r.Len()-i.parentRow.Len()+i.scopeLen] + return sql.NewUntypedRow(vals...) } // buildRow builds the result set row using the rows from the primary and secondary tables func (i *joinIter) buildRow(primary, secondary sql.Row) sql.Row { - row := make(sql.Row, i.rowSize) - - copy(row, primary) - copy(row[len(primary):], secondary) - + row := sql.NewUntypedRow().Append(primary).Append(secondary) return row } @@ -226,7 +227,7 @@ func newExistsIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, ro secondaryProvider: j.Right(), cond: j.Filter, scopeLen: j.ScopeLen, - rowSize: len(row) + len(j.Left().Schema()) + len(j.Right().Schema()), + rowSize: row.Len() + len(j.Left().Schema()) + len(j.Right().Schema()), nullRej: !(j.Filter != nil && plan.IsNullRejecting(j.Filter)), b: b, }, nil @@ -260,9 +261,9 @@ const ( ) func (i *existsIter) Next(ctx *sql.Context) (sql.Row, error) { - var row sql.Row - var right sql.Row - var left sql.Row + row := sql.NewUntypedRow() + var right sql.Row = sql.UntypedSqlRow{} + var left sql.Row = sql.UntypedSqlRow{} var rIter sql.RowIter var err error @@ -365,18 +366,18 @@ func isTrueLit(e sql.Expression) bool { } func (i *existsIter) removeParentRow(r sql.Row) sql.Row { - copy(r[i.scopeLen:], r[len(i.parentRow):]) - r = r[:len(r)-len(i.parentRow)+i.scopeLen] - return r + if i.parentRow.Len() == 0 { + return r + } + vals := r.Values() + copy(vals[i.scopeLen:], vals[i.parentRow.Len():]) + vals = vals[:r.Len()-i.parentRow.Len()+i.scopeLen] + return sql.NewUntypedRow(vals...) } // buildRow builds the result set row using the rows from the primary and secondary tables func (i *existsIter) buildRow(primary, secondary sql.Row) sql.Row { - row := make(sql.Row, i.rowSize) - - copy(row, primary) - copy(row[len(primary):], secondary) - + row := sql.NewUntypedRow().Append(primary).Append(secondary) return row } @@ -399,9 +400,10 @@ func newFullJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, parentRow: row, l: leftIter, rp: j.Right(), + lp: j.Left(), cond: j.Filter, scopeLen: j.ScopeLen, - rowSize: len(row) + len(j.Left().Schema()) + len(j.Right().Schema()), + rowSize: row.Len() + len(j.Left().Schema()) + len(j.Right().Schema()), seenLeft: make(map[uint64]struct{}), seenRight: make(map[uint64]struct{}), b: b, @@ -413,6 +415,7 @@ func newFullJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, // runtime and memory complexity O(m+n). type fullJoinIter struct { l sql.RowIter + lp sql.Node rp sql.Node b sql.NodeExecBuilder r sql.RowIter @@ -463,13 +466,15 @@ func (i *fullJoinIter) Next(ctx *sql.Context) (sql.Row, error) { } if _, ok := i.seenLeft[key]; !ok { // (left, null) only if we haven't matched left - ret := i.buildRow(i.leftRow, nil) + rightNull := sql.NewSqlRowWithLen(len(i.rp.Schema())) + ret := i.buildRow(i.leftRow, rightNull) i.r = nil i.leftRow = nil return i.removeParentRow(ret), nil } i.r = nil i.leftRow = nil + continue } row := i.buildRow(i.leftRow, rightRow) @@ -520,24 +525,24 @@ func (i *fullJoinIter) Next(ctx *sql.Context) (sql.Row, error) { continue } // (null, right) only if we haven't matched right - ret := i.buildRow(nil, rightRow) + ret := i.buildRow(sql.NewSqlRowWithLen(len(i.lp.Schema())), rightRow) return i.removeParentRow(ret), nil } } func (i *fullJoinIter) removeParentRow(r sql.Row) sql.Row { - copy(r[i.scopeLen:], r[len(i.parentRow):]) - r = r[:len(r)-len(i.parentRow)+i.scopeLen] - return r + if i.parentRow.Len() == 0 { + return r + } + vals := r.Values() + copy(vals[i.scopeLen:], vals[i.parentRow.Len():]) + vals = vals[:r.Len()-i.parentRow.Len()+i.scopeLen] + return sql.NewUntypedRow(vals...) } // buildRow builds the result set row using the rows from the primary and secondary tables func (i *fullJoinIter) buildRow(primary, secondary sql.Row) sql.Row { - row := make(sql.Row, i.rowSize) - - copy(row, primary) - copy(row[len(primary):], secondary) - + row := sql.NewUntypedRow().Append(primary).Append(secondary) return row } @@ -587,7 +592,7 @@ func newCrossJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, parentRow: row, l: l, rp: j.Right(), - rowSize: len(row) + len(j.Left().Schema()) + len(j.Right().Schema()), + rowSize: row.Len() + len(j.Left().Schema()) + len(j.Right().Schema()), scopeLen: j.ScopeLen, }), nil } @@ -637,18 +642,22 @@ func (i *crossJoinIterator) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - var row sql.Row - row = append(row, i.leftRow...) - row = append(row, rightRow...) + row := sql.NewUntypedRow() + row = row.Append(i.leftRow) + row = row.Append(rightRow) return i.removeParentRow(row), nil } } func (i *crossJoinIterator) removeParentRow(r sql.Row) sql.Row { - copy(r[i.scopeLen:], r[len(i.parentRow):]) - r = r[:len(r)-len(i.parentRow)+i.scopeLen] - return r + if i.parentRow.Len() == 0 { + return r + } + vals := r.Values() + copy(vals[i.scopeLen:], vals[i.parentRow.Len():]) + vals = vals[:r.Len()-i.parentRow.Len()+i.scopeLen] + return sql.NewUntypedRow(vals...) } func (i *crossJoinIterator) Close(ctx *sql.Context) (err error) { @@ -704,8 +713,9 @@ type lateralJoinIterator struct { cond sql.Expression jType plan.JoinType - rowSize int - scopeLen int + rowSize int + rightSize int + scopeLen int foundMatch bool @@ -737,14 +747,15 @@ func newLateralJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNod } return sql.NewSpanIter(span, &lateralJoinIterator{ - pRow: row, - lIter: l, - rNode: j.Right(), - cond: j.Filter, - jType: j.Op, - rowSize: len(row) + len(j.Left().Schema()) + len(j.Right().Schema()), - scopeLen: j.ScopeLen, - b: b, + pRow: row, + lIter: l, + rNode: j.Right(), + cond: j.Filter, + jType: j.Op, + rowSize: row.Len() + len(j.Left().Schema()) + len(j.Right().Schema()), + rightSize: len(j.Right().Schema()), + scopeLen: j.ScopeLen, + b: b, }), nil } @@ -781,22 +792,24 @@ func (i *lateralJoinIterator) loadRight(ctx *sql.Context) error { if err != nil { return err } - i.rRow = rRow[len(i.lRow):] + i.rRow = rRow.Subslice(i.lRow.Len(), rRow.Len()) } return nil } -func (i *lateralJoinIterator) buildRow(lRow, rRow sql.Row) sql.Row { - row := make(sql.Row, i.rowSize) - copy(row, lRow) - copy(row[len(lRow):], rRow) +func (i *lateralJoinIterator) buildRow(primary, secondary sql.Row) sql.Row { + row := sql.NewUntypedRow().Append(primary).Append(secondary) return row } func (i *lateralJoinIterator) removeParentRow(r sql.Row) sql.Row { - copy(r[i.scopeLen:], r[len(i.pRow):]) - r = r[:len(r)-len(i.pRow)+i.scopeLen] - return r + if i.pRow.Len() == 0 { + return r + } + vals := r.Values() + copy(vals[i.scopeLen:], vals[i.pRow.Len():]) + vals = vals[:r.Len()-i.pRow.Len()+i.scopeLen] + return sql.NewUntypedRow(vals...) } func (i *lateralJoinIterator) reset(ctx *sql.Context) (err error) { @@ -820,7 +833,7 @@ func (i *lateralJoinIterator) Next(ctx *sql.Context) (sql.Row, error) { if err := i.loadRight(ctx); err != nil { if errors.Is(err, io.EOF) { if !i.foundMatch && i.jType == plan.JoinTypeLateralLeft { - res := i.buildRow(i.lRow, nil) + res := i.buildRow(i.lRow, sql.NewSqlRowWithLen(i.rightSize)) if rerr := i.reset(ctx); rerr != nil { return nil, rerr } diff --git a/sql/rowexec/join_test.go b/sql/rowexec/join_test.go index a964b42a10..0e85fb15d5 100644 --- a/sql/rowexec/join_test.go +++ b/sql/rowexec/join_test.go @@ -106,10 +106,10 @@ func testInnerJoin(t *testing.T, db *memory.Database, ctx *sql.Context) { rows := collectRows(t, ctx, j) require.Len(rows, 2) - require.Equal([]sql.Row{ + require.Equal([]sql.UntypedSqlRow{ {"col1_1", "col2_1", int32(1), int64(2), "col1_1", "col2_1", int32(1), int64(2)}, {"col1_2", "col2_2", int32(3), int64(4), "col1_2", "col2_2", int32(3), int64(4)}, - }, rows) + }, sql.RowsToUntyped(rows)) } func TestInnerJoinEmpty(t *testing.T) { @@ -175,7 +175,7 @@ func BenchmarkInnerJoin(b *testing.B) { ), ) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {int64(0), "t1_0", int64(0), "t2_0"}, {int64(1), "t1_1", int64(1), "t2_1"}, {int64(2), "t1_2", int64(2), "t2_2"}, @@ -258,7 +258,7 @@ func TestLeftJoin(t *testing.T) { require.NoError(err) rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - require.ElementsMatch([]sql.Row{ + require.ElementsMatch([]sql.UntypedSqlRow{ {"col1_1", "col2_1", int32(1), int64(2), "col1_2", "col2_2", int32(3), int64(4)}, {"col1_2", "col2_2", int32(3), int64(4), nil, nil, nil, nil}, }, rows) diff --git a/sql/rowexec/limit_test.go b/sql/rowexec/limit_test.go index 1a0f8e39de..2cd2a2f422 100644 --- a/sql/rowexec/limit_test.go +++ b/sql/rowexec/limit_test.go @@ -123,10 +123,10 @@ func getTestingTable(t *testing.T) (*memory.Database, *memory.Table, int) { }) testingTable = memory.NewTable(db, "test", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("11a"), - sql.NewRow("22a"), - sql.NewRow("33a"), + rows := []sql.UntypedSqlRow{ + {"11a"}, + {"22a"}, + {"33a"}, } pro := memory.NewDBProvider(db) diff --git a/sql/rowexec/merge_join.go b/sql/rowexec/merge_join.go index a2c34c306f..5cb4a88c37 100644 --- a/sql/rowexec/merge_join.go +++ b/sql/rowexec/merge_join.go @@ -46,10 +46,9 @@ func newMergeJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, return nil, err } - fullRow := make(sql.Row, len(row)+len(j.Left().Schema())+len(j.Right().Schema())) - fullRow[0] = row - if len(row) > 0 { - copy(fullRow[0:], row[:]) + fullRow := sql.NewSqlRowWithLen(row.Len() + len(j.Left().Schema()) + len(j.Right().Schema())) + for i, v := range row.Values() { + fullRow.SetValue(i, v) } // a merge join's first filter provides direction information @@ -79,7 +78,7 @@ func newMergeJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode, typ: j.Op, fullRow: fullRow, scopeLen: j.ScopeLen, - parentLen: len(row) - j.ScopeLen, + parentLen: row.Len() - j.ScopeLen, leftRowLen: len(j.Left().Schema()), rightRowLen: len(j.Right().Schema()), } @@ -306,9 +305,7 @@ func (i *mergeJoinIter) Next(ctx *sql.Context) (sql.Row, error) { } func (i *mergeJoinIter) copyReturnRow() sql.Row { - ret := make(sql.Row, len(i.fullRow)) - copy(ret, i.fullRow) - return ret + return i.fullRow.Copy() } // incMatch uses two phases to find all left and right rows that match their @@ -325,8 +322,9 @@ func (i *mergeJoinIter) incMatch(ctx *sql.Context) error { if !i.rightDone { // initialize right matches buffer - right := make(sql.Row, i.rightRowLen) - copy(right, i.fullRow[i.scopeLen+i.parentLen+i.leftRowLen:]) + //right := i.fullRow.Subslice(i.scopeLen+i.parentLen+i.leftRowLen, i.fullRow.Len()).Copy() + right := make(sql.UntypedSqlRow, i.rightRowLen) + copy(right, i.fullRow.Values()[i.scopeLen+i.parentLen+i.leftRowLen:]) i.rightBuf = append(i.rightBuf, right) match := true @@ -408,8 +406,8 @@ func (i *mergeJoinIter) lojFinalize() bool { // nullifyRightRow sets the values corresponding to the right row to nil func (i *mergeJoinIter) nullifyRightRow(r sql.Row) sql.Row { - for j := i.scopeLen + i.parentLen + i.leftRowLen; j < len(r); j++ { - r[j] = nil + for j := i.scopeLen + i.parentLen + i.leftRowLen; j < r.Len(); j++ { + r.SetValue(j, nil) } return r } @@ -446,16 +444,18 @@ func (i *mergeJoinIter) resetMatchState() { // no match, no lookahead row, and no error. func (i *mergeJoinIter) peekMatch(ctx *sql.Context, iter sql.RowIter) (bool, sql.Row, error) { var off int - var restore sql.Row + var restore sql.UntypedSqlRow switch iter { case i.left: off = i.scopeLen + i.parentLen - restore = make(sql.Row, i.leftRowLen) - copy(restore, i.fullRow[off:off+i.leftRowLen]) + //restore = i.fullRow.Subslice(off, off+i.leftRowLen) + restore = make(sql.UntypedSqlRow, i.leftRowLen) + copy(restore, i.fullRow.Values()[off:off+i.leftRowLen]) case i.right: off = i.scopeLen + i.parentLen + i.leftRowLen - restore = make(sql.Row, i.rightRowLen) - copy(restore, i.fullRow[off:off+i.rightRowLen]) + //restore = i.fullRow.Subslice(off, off+i.rightRowLen) + restore = make(sql.UntypedSqlRow, i.rightRowLen) + copy(restore, i.fullRow.Values()[off:off+i.rightRowLen]) default: } @@ -491,8 +491,8 @@ func (i *mergeJoinIter) exhausted() bool { // copySubslice copies |src| into |dst| starting at index |off| func copySubslice(dst, src sql.Row, off int) { - for i, v := range src { - dst[off+i] = v + for i, v := range src.Values() { + dst.SetValue(off+i, v) } } @@ -515,8 +515,8 @@ func (i *mergeJoinIter) incLeft(ctx *sql.Context) error { } off := i.scopeLen + i.parentLen - for j, v := range row { - i.fullRow[off+j] = v + for j, v := range row.Values() { + i.fullRow.SetValue(off+j, v) } return nil @@ -540,8 +540,8 @@ func (i *mergeJoinIter) incRight(ctx *sql.Context) error { } off := i.scopeLen + i.parentLen + i.leftRowLen - for j, v := range row { - i.fullRow[off+j] = v + for j, v := range row.Values() { + i.fullRow.SetValue(off+j, v) } return nil @@ -553,16 +553,20 @@ func (i *mergeJoinIter) incIter(ctx *sql.Context, iter sql.RowIter, off int) err if err != nil { return err } - for j, v := range row { - i.fullRow[off+j] = v + for j, v := range row.Values() { + i.fullRow.SetValue(off+j, v) } return nil } func (i *mergeJoinIter) removeParentRow(r sql.Row) sql.Row { - copy(r[i.scopeLen:], r[i.scopeLen+i.parentLen:]) - r = r[:len(r)-i.parentLen] - return r + if i.parentLen == 0 { + return r + } + vals := r.Values() + copy(vals[i.scopeLen:], vals[i.scopeLen+i.parentLen:]) + vals = vals[:r.Len()-i.parentLen] + return sql.UntypedSqlRow(vals) } func (i *mergeJoinIter) Close(ctx *sql.Context) (err error) { diff --git a/sql/rowexec/node_builder.gen.go b/sql/rowexec/node_builder.gen.go index ecca6c36ed..2f2ceab659 100644 --- a/sql/rowexec/node_builder.gen.go +++ b/sql/rowexec/node_builder.gen.go @@ -24,6 +24,9 @@ import ( ) func (b *BaseBuilder) buildNodeExec(ctx *sql.Context, n sql.Node, row sql.Row) (sql.RowIter, error) { + if row == nil { + row = sql.UntypedSqlRow{} + } var iter sql.RowIter var err error if b.override != nil { diff --git a/sql/rowexec/other.go b/sql/rowexec/other.go index 8c0ccbf628..d989c05def 100644 --- a/sql/rowexec/other.go +++ b/sql/rowexec/other.go @@ -74,7 +74,7 @@ func (b *BaseBuilder) buildFetch(ctx *sql.Context, n *plan.Fetch, row sql.Row) ( } else if err != nil { return nil, err } - if len(row) != len(n.ToSet) { + if row.Len() != len(n.ToSet) { return nil, sql.ErrFetchIncorrectCount.New() } if len(n.ToSet) == 0 { diff --git a/sql/rowexec/other_iters.go b/sql/rowexec/other_iters.go index 387684a51f..c44a831c59 100644 --- a/sql/rowexec/other_iters.go +++ b/sql/rowexec/other_iters.go @@ -46,7 +46,7 @@ func (itr *analyzeTableIter) Next(ctx *sql.Context) (sql.Row, error) { msgText = err.Error() } itr.idx++ - return sql.Row{t.Name(), "analyze", msgType, msgText}, nil + return sql.UntypedSqlRow{t.Name(), "analyze", msgType, msgText}, nil } func (itr *analyzeTableIter) Close(ctx *sql.Context) error { @@ -73,9 +73,9 @@ func (itr *updateHistogramIter) Next(ctx *sql.Context) (sql.Row, error) { }() err := itr.prov.SetStats(ctx, itr.stats) if err != nil { - return sql.Row{itr.table, "histogram", "error", err.Error()}, nil + return sql.UntypedSqlRow{itr.table, "histogram", "error", err.Error()}, nil } - return sql.Row{itr.table, "histogram", "status", "OK"}, nil + return sql.UntypedSqlRow{itr.table, "histogram", "status", "OK"}, nil } func (itr *updateHistogramIter) Close(_ *sql.Context) error { @@ -103,9 +103,9 @@ func (itr *dropHistogramIter) Next(ctx *sql.Context) (sql.Row, error) { qual := sql.NewStatQualifier(itr.db, itr.schema, itr.table, "") err := itr.prov.DropStats(ctx, qual, itr.columns) if err != nil { - return sql.Row{itr.table, "histogram", "error", err.Error()}, nil + return sql.UntypedSqlRow{itr.table, "histogram", "error", err.Error()}, nil } - return sql.Row{itr.table, "histogram", "status", "OK"}, nil + return sql.UntypedSqlRow{itr.table, "histogram", "status", "OK"}, nil } func (itr *dropHistogramIter) Close(_ *sql.Context) error { @@ -376,7 +376,7 @@ func (sri *stripRowIter) Next(ctx *sql.Context) (sql.Row, error) { if err != nil { return nil, err } - return r[sri.numCols:], nil + return r.Subslice(sri.numCols, r.Len()), nil } func (sri *stripRowIter) Close(ctx *sql.Context) error { diff --git a/sql/rowexec/process_test.go b/sql/rowexec/process_test.go index 10da29ef56..d1dcd99603 100644 --- a/sql/rowexec/process_test.go +++ b/sql/rowexec/process_test.go @@ -70,7 +70,7 @@ func TestProcessTable(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {int64(1)}, {int64(2)}, {int64(3)}, diff --git a/sql/rowexec/project_test.go b/sql/rowexec/project_test.go index a72ffe9e27..13b72b2f34 100644 --- a/sql/rowexec/project_test.go +++ b/sql/rowexec/project_test.go @@ -57,13 +57,13 @@ func TestProject(t *testing.T) { row, err := iter.Next(ctx) require.NoError(err) require.NotNil(row) - require.Equal(1, len(row)) - require.Equal("col2_1", row[0]) + require.Equal(1, row.Len()) + require.Equal("col2_1", row.GetValue(0)) row, err = iter.Next(ctx) require.NoError(err) require.NotNil(row) - require.Equal(1, len(row)) - require.Equal("col2_2", row[0]) + require.Equal(1, row.Len()) + require.Equal("col2_2", row.GetValue(0)) row, err = iter.Next(ctx) require.Equal(io.EOF, err) require.Nil(row) diff --git a/sql/rowexec/range_heap_iter.go b/sql/rowexec/range_heap_iter.go index 08b09f81a0..b44af5d808 100644 --- a/sql/rowexec/range_heap_iter.go +++ b/sql/rowexec/range_heap_iter.go @@ -48,7 +48,7 @@ func newRangeHeapJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinN primary: l, cond: j.Filter, joinType: j.Op, - rowSize: len(row) + len(j.Left().Schema()) + len(j.Right().Schema()), + rowSize: row.Len() + len(j.Left().Schema()) + len(j.Right().Schema()), scopeLen: j.ScopeLen, b: b, rangeHeapPlan: rhp, @@ -139,7 +139,7 @@ func (iter *rangeHeapJoinIter) Next(ctx *sql.Context) (sql.Row, error) { if errors.Is(err, io.EOF) { if !iter.foundMatch && iter.joinType.IsLeftOuter() { iter.primaryRow = nil - row := iter.buildRow(primary, nil) + row := iter.buildRow(primary, sql.NewSqlRowWithLen(len(iter.rangeHeapPlan.Schema()))) return iter.removeParentRow(row), nil } continue @@ -182,18 +182,18 @@ func (iter *rangeHeapJoinIter) Next(ctx *sql.Context) (sql.Row, error) { } func (iter *rangeHeapJoinIter) removeParentRow(r sql.Row) sql.Row { - copy(r[iter.scopeLen:], r[len(iter.parentRow):]) - r = r[:len(r)-len(iter.parentRow)+iter.scopeLen] - return r + if iter.parentRow.Len() == 0 { + return r + } + vals := r.Values() + copy(vals[iter.scopeLen:], vals[iter.scopeLen+iter.parentRow.Len():]) + vals = vals[:r.Len()-iter.parentRow.Len()] + return sql.NewUntypedRow(vals...) } // buildRow builds the result set row using the rows from the primary and secondary tables func (iter *rangeHeapJoinIter) buildRow(primary, secondary sql.Row) sql.Row { - row := make(sql.Row, iter.rowSize) - - copy(row, primary) - copy(row[len(primary):], secondary) - + row := primary.Append(secondary) return row } @@ -235,7 +235,7 @@ func (iter *rangeHeapJoinIter) getActiveRanges(ctx *sql.Context, _ sql.NodeExecB // Remove rows from the heap if we've advanced beyond their max value. for iter.Len() > 0 { maxValue := iter.Peek() - compareResult, err := compareNullsFirst(iter.rangeHeapPlan.ComparisonType, row[iter.rangeHeapPlan.ValueColumnIndex], maxValue) + compareResult, err := compareNullsFirst(iter.rangeHeapPlan.ComparisonType, row.GetValue(iter.rangeHeapPlan.ValueColumnIndex), maxValue) if err != nil { return nil, err } @@ -253,8 +253,8 @@ func (iter *rangeHeapJoinIter) getActiveRanges(ctx *sql.Context, _ sql.NodeExecB // Advance the child iterator until we encounter a row whose min value is beyond the range. for iter.pendingRow != nil { - minValue := iter.pendingRow[iter.rangeHeapPlan.MinColumnIndex] - compareResult, err := compareNullsFirst(iter.rangeHeapPlan.ComparisonType, row[iter.rangeHeapPlan.ValueColumnIndex], minValue) + minValue := iter.pendingRow.GetValue(iter.rangeHeapPlan.MinColumnIndex) + compareResult, err := compareNullsFirst(iter.rangeHeapPlan.ComparisonType, row.GetValue(iter.rangeHeapPlan.ValueColumnIndex), minValue) if err != nil { return nil, err } @@ -306,8 +306,8 @@ func compareNullsFirst(comparisonType sql.Type, a, b interface{}) (int, error) { func (iter rangeHeapJoinIter) Len() int { return len(iter.activeRanges) } func (iter *rangeHeapJoinIter) Less(i, j int) bool { - lhs := iter.activeRanges[i][iter.rangeHeapPlan.MaxColumnIndex] - rhs := iter.activeRanges[j][iter.rangeHeapPlan.MaxColumnIndex] + lhs := iter.activeRanges[i].GetValue(iter.rangeHeapPlan.MaxColumnIndex) + rhs := iter.activeRanges[j].GetValue(iter.rangeHeapPlan.MaxColumnIndex) // compareResult will be 0 if lhs==rhs, -1 if lhs < rhs, and +1 if lhs > rhs. compareResult, err := compareNullsFirst(iter.rangeHeapPlan.ComparisonType, lhs, rhs) if iter.err == nil && err != nil { @@ -334,5 +334,5 @@ func (iter *rangeHeapJoinIter) Pop() any { func (iter *rangeHeapJoinIter) Peek() interface{} { n := len(iter.activeRanges) - return iter.activeRanges[n-1][iter.rangeHeapPlan.MaxColumnIndex] + return iter.activeRanges[n-1].GetValue(iter.rangeHeapPlan.MaxColumnIndex) } diff --git a/sql/rowexec/rel.go b/sql/rowexec/rel.go index 17bb1c7f37..6317563312 100644 --- a/sql/rowexec/rel.go +++ b/sql/rowexec/rel.go @@ -82,17 +82,19 @@ func (b *BaseBuilder) buildValueDerivedTable(ctx *sql.Context, n *plan.ValueDeri func (b *BaseBuilder) buildValues(ctx *sql.Context, n *plan.Values, row sql.Row) (sql.RowIter, error) { rows := make([]sql.Row, len(n.ExpressionTuples)) for i, et := range n.ExpressionTuples { - vals := make(sql.Row, len(et)) + var vals sql.Row = sql.NewSqlRowWithLen(len(et)) // A non-zero row means that we're executing in a trigger context, so we evaluate against the row provided // TODO: this probably won't work with triggers that define explicit DEFAULT values - if len(row) > 0 { + if row != nil && row.Len() > 0 { + var v interface{} for j, e := range et { var err error - vals[j], err = e.Eval(ctx, row) + v, err = e.Eval(ctx, row) if err != nil { return nil, err } + vals.SetValue(j, v) } } else { // For the values node, the relevant values to evaluate are the tuple itself. We may need to project @@ -104,7 +106,7 @@ func (b *BaseBuilder) buildValues(ctx *sql.Context, n *plan.Values, row sql.Row) } } - rows[i] = sql.NewRow(vals...) + rows[i] = vals.Copy() } return sql.RowsToRowIter(rows...), nil @@ -375,13 +377,13 @@ func (b *BaseBuilder) buildSet(ctx *sql.Context, n *plan.Set, row sql.Row) (sql. } } - var resultRow sql.Row + var resultRow sql.Row = sql.UntypedSqlRow{} if len(updateExprs) > 0 { newRow, err := applyUpdateExpressions(ctx, updateExprs, row) if err != nil { return nil, err } - copy(resultRow, row) + resultRow = row.Copy() resultRow = row.Append(newRow) } @@ -603,7 +605,7 @@ func (b *BaseBuilder) buildInto(ctx *sql.Context, n *plan.Into, row sql.Row) (sq sch := n.Child.Schema() for _, r := range rows { file.WriteString(n.LinesStartingBy) - for i, val := range r { + for i, val := range r.Values() { if i != 0 { file.WriteString(n.FieldsTerminatedBy) } @@ -630,7 +632,7 @@ func (b *BaseBuilder) buildInto(ctx *sql.Context, n *plan.Into, row sql.Row) (sq } file.WriteString(n.LinesTerminatedBy) } - return sql.RowsToRowIter(sql.Row{}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{}), nil } rowNum := len(rows) @@ -648,23 +650,23 @@ func (b *BaseBuilder) buildInto(ctx *sql.Context, n *plan.Into, row sql.Row) (sq } defer file.Close() if rowNum == 1 { - for _, val := range rows[0] { + for _, val := range rows[0].Values() { file.WriteString(fmt.Sprintf("%v", val)) } } - return sql.RowsToRowIter(sql.Row{}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{}), nil } if rowNum == 0 { // a warning with error code 1329 occurs (No data), and make no change to variables - return sql.RowsToRowIter(sql.Row{}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{}), nil } - if len(rows[0]) != len(n.IntoVars) { + if rows[0].Len() != len(n.IntoVars) { return nil, sql.ErrColumnNumberDoesNotMatch.New() } - var rowValues = make([]interface{}, len(rows[0])) - copy(rowValues, rows[0]) + var rowValues = make([]interface{}, rows[0].Len()) + copy(rowValues, rows[0].Values()) for j, v := range n.IntoVars { switch variable := v.(type) { @@ -684,7 +686,7 @@ func (b *BaseBuilder) buildInto(ctx *sql.Context, n *plan.Into, row sql.Row) (sq } } - return sql.RowsToRowIter(sql.Row{}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{}), nil } func (b *BaseBuilder) buildExternalProcedure(ctx *sql.Context, n *plan.ExternalProcedure, row sql.Row) (sql.RowIter, error) { @@ -925,5 +927,5 @@ func (b *BaseBuilder) buildResolvedTable(ctx *sql.Context, n *plan.ResolvedTable } func (b *BaseBuilder) buildTableCount(_ *sql.Context, n *plan.TableCountLookup, _ sql.Row) (sql.RowIter, error) { - return sql.RowsToRowIter(sql.Row{int64(n.Count())}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{int64(n.Count())}), nil } diff --git a/sql/rowexec/rel_iters.go b/sql/rowexec/rel_iters.go index 720c81018f..bbe14db7ae 100644 --- a/sql/rowexec/rel_iters.go +++ b/sql/rowexec/rel_iters.go @@ -160,7 +160,7 @@ func ProjectRow( projections []sql.Expression, row sql.Row, ) (sql.Row, error) { - var fields = make(sql.Row, len(projections)) + var fields = sql.NewSqlRowWithLen(len(projections)) var secondPass []int for i, expr := range projections { // Default values that are expressions may reference other fields, thus they must evaluate after all other exprs. @@ -177,7 +177,7 @@ func ProjectRow( return nil, fErr } field = normalizeNegativeZeros(field) - fields[i] = field + fields.SetValue(i, field) } for _, index := range secondPass { field, err := projections[index].Eval(ctx, fields) @@ -185,7 +185,7 @@ func ProjectRow( return nil, err } field = normalizeNegativeZeros(field) - fields[index] = field + fields.SetValue(index, field) } return fields, nil } @@ -429,7 +429,7 @@ func (r *recursiveCteIter) Next(ctx *sql.Context) (sql.Row, error) { } } - var row sql.Row + row := sql.NewUntypedRow() for { var err error row, err = r.iter.Next(ctx) diff --git a/sql/rowexec/resolved_table_test.go b/sql/rowexec/resolved_table_test.go index 023bba520d..89249aebe3 100644 --- a/sql/rowexec/resolved_table_test.go +++ b/sql/rowexec/resolved_table_test.go @@ -80,16 +80,16 @@ func newTableTest(source string) sql.Table { []byte("partition3"), } - rows := []sql.Row{ - sql.NewRow(int32(1), int64(9), "one, nine"), - sql.NewRow(int32(2), int64(8), "two, eight"), - sql.NewRow(int32(3), int64(7), "three, seven"), - sql.NewRow(int32(4), int64(6), "four, six"), - sql.NewRow(int32(5), int64(5), "five, five"), - sql.NewRow(int32(6), int64(4), "six, four"), - sql.NewRow(int32(7), int64(3), "seven, three"), - sql.NewRow(int32(8), int64(2), "eight, two"), - sql.NewRow(int32(9), int64(1), "nine, one"), + rows := []sql.UntypedSqlRow{ + {int32(1), int64(9), "one, nine"}, + {int32(2), int64(8), "two, eight"}, + {int32(3), int64(7), "three, seven"}, + {int32(4), int64(6), "four, six"}, + {int32(5), int64(5), "five, five"}, + {int32(6), int64(4), "six, four"}, + {int32(7), int64(3), "seven, three"}, + {int32(8), int64(2), "eight, two"}, + {int32(9), int64(1), "nine, one"}, } partitions := map[string][]sql.Row{ @@ -105,7 +105,7 @@ type dummyTable struct { schema sql.Schema keys [][]byte partitions map[string][]sql.Row - rows []sql.Row + rows []sql.UntypedSqlRow } var _ sql.Table = (*dummyTable)(nil) diff --git a/sql/rowexec/show.go b/sql/rowexec/show.go index e74d256933..89d3d88519 100644 --- a/sql/rowexec/show.go +++ b/sql/rowexec/show.go @@ -41,7 +41,7 @@ func (b *BaseBuilder) buildShowCharset(ctx *sql.Context, n *plan.ShowCharset, ro iter := sql.NewCharacterSetsIterator() for charset, ok := iter.Next(); ok; charset, ok = iter.Next() { if charset.Encoder != nil && charset.BinaryCollation.Sorter() != nil && charset.DefaultCollation.Sorter() != nil { - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ charset.Name, charset.Description, charset.DefaultCollation.String(), @@ -203,9 +203,9 @@ func (b *BaseBuilder) buildShowTables(ctx *sql.Context, n *plan.ShowTables, row var rows []sql.Row for _, tableName := range tableNames { - row := sql.Row{tableName} + var row sql.Row = sql.UntypedSqlRow{tableName} if n.Full { - row = append(row, "BASE TABLE") + row = row.Append(sql.NewUntypedRow("BASE TABLE")) } rows = append(rows, row) } @@ -218,24 +218,24 @@ func (b *BaseBuilder) buildShowTables(ctx *sql.Context, n *plan.ShowTables, row return nil, err } for _, view := range views { - row := sql.Row{view.Name} + var row sql.Row = sql.UntypedSqlRow{view.Name} if n.Full { - row = append(row, "VIEW") + row = row.Append(sql.NewUntypedRow("VIEW")) } rows = append(rows, row) } } for _, view := range ctx.GetViewRegistry().ViewsInDatabase(db.Name()) { - row := sql.Row{view.Name()} + var row sql.Row = sql.UntypedSqlRow{view.Name()} if n.Full { - row = append(row, "VIEW") + row = row.Append(sql.NewUntypedRow("VIEW")) } rows = append(rows, row) } sort.Slice(rows, func(i, j int) bool { - return rows[i][0].(string) < rows[j][0].(string) + return rows[i].GetValue(0).(string) < rows[j].GetValue(0).(string) }) return sql.RowsToRowIter(rows...), nil @@ -262,7 +262,7 @@ func (b *BaseBuilder) buildShowCreateProcedure(ctx *sql.Context, n *plan.ShowCre if n.ExternalStoredProcedure != nil { // If an external stored procedure has been plugged in by the analyzer, use that fakeCreateProcedureStmt := n.ExternalStoredProcedure.FakeCreateProcedureStmt() - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ n.ExternalStoredProcedure.Name, // Procedure "", // sql_mode fakeCreateProcedureStmt, // Create Procedure @@ -282,7 +282,7 @@ func (b *BaseBuilder) buildShowCreateProcedure(ctx *sql.Context, n *plan.ShowCre } for _, procedure := range procedures { if strings.ToLower(procedure.Name) == n.ProcedureName { - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ procedure.Name, // Procedure "", // sql_mode procedure.CreateStatement, // Create Procedure @@ -328,72 +328,72 @@ func (b *BaseBuilder) buildShowCreateDatabase(ctx *sql.Context, n *plan.ShowCrea func (b *BaseBuilder) buildShowPrivileges(ctx *sql.Context, n *plan.ShowPrivileges, row sql.Row) (sql.RowIter, error) { return sql.RowsToRowIter( - sql.Row{"Alter", "Tables", "To alter the table"}, - sql.Row{"Alter routine", "Functions,Procedures", "To alter or drop stored functions/procedures"}, - sql.Row{"Create", "Databases,Tables,Indexes", "To create new databases and tables"}, - sql.Row{"Create routine", "Databases", "To use CREATE FUNCTION/PROCEDURE"}, - sql.Row{"Create role", "Server Admin", "To create new roles"}, - sql.Row{"Create temporary tables", "Databases", "To use CREATE TEMPORARY TABLE"}, - sql.Row{"Create view", "Tables", "To create new views"}, - sql.Row{"Create user", "Server Admin", "To create new users"}, - sql.Row{"Delete", "Tables", "To delete existing rows"}, - sql.Row{"Drop", "Databases,Tables", "To drop databases, tables, and views"}, - sql.Row{"Drop role", "Server Admin", "To drop roles"}, - sql.Row{"Event", "Server Admin", "To create, alter, drop and execute events"}, - sql.Row{"Execute", "Functions,Procedures", "To execute stored routines"}, - sql.Row{"File", "File access on server", "To read and write files on the server"}, - sql.Row{"Grant option", "Databases,Tables,Functions,Procedures", "To give to other users those privileges you possess"}, - sql.Row{"Index", "Tables", "To create or drop indexes"}, - sql.Row{"Insert", "Tables", "To insert data into tables"}, - sql.Row{"Lock tables", "Databases", "To use LOCK TABLES (together with SELECT privilege)"}, - sql.Row{"Process", "Server Admin", "To view the plain text of currently executing queries"}, - sql.Row{"Proxy", "Server Admin", "To make proxy user possible"}, - sql.Row{"References", "Databases,Tables", "To have references on tables"}, - sql.Row{"Reload", "Server Admin", "To reload or refresh tables, logs and privileges"}, - sql.Row{"Replication client", "Server Admin", "To ask where the slave or master servers are"}, - sql.Row{"Replication slave", "Server Admin", "To read binary log events from the master"}, - sql.Row{"Select", "Tables", "To retrieve rows from table"}, - sql.Row{"Show databases", "Server Admin", "To see all databases with SHOW DATABASES"}, - sql.Row{"Show view", "Tables", "To see views with SHOW CREATE VIEW"}, - sql.Row{"Shutdown", "Server Admin", "To shut down the server"}, - sql.Row{"Super", "Server Admin", "To use KILL thread, SET GLOBAL, CHANGE MASTER, etc."}, - sql.Row{"Trigger", "Tables", "To use triggers"}, - sql.Row{"Create tablespace", "Server Admin", "To create/alter/drop tablespaces"}, - sql.Row{"Update", "Tables", "To update existing rows"}, - sql.Row{"Usage", "Server Admin", "No privileges - allow connect only"}, - sql.Row{"ENCRYPTION_KEY_ADMIN", "Server Admin", ""}, - sql.Row{"INNODB_REDO_LOG_ARCHIVE", "Server Admin", ""}, - sql.Row{"REPLICATION_APPLIER", "Server Admin", ""}, - sql.Row{"INNODB_REDO_LOG_ENABLE", "Server Admin", ""}, - sql.Row{"SET_USER_ID", "Server Admin", ""}, - sql.Row{"SERVICE_CONNECTION_ADMIN", "Server Admin", ""}, - sql.Row{"GROUP_REPLICATION_ADMIN", "Server Admin", ""}, - sql.Row{"AUDIT_ABORT_EXEMPT", "Server Admin", ""}, - sql.Row{"GROUP_REPLICATION_STREAM", "Server Admin", ""}, - sql.Row{"CLONE_ADMIN", "Server Admin", ""}, - sql.Row{"SYSTEM_USER", "Server Admin", ""}, - sql.Row{"AUTHENTICATION_POLICY_ADMIN", "Server Admin", ""}, - sql.Row{"SHOW_ROUTINE", "Server Admin", ""}, - sql.Row{"BACKUP_ADMIN", "Server Admin", ""}, - sql.Row{"CONNECTION_ADMIN", "Server Admin", ""}, - sql.Row{"PERSIST_RO_VARIABLES_ADMIN", "Server Admin", ""}, - sql.Row{"RESOURCE_GROUP_ADMIN", "Server Admin", ""}, - sql.Row{"SESSION_VARIABLES_ADMIN", "Server Admin", ""}, - sql.Row{"SYSTEM_VARIABLES_ADMIN", "Server Admin", ""}, - sql.Row{"APPLICATION_PASSWORD_ADMIN", "Server Admin", ""}, - sql.Row{"FLUSH_OPTIMIZER_COSTS", "Server Admin", ""}, - sql.Row{"AUDIT_ADMIN", "Server Admin", ""}, - sql.Row{"BINLOG_ADMIN", "Server Admin", ""}, - sql.Row{"BINLOG_ENCRYPTION_ADMIN", "Server Admin", ""}, - sql.Row{"FLUSH_STATUS", "Server Admin", ""}, - sql.Row{"FLUSH_TABLES", "Server Admin", ""}, - sql.Row{"FLUSH_USER_RESOURCES", "Server Admin", ""}, - sql.Row{"XA_RECOVER_ADMIN", "Server Admin", ""}, - sql.Row{"PASSWORDLESS_USER_ADMIN", "Server Admin", ""}, - sql.Row{"TABLE_ENCRYPTION_ADMIN", "Server Admin", ""}, - sql.Row{"ROLE_ADMIN", "Server Admin", ""}, - sql.Row{"REPLICATION_SLAVE_ADMIN", "Server Admin", ""}, - sql.Row{"RESOURCE_GROUP_USER", "Server Admin", ""}, + sql.UntypedSqlRow{"Alter", "Tables", "To alter the table"}, + sql.UntypedSqlRow{"Alter routine", "Functions,Procedures", "To alter or drop stored functions/procedures"}, + sql.UntypedSqlRow{"Create", "Databases,Tables,Indexes", "To create new databases and tables"}, + sql.UntypedSqlRow{"Create routine", "Databases", "To use CREATE FUNCTION/PROCEDURE"}, + sql.UntypedSqlRow{"Create role", "Server Admin", "To create new roles"}, + sql.UntypedSqlRow{"Create temporary tables", "Databases", "To use CREATE TEMPORARY TABLE"}, + sql.UntypedSqlRow{"Create view", "Tables", "To create new views"}, + sql.UntypedSqlRow{"Create user", "Server Admin", "To create new users"}, + sql.UntypedSqlRow{"Delete", "Tables", "To delete existing rows"}, + sql.UntypedSqlRow{"Drop", "Databases,Tables", "To drop databases, tables, and views"}, + sql.UntypedSqlRow{"Drop role", "Server Admin", "To drop roles"}, + sql.UntypedSqlRow{"Event", "Server Admin", "To create, alter, drop and execute events"}, + sql.UntypedSqlRow{"Execute", "Functions,Procedures", "To execute stored routines"}, + sql.UntypedSqlRow{"File", "File access on server", "To read and write files on the server"}, + sql.UntypedSqlRow{"Grant option", "Databases,Tables,Functions,Procedures", "To give to other users those privileges you possess"}, + sql.UntypedSqlRow{"Index", "Tables", "To create or drop indexes"}, + sql.UntypedSqlRow{"Insert", "Tables", "To insert data into tables"}, + sql.UntypedSqlRow{"Lock tables", "Databases", "To use LOCK TABLES (together with SELECT privilege)"}, + sql.UntypedSqlRow{"Process", "Server Admin", "To view the plain text of currently executing queries"}, + sql.UntypedSqlRow{"Proxy", "Server Admin", "To make proxy user possible"}, + sql.UntypedSqlRow{"References", "Databases,Tables", "To have references on tables"}, + sql.UntypedSqlRow{"Reload", "Server Admin", "To reload or refresh tables, logs and privileges"}, + sql.UntypedSqlRow{"Replication client", "Server Admin", "To ask where the slave or master servers are"}, + sql.UntypedSqlRow{"Replication slave", "Server Admin", "To read binary log events from the master"}, + sql.UntypedSqlRow{"Select", "Tables", "To retrieve rows from table"}, + sql.UntypedSqlRow{"Show databases", "Server Admin", "To see all databases with SHOW DATABASES"}, + sql.UntypedSqlRow{"Show view", "Tables", "To see views with SHOW CREATE VIEW"}, + sql.UntypedSqlRow{"Shutdown", "Server Admin", "To shut down the server"}, + sql.UntypedSqlRow{"Super", "Server Admin", "To use KILL thread, SET GLOBAL, CHANGE MASTER, etc."}, + sql.UntypedSqlRow{"Trigger", "Tables", "To use triggers"}, + sql.UntypedSqlRow{"Create tablespace", "Server Admin", "To create/alter/drop tablespaces"}, + sql.UntypedSqlRow{"Update", "Tables", "To update existing rows"}, + sql.UntypedSqlRow{"Usage", "Server Admin", "No privileges - allow connect only"}, + sql.UntypedSqlRow{"ENCRYPTION_KEY_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"INNODB_REDO_LOG_ARCHIVE", "Server Admin", ""}, + sql.UntypedSqlRow{"REPLICATION_APPLIER", "Server Admin", ""}, + sql.UntypedSqlRow{"INNODB_REDO_LOG_ENABLE", "Server Admin", ""}, + sql.UntypedSqlRow{"SET_USER_ID", "Server Admin", ""}, + sql.UntypedSqlRow{"SERVICE_CONNECTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"GROUP_REPLICATION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"AUDIT_ABORT_EXEMPT", "Server Admin", ""}, + sql.UntypedSqlRow{"GROUP_REPLICATION_STREAM", "Server Admin", ""}, + sql.UntypedSqlRow{"CLONE_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SYSTEM_USER", "Server Admin", ""}, + sql.UntypedSqlRow{"AUTHENTICATION_POLICY_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SHOW_ROUTINE", "Server Admin", ""}, + sql.UntypedSqlRow{"BACKUP_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"CONNECTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"PERSIST_RO_VARIABLES_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"RESOURCE_GROUP_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SESSION_VARIABLES_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"SYSTEM_VARIABLES_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"APPLICATION_PASSWORD_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_OPTIMIZER_COSTS", "Server Admin", ""}, + sql.UntypedSqlRow{"AUDIT_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"BINLOG_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"BINLOG_ENCRYPTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_STATUS", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_TABLES", "Server Admin", ""}, + sql.UntypedSqlRow{"FLUSH_USER_RESOURCES", "Server Admin", ""}, + sql.UntypedSqlRow{"XA_RECOVER_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"PASSWORDLESS_USER_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"TABLE_ENCRYPTION_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"ROLE_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"REPLICATION_SLAVE_ADMIN", "Server Admin", ""}, + sql.UntypedSqlRow{"RESOURCE_GROUP_USER", "Server Admin", ""}, ), nil } @@ -420,7 +420,7 @@ func (b *BaseBuilder) buildShowCreateTrigger(ctx *sql.Context, n *plan.ShowCreat if err != nil { return nil, err } - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ trigger.Name, // Trigger "", // sql_mode trigger.CreateStatement, // SQL Original Statement @@ -440,7 +440,7 @@ func (b *BaseBuilder) buildShowColumns(ctx *sql.Context, n *plan.ShowColumns, ro schema := n.TargetSchema() var rows = make([]sql.Row, len(schema)) for i, col := range schema { - var row sql.Row + row := sql.NewUntypedRow() var collation interface{} if types.IsTextOnly(col.Type) { collation = sql.Collation_Default.String() @@ -486,7 +486,7 @@ func (b *BaseBuilder) buildShowColumns(ctx *sql.Context, n *plan.ShowColumns, ro } if n.Full { - row = sql.Row{ + row = sql.UntypedSqlRow{ col.Name, col.Type.String(), collation, @@ -498,7 +498,7 @@ func (b *BaseBuilder) buildShowColumns(ctx *sql.Context, n *plan.ShowColumns, ro col.Comment, } } else { - row = sql.Row{ + row = sql.UntypedSqlRow{ col.Name, col.Type.String(), null, @@ -526,7 +526,7 @@ func (b *BaseBuilder) buildShowVariables(ctx *sql.Context, n *plan.ShowVariables for k, v := range sysVars { if n.Filter != nil { - res, err := n.Filter.Eval(ctx, sql.Row{strings.ToLower(k)}) + res, err := n.Filter.Eval(ctx, sql.UntypedSqlRow{strings.ToLower(k)}) if err != nil { return nil, err } @@ -543,7 +543,7 @@ func (b *BaseBuilder) buildShowVariables(ctx *sql.Context, n *plan.ShowVariables } sort.Slice(rows, func(i, j int) bool { - return rows[i][0].(string) < rows[j][0].(string) + return rows[i].GetValue(0).(string) < rows[j].GetValue(0).(string) }) return sql.RowsToRowIter(rows...), nil @@ -567,7 +567,7 @@ func (b *BaseBuilder) buildShowTriggers(ctx *sql.Context, n *plan.ShowTriggers, if err != nil { return nil, err } - rows = append(rows, sql.Row{ + rows = append(rows, sql.UntypedSqlRow{ trigger.TriggerName, // Trigger triggerEvent, // Event tableName, // Table @@ -592,14 +592,14 @@ func (b *BaseBuilder) buildShowDatabases(ctx *sql.Context, n *plan.ShowDatabases dbs := n.Catalog.AllDatabases(ctx) var rows = make([]sql.Row, 0, len(dbs)) for _, db := range dbs { - rows = append(rows, sql.Row{db.Name()}) + rows = append(rows, sql.UntypedSqlRow{db.Name()}) } if _, err := n.Catalog.Database(ctx, "mysql"); err == nil { - rows = append(rows, sql.Row{"mysql"}) + rows = append(rows, sql.UntypedSqlRow{"mysql"}) } sort.Slice(rows, func(i, j int) bool { - return strings.Compare(rows[i][0].(string), rows[j][0].(string)) < 0 + return strings.Compare(rows[i].GetValue(0).(string), rows[j].GetValue(0).(string)) < 0 }) return sql.RowsToRowIter(rows...), nil @@ -630,24 +630,24 @@ func (b *BaseBuilder) buildShowGrants(ctx *sql.Context, n *plan.ShowGrants, row var rows []sql.Row userStr := user.UserHostToString("`") privStr := generatePrivStrings("*", "*", userStr, user.PrivilegeSet.ToSlice()) - rows = append(rows, sql.Row{privStr}) + rows = append(rows, sql.UntypedSqlRow{privStr}) for _, db := range user.PrivilegeSet.GetDatabases() { dbStr := fmt.Sprintf("`%s`", db.Name()) if privStr = generatePrivStrings(dbStr, "*", userStr, db.ToSlice()); len(privStr) != 0 { - rows = append(rows, sql.Row{privStr}) + rows = append(rows, sql.UntypedSqlRow{privStr}) } for _, tbl := range db.GetTables() { tblStr := fmt.Sprintf("`%s`", tbl.Name()) privStr = generatePrivStrings(dbStr, tblStr, userStr, tbl.ToSlice()) - rows = append(rows, sql.Row{privStr}) + rows = append(rows, sql.UntypedSqlRow{privStr}) } for _, routine := range db.GetRoutines() { quotedRoutine := fmt.Sprintf("`%s`", routine.RoutineName()) privStr = generateRoutinePrivStrings(dbStr, quotedRoutine, routine.RoutineType(), userStr, routine.ToSlice()) - rows = append(rows, sql.Row{privStr}) + rows = append(rows, sql.UntypedSqlRow{privStr}) } // TODO: display column privileges @@ -666,7 +666,7 @@ func (b *BaseBuilder) buildShowGrants(ctx *sql.Context, n *plan.ShowGrants, row sb.WriteString(roleEdge.FromString("`")) } if sb.Len() > 0 { - rows = append(rows, sql.Row{fmt.Sprintf("GRANT %s TO %s", sb.String(), user.UserHostToString("`"))}) + rows = append(rows, sql.UntypedSqlRow{fmt.Sprintf("GRANT %s TO %s", sb.String(), user.UserHostToString("`"))}) } sb.Reset() @@ -677,7 +677,7 @@ func (b *BaseBuilder) buildShowGrants(ctx *sql.Context, n *plan.ShowGrants, row sb.WriteString(dynamicPrivWithWgo) } if sb.Len() > 0 { - rows = append(rows, sql.Row{fmt.Sprintf("GRANT %s ON *.* TO %s WITH GRANT OPTION", sb.String(), user.UserHostToString("`"))}) + rows = append(rows, sql.UntypedSqlRow{fmt.Sprintf("GRANT %s ON *.* TO %s WITH GRANT OPTION", sb.String(), user.UserHostToString("`"))}) } sb.Reset() for i, dynamicPrivWithoutWgo := range user.PrivilegeSet.ToSliceDynamic(false) { @@ -687,7 +687,7 @@ func (b *BaseBuilder) buildShowGrants(ctx *sql.Context, n *plan.ShowGrants, row sb.WriteString(dynamicPrivWithoutWgo) } if sb.Len() > 0 { - rows = append(rows, sql.Row{fmt.Sprintf("GRANT %s ON *.* TO %s", sb.String(), user.UserHostToString("`"))}) + rows = append(rows, sql.UntypedSqlRow{fmt.Sprintf("GRANT %s ON *.* TO %s", sb.String(), user.UserHostToString("`"))}) } return sql.RowsToRowIter(rows...), nil } @@ -734,7 +734,7 @@ func (b *BaseBuilder) buildShowBinlogs(ctx *sql.Context, n *plan.ShowBinlogs, _ if logFile.Encrypted { encrypted = "Yes" } - rows[i] = sql.Row{ + rows[i] = sql.UntypedSqlRow{ logFile.Name, // Log_name logFile.Size, // File_size encrypted, // Encrypted @@ -758,7 +758,7 @@ func (b *BaseBuilder) buildShowBinlogStatus(ctx *sql.Context, n *plan.ShowBinlog } for _, status := range statusResults { - row = sql.Row{ + row = sql.UntypedSqlRow{ status.File, // File status.Position, // Position status.DoDbs, // Binlog_Do_DB @@ -789,7 +789,7 @@ func (b *BaseBuilder) buildShowReplicaStatus(ctx *sql.Context, n *plan.ShowRepli lastIoErrorTimestamp := formatReplicaStatusTimestamp(status.LastIoErrorTimestamp) lastSqlErrorTimestamp := formatReplicaStatusTimestamp(status.LastSqlErrorTimestamp) - row = sql.Row{ + row = sql.UntypedSqlRow{ "", // Replica_IO_State status.SourceHost, // Source_Host status.SourceUser, // Source_User @@ -869,7 +869,7 @@ func (b *BaseBuilder) buildShowCreateEvent(ctx *sql.Context, n *plan.ShowCreateE n.Event = *newEvent // TODO: fill time_zone with appropriate values - return sql.RowsToRowIter(sql.Row{ + return sql.RowsToRowIter(sql.UntypedSqlRow{ n.Event.Name, // Event n.Event.SqlMode, // sql_mode "SYSTEM", // time_zone diff --git a/sql/rowexec/show_create_database_test.go b/sql/rowexec/show_create_database_test.go index 5c92e777ed..fbdc8b1d20 100644 --- a/sql/rowexec/show_create_database_test.go +++ b/sql/rowexec/show_create_database_test.go @@ -34,9 +34,9 @@ func TestShowCreateDatabase(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - require.Equal([]sql.Row{ + require.Equal([]sql.UntypedSqlRow{ {"foo", "CREATE DATABASE /*!32312 IF NOT EXISTS*/ `foo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin */"}, - }, rows) + }, sql.RowsToUntyped(rows)) node = plan.NewShowCreateDatabase(sql.UnresolvedDatabase("foo"), false) ctx = sql.NewEmptyContext() @@ -46,7 +46,7 @@ func TestShowCreateDatabase(t *testing.T) { rows, err = sql.RowIterToRows(ctx, iter) require.NoError(err) - require.Equal([]sql.Row{ + require.Equal([]sql.UntypedSqlRow{ {"foo", "CREATE DATABASE `foo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin */"}, - }, rows) + }, sql.RowsToUntyped(rows)) } diff --git a/sql/rowexec/show_iters.go b/sql/rowexec/show_iters.go index 26dff790cb..50a9014c2d 100644 --- a/sql/rowexec/show_iters.go +++ b/sql/rowexec/show_iters.go @@ -339,7 +339,7 @@ func (i *showCreateTablesIter) Next(ctx *sql.Context) (sql.Row, error) { i.didIteration = true - var row sql.Row + row := sql.NewUntypedRow() switch table := i.table.(type) { case *plan.ResolvedTable: // MySQL behavior is to allow show create table for views, but not show create view for tables. @@ -453,7 +453,7 @@ func (i *showCreateTablesIter) produceCreateTableStatement(ctx *sql.Context, tab } colStmts = append(colStmts, sql.GenerateCreateTableIndexDefinition(index.IsUnique(), index.IsSpatial(), - index.IsFullText(), index.IsVector(), index.ID(), indexCols, index.Comment())) + index.IsFullText(), index.ID(), indexCols, index.Comment())) } fkt, err := getForeignKeyTable(table) diff --git a/sql/rowexec/show_status_test.go b/sql/rowexec/show_status_test.go index 2f2ce77a58..f13e15647f 100644 --- a/sql/rowexec/show_status_test.go +++ b/sql/rowexec/show_status_test.go @@ -41,8 +41,8 @@ func TestShowStatus(t *testing.T) { if err == io.EOF { break } - if res[0] == "uptime" { - require.True(res[1].(int) >= 0) + if res.GetValue(0) == "uptime" { + require.True(res.GetValue(1).(int) >= 0) } require.NoError(err) } diff --git a/sql/rowexec/show_tables_test.go b/sql/rowexec/show_tables_test.go index ba09071be6..3f41d1abc4 100644 --- a/sql/rowexec/show_tables_test.go +++ b/sql/rowexec/show_tables_test.go @@ -48,15 +48,15 @@ func TestShowTables(t *testing.T) { res, err := iter.Next(ctx) require.NoError(err) - require.Equal("test1", res[0]) + require.Equal("test1", res.GetValue(0)) res, err = iter.Next(ctx) require.NoError(err) - require.Equal("test2", res[0]) + require.Equal("test2", res.GetValue(0)) res, err = iter.Next(ctx) require.NoError(err) - require.Equal("test3", res[0]) + require.Equal("test3", res.GetValue(0)) _, err = iter.Next(ctx) require.Equal(io.EOF, err) diff --git a/sql/rowexec/showcolumns_test.go b/sql/rowexec/showcolumns_test.go index 8cc5ec646a..96b0a234ad 100644 --- a/sql/rowexec/showcolumns_test.go +++ b/sql/rowexec/showcolumns_test.go @@ -48,13 +48,13 @@ func TestShowColumns(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {"a", "text", "NO", "PRI", nil, ""}, {"b", "bigint", "YES", "", nil, ""}, {"c", "bigint", "NO", "", "1", ""}, } - require.Equal(expected, rows) + require.Equal(expected, sql.RowsToUntyped(rows)) } func TestShowColumnsWithIndexes(t *testing.T) { @@ -107,7 +107,7 @@ func TestShowColumnsWithIndexes(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {"a", "text", "NO", "PRI", nil, ""}, {"b", "bigint", "YES", "MUL", nil, ""}, {"c", "bigint", "NO", "", "1", ""}, @@ -115,7 +115,7 @@ func TestShowColumnsWithIndexes(t *testing.T) { {"e", "bigint", "NO", "", "1", ""}, } - require.Equal(expected, rows) + require.Equal(expected, sql.RowsToUntyped(rows)) // Test the precedence of key type. PRI > UNI > MUL showColumns.(*ShowColumns).Indexes = append(showColumns.(*ShowColumns).Indexes, @@ -149,7 +149,7 @@ func TestShowColumnsWithIndexes(t *testing.T) { rows, err = sql.RowIterToRows(ctx, iter) require.NoError(err) - require.Equal(expected, rows) + require.Equal(expected, sql.RowsToUntyped(rows)) } func TestShowColumnsFull(t *testing.T) { @@ -173,11 +173,11 @@ func TestShowColumnsFull(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {"a", "text", "utf8mb4_0900_bin", "NO", "PRI", nil, "", "", ""}, {"b", "bigint", nil, "YES", "", nil, "", "", ""}, {"c", "bigint", nil, "NO", "", "1", "", "", "a comment"}, } - require.Equal(expected, rows) + require.Equal(expected, sql.RowsToUntyped(rows)) } diff --git a/sql/rowexec/showtablestatus_test.go b/sql/rowexec/showtablestatus_test.go index fe6b9d93f6..64fe187827 100644 --- a/sql/rowexec/showtablestatus_test.go +++ b/sql/rowexec/showtablestatus_test.go @@ -50,12 +50,12 @@ func TestShowTableStatus(t *testing.T) { rows, err := sql.RowIterToRows(ctx, iter) require.NoError(err) - expected := []sql.Row{ + expected := []sql.UntypedSqlRow{ {"t1", "InnoDB", "10", "Fixed", uint64(0), uint64(0), uint64(0), uint64(0), int64(0), int64(0), nil, nil, nil, nil, sql.Collation_Default.String(), nil, nil, nil}, {"t2", "InnoDB", "10", "Fixed", uint64(0), uint64(0), uint64(0), uint64(0), int64(0), int64(0), nil, nil, nil, nil, sql.Collation_Default.String(), nil, nil, nil}, } - require.ElementsMatch(expected, rows) + require.ElementsMatch(expected, sql.RowsToUntyped(rows)) node = plan.NewShowTableStatus(db2) node.Catalog = catalog @@ -65,10 +65,10 @@ func TestShowTableStatus(t *testing.T) { rows, err = sql.RowIterToRows(ctx, iter) require.NoError(err) - expected = []sql.Row{ + expected = []sql.UntypedSqlRow{ {"t3", "InnoDB", "10", "Fixed", uint64(0), uint64(0), uint64(0), uint64(0), int64(0), int64(0), nil, nil, nil, nil, sql.Collation_Default.String(), nil, nil, nil}, {"t4", "InnoDB", "10", "Fixed", uint64(0), uint64(0), uint64(0), uint64(0), int64(0), int64(0), nil, nil, nil, nil, sql.Collation_Default.String(), nil, nil, nil}, } - require.ElementsMatch(expected, rows) + require.ElementsMatch(expected, sql.RowsToUntyped(rows)) } diff --git a/sql/rowexec/showvariables_test.go b/sql/rowexec/showvariables_test.go index 8e00a07495..34795f6fec 100644 --- a/sql/rowexec/showvariables_test.go +++ b/sql/rowexec/showvariables_test.go @@ -39,8 +39,8 @@ func TestShowVariables(t *testing.T) { vars := ctx.GetAllSessionVariables() for row, err := it.Next(ctx); err == nil; row, err = it.Next(ctx) { - key := row[0].(string) - val := row[1] + key := row.GetValue(0).(string) + val := row.GetValue(1) t.Logf("key: %s\tval: %v\n", key, val) @@ -72,11 +72,11 @@ func TestShowVariablesWithLike(t *testing.T) { rows, err := sql.RowIterToRows(context, it) require.NoError(t, err) - expectedRows := []sql.Row{ + expectedRows := []sql.UntypedSqlRow{ {"select_into_buffer_size", int64(8192)}, } - assert.Equal(t, expectedRows, rows) + assert.Equal(t, expectedRows, sql.RowsToUntyped(rows)) // GLOBAL variable should not change sv2 := plan.NewShowVariables(expression.NewLike( @@ -92,11 +92,11 @@ func TestShowVariablesWithLike(t *testing.T) { rows2, err := sql.RowIterToRows(context, it2) require.NoError(t, err) - expectedRows2 := []sql.Row{ + expectedRows2 := []sql.UntypedSqlRow{ {"select_into_buffer_size", int64(131072)}, } - assert.Equal(t, expectedRows2, rows2) + assert.Equal(t, expectedRows2, sql.RowsToUntyped(rows2)) } func TestShowVariablesWithWhere(t *testing.T) { @@ -114,9 +114,9 @@ func TestShowVariablesWithWhere(t *testing.T) { rows, err := sql.RowIterToRows(context, it) require.NoError(t, err) - expectedRows := []sql.Row{ + expectedRows := []sql.UntypedSqlRow{ {"select_into_buffer_size", int64(8192)}, } - assert.Equal(t, expectedRows, rows) + assert.Equal(t, expectedRows, sql.RowsToUntyped(rows)) } diff --git a/sql/rowexec/showwarnings_test.go b/sql/rowexec/showwarnings_test.go index ea30e9fe08..037ed89749 100644 --- a/sql/rowexec/showwarnings_test.go +++ b/sql/rowexec/showwarnings_test.go @@ -40,9 +40,9 @@ func TestShowWarnings(t *testing.T) { n := 3 for row, err := it.Next(ctx); err == nil; row, err = it.Next(ctx) { - level := row[0].(string) - code := row[1].(int) - message := row[2].(string) + level := row.GetValue(0).(string) + code := row.GetValue(1).(int) + message := row.GetValue(2).(string) t.Logf("level: %s\tcode: %v\tmessage: %s\n", level, code, message) diff --git a/sql/rowexec/sort_test.go b/sql/rowexec/sort_test.go index bfb12b6a82..6639b608d1 100644 --- a/sql/rowexec/sort_test.go +++ b/sql/rowexec/sort_test.go @@ -35,165 +35,165 @@ func TestSort(t *testing.T) { }) type sortTest struct { - rows []sql.Row + rows []sql.UntypedSqlRow sortFields []sql.SortField - expected []sql.Row + expected []sql.UntypedSqlRow } testCases := []sortTest{ { - rows: []sql.Row{ - sql.NewRow("c", nil, nil), - sql.NewRow("a", int32(3), float64(3.0)), - sql.NewRow("b", int32(3), float64(3.0)), - sql.NewRow("c", int32(1), float64(1.0)), - sql.NewRow(nil, int32(1), nil), + rows: []sql.UntypedSqlRow{ + {"c", nil, nil}, + {"a", int32(3), float64(3.0)}, + {"b", int32(3), float64(3.0)}, + {"c", int32(1), float64(1.0)}, + {nil, int32(1), nil}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Descending, NullOrdering: sql.NullsLast}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow("c", nil, nil), - sql.NewRow(nil, int32(1), nil), - sql.NewRow("c", int32(1), float64(1.0)), - sql.NewRow("b", int32(3), float64(3.0)), - sql.NewRow("a", int32(3), float64(3.0)), + expected: []sql.UntypedSqlRow{ + {"c", nil, nil}, + {nil, int32(1), nil}, + {"c", int32(1), float64(1.0)}, + {"b", int32(3), float64(3.0)}, + {"a", int32(3), float64(3.0)}, }, }, { - rows: []sql.Row{ - sql.NewRow("c", int32(3), float64(3.0)), - sql.NewRow("c", int32(3), nil), + rows: []sql.UntypedSqlRow{ + {"c", int32(3), float64(3.0)}, + {"c", int32(3), nil}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Descending, NullOrdering: sql.NullsLast}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow("c", int32(3), nil), - sql.NewRow("c", int32(3), float64(3.0)), + expected: []sql.UntypedSqlRow{ + {"c", int32(3), nil}, + {"c", int32(3), float64(3.0)}, }, }, { - rows: []sql.Row{ - sql.NewRow("c", nil, nil), - sql.NewRow("a", int32(3), float64(3.0)), - sql.NewRow("b", int32(3), float64(3.0)), - sql.NewRow("c", int32(1), float64(1.0)), - sql.NewRow(nil, int32(1), nil), + rows: []sql.UntypedSqlRow{ + {"c", nil, nil}, + {"a", int32(3), float64(3.0)}, + {"b", int32(3), float64(3.0)}, + {"c", int32(1), float64(1.0)}, + {nil, int32(1), nil}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Ascending, NullOrdering: sql.NullsLast}, }, - expected: []sql.Row{ - sql.NewRow("c", nil, nil), - sql.NewRow(nil, int32(1), nil), - sql.NewRow("c", int32(1), float64(1.0)), - sql.NewRow("a", int32(3), float64(3.0)), - sql.NewRow("b", int32(3), float64(3.0)), + expected: []sql.UntypedSqlRow{ + {"c", nil, nil}, + {nil, int32(1), nil}, + {"c", int32(1), float64(1.0)}, + {"a", int32(3), float64(3.0)}, + {"b", int32(3), float64(3.0)}, }, }, { - rows: []sql.Row{ - sql.NewRow("a", int32(1), float64(2)), - sql.NewRow("a", int32(1), float64(1)), + rows: []sql.UntypedSqlRow{ + {"a", int32(1), float64(2)}, + {"a", int32(1), float64(1)}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow("a", int32(1), float64(1)), - sql.NewRow("a", int32(1), float64(2)), + expected: []sql.UntypedSqlRow{ + {"a", int32(1), float64(1)}, + {"a", int32(1), float64(2)}, }, }, { - rows: []sql.Row{ - sql.NewRow("a", int32(1), float64(2)), - sql.NewRow("a", int32(1), float64(1)), - sql.NewRow("a", int32(2), float64(2)), - sql.NewRow("a", int32(3), float64(1)), - sql.NewRow("b", int32(2), float64(2)), - sql.NewRow("c", int32(3), float64(1)), + rows: []sql.UntypedSqlRow{ + {"a", int32(1), float64(2)}, + {"a", int32(1), float64(1)}, + {"a", int32(2), float64(2)}, + {"a", int32(3), float64(1)}, + {"b", int32(2), float64(2)}, + {"c", int32(3), float64(1)}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Descending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow("a", int32(3), float64(1)), - sql.NewRow("a", int32(2), float64(2)), - sql.NewRow("a", int32(1), float64(1)), - sql.NewRow("a", int32(1), float64(2)), - sql.NewRow("b", int32(2), float64(2)), - sql.NewRow("c", int32(3), float64(1)), + expected: []sql.UntypedSqlRow{ + {"a", int32(3), float64(1)}, + {"a", int32(2), float64(2)}, + {"a", int32(1), float64(1)}, + {"a", int32(1), float64(2)}, + {"b", int32(2), float64(2)}, + {"c", int32(3), float64(1)}, }, }, { - rows: []sql.Row{ - sql.NewRow(nil, nil, float64(2)), - sql.NewRow(nil, nil, float64(1)), + rows: []sql.UntypedSqlRow{ + {nil, nil, float64(2)}, + {nil, nil, float64(1)}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow(nil, nil, float64(1)), - sql.NewRow(nil, nil, float64(2)), + expected: []sql.UntypedSqlRow{ + {nil, nil, float64(1)}, + {nil, nil, float64(2)}, }, }, { - rows: []sql.Row{ - sql.NewRow(nil, nil, float64(1)), - sql.NewRow(nil, nil, float64(2)), + rows: []sql.UntypedSqlRow{ + {nil, nil, float64(1)}, + {nil, nil, float64(2)}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Descending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Descending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Descending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow(nil, nil, float64(2)), - sql.NewRow(nil, nil, float64(1)), + expected: []sql.UntypedSqlRow{ + {nil, nil, float64(2)}, + {nil, nil, float64(1)}, }, }, { - rows: []sql.Row{ - sql.NewRow(nil, nil, float64(1)), - sql.NewRow(nil, nil, nil), + rows: []sql.UntypedSqlRow{ + {nil, nil, float64(1)}, + {nil, nil, nil}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsFirst}, }, - expected: []sql.Row{ - sql.NewRow(nil, nil, nil), - sql.NewRow(nil, nil, float64(1)), + expected: []sql.UntypedSqlRow{ + {nil, nil, nil}, + {nil, nil, float64(1)}, }, }, { - rows: []sql.Row{ - sql.NewRow(nil, nil, nil), - sql.NewRow(nil, nil, float64(1)), + rows: []sql.UntypedSqlRow{ + {nil, nil, nil}, + {nil, nil, float64(1)}, }, sortFields: []sql.SortField{ {Column: expression.NewGetField(0, types.Text, "col1", true), Order: sql.Ascending, NullOrdering: sql.NullsLast}, {Column: expression.NewGetField(1, types.Int32, "col2", true), Order: sql.Ascending, NullOrdering: sql.NullsLast}, {Column: expression.NewGetField(2, types.Float64, "col3", true), Order: sql.Ascending, NullOrdering: sql.NullsLast}, }, - expected: []sql.Row{ - sql.NewRow(nil, nil, float64(1)), - sql.NewRow(nil, nil, nil), + expected: []sql.UntypedSqlRow{ + {nil, nil, float64(1)}, + {nil, nil, nil}, }, }, } @@ -215,7 +215,7 @@ func TestSort(t *testing.T) { actual, err := NodeToRows(ctx, sort) require.NoError(err) - require.Equal(tt.expected, actual) + require.Equal(tt.expected, sql.RowsToUntyped(actual)) }) } } @@ -223,12 +223,12 @@ func TestSort(t *testing.T) { func TestSortAscending(t *testing.T) { require := require.New(t) - data := []sql.Row{ - sql.NewRow("c"), - sql.NewRow("a"), - sql.NewRow("d"), - sql.NewRow(nil), - sql.NewRow("b"), + data := []sql.UntypedSqlRow{ + {"c"}, + {"a"}, + {"d"}, + {nil}, + {"b"}, } db := memory.NewDatabase("test") @@ -250,28 +250,28 @@ func TestSortAscending(t *testing.T) { s := plan.NewSort(sf, plan.NewResolvedTable(child, nil, nil)) require.Equal(schema.Schema, s.Schema()) - expected := []sql.Row{ - sql.NewRow(nil), - sql.NewRow("a"), - sql.NewRow("b"), - sql.NewRow("c"), - sql.NewRow("d"), + expected := []sql.UntypedSqlRow{ + {nil}, + {"a"}, + {"b"}, + {"c"}, + {"d"}, } actual, err := NodeToRows(ctx, s) require.NoError(err) - require.Equal(expected, actual) + require.Equal(expected, sql.RowsToUntyped(actual)) } func TestSortDescending(t *testing.T) { require := require.New(t) - data := []sql.Row{ - sql.NewRow("c"), - sql.NewRow("a"), - sql.NewRow("d"), - sql.NewRow(nil), - sql.NewRow("b"), + data := []sql.UntypedSqlRow{ + {"c"}, + {"a"}, + {"d"}, + {nil}, + {"b"}, } db := memory.NewDatabase("test") @@ -293,15 +293,15 @@ func TestSortDescending(t *testing.T) { s := plan.NewSort(sf, plan.NewResolvedTable(child, nil, nil)) require.Equal(schema.Schema, s.Schema()) - expected := []sql.Row{ - sql.NewRow("d"), - sql.NewRow("c"), - sql.NewRow("b"), - sql.NewRow("a"), - sql.NewRow(nil), + expected := []sql.UntypedSqlRow{ + {"d"}, + {"c"}, + {"b"}, + {"a"}, + {nil}, } actual, err := NodeToRows(ctx, s) require.NoError(err) - require.Equal(expected, actual) + require.Equal(expected, sql.RowsToUntyped(actual)) } diff --git a/sql/rowexec/subquery_test.go b/sql/rowexec/subquery_test.go index 3b9e5a4624..c2ba49303b 100644 --- a/sql/rowexec/subquery_test.go +++ b/sql/rowexec/subquery_test.go @@ -33,7 +33,7 @@ func TestSubquery(t *testing.T) { ctx := newContext(pro) table := memory.NewTable(db, "", sql.PrimaryKeySchema{}, nil) - require.NoError(table.Insert(ctx, nil)) + require.NoError(table.Insert(ctx, sql.NewUntypedRow())) subquery := plan.NewSubquery(plan.NewProject( []sql.Expression{ @@ -42,7 +42,7 @@ func TestSubquery(t *testing.T) { plan.NewResolvedTable(table, nil, nil), ), "select 'one'").WithExecBuilder(DefaultBuilder) - value, err := subquery.Eval(ctx, nil) + value, err := subquery.Eval(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(value, "one") } @@ -54,8 +54,8 @@ func TestSubqueryTooManyRows(t *testing.T) { ctx := newContext(pro) table := memory.NewTable(db, "", sql.PrimaryKeySchema{}, nil) - require.NoError(table.Insert(ctx, nil)) - require.NoError(table.Insert(ctx, nil)) + require.NoError(table.Insert(ctx, sql.UntypedSqlRow{})) + require.NoError(table.Insert(ctx, sql.UntypedSqlRow{})) subquery := plan.NewSubquery(plan.NewProject( []sql.Expression{ @@ -64,7 +64,7 @@ func TestSubqueryTooManyRows(t *testing.T) { plan.NewResolvedTable(table, nil, nil), ), "select 'one'").WithExecBuilder(DefaultBuilder) - _, err := subquery.Eval(ctx, nil) + _, err := subquery.Eval(ctx, sql.UntypedSqlRow{}) require.Error(err) } @@ -79,9 +79,9 @@ func TestSubqueryMultipleRows(t *testing.T) { {Name: "t", Source: "foo", Type: types.Text}, }), nil) - require.NoError(table.Insert(ctx, sql.Row{"one"})) - require.NoError(table.Insert(ctx, sql.Row{"two"})) - require.NoError(table.Insert(ctx, sql.Row{"three"})) + require.NoError(table.Insert(ctx, sql.UntypedSqlRow{"one"})) + require.NoError(table.Insert(ctx, sql.UntypedSqlRow{"two"})) + require.NoError(table.Insert(ctx, sql.UntypedSqlRow{"three"})) subquery := plan.NewSubquery(plan.NewProject( []sql.Expression{ @@ -90,7 +90,7 @@ func TestSubqueryMultipleRows(t *testing.T) { plan.NewResolvedTable(table, nil, nil), ), "select t from foo").WithExecBuilder(DefaultBuilder) - values, err := subquery.EvalMultiple(ctx, nil) + values, err := subquery.EvalMultiple(ctx, sql.UntypedSqlRow{}) require.NoError(err) require.Equal(values, []interface{}{"one", "two", "three"}) } diff --git a/sql/rowexec/tablealias_test.go b/sql/rowexec/tablealias_test.go index 7521a82ee3..5856a5371b 100644 --- a/sql/rowexec/tablealias_test.go +++ b/sql/rowexec/tablealias_test.go @@ -39,10 +39,10 @@ func TestTableAlias(t *testing.T) { }), nil) alias := plan.NewTableAlias("foo", plan.NewResolvedTable(table, nil, nil)) - var rows = []sql.Row{ - sql.NewRow("1", "2"), - sql.NewRow("3", "4"), - sql.NewRow("5", "6"), + var rows = []sql.UntypedSqlRow{ + {"1", "2"}, + {"3", "4"}, + {"5", "6"}, } for _, r := range rows { diff --git a/sql/rowexec/union_test.go b/sql/rowexec/union_test.go index 91252996dd..f734c17346 100644 --- a/sql/rowexec/union_test.go +++ b/sql/rowexec/union_test.go @@ -41,12 +41,12 @@ func TestUnion(t *testing.T) { child := memory.NewTable(db, "test", childSchema, nil) empty := memory.NewTable(db, "empty", childSchema, nil) - rows := []sql.Row{ - sql.NewRow("john", "john@doe.com"), - sql.NewRow("jane", "jane@doe.com"), - sql.NewRow("john", "johnx@doe.com"), - sql.NewRow("martha", "marthax@doe.com"), - sql.NewRow("martha", "martha@doe.com"), + rows := []sql.UntypedSqlRow{ + {"john", "john@doe.com"}, + {"jane", "jane@doe.com"}, + {"john", "johnx@doe.com"}, + {"martha", "marthax@doe.com"}, + {"martha", "martha@doe.com"}, } for _, r := range rows { @@ -94,8 +94,8 @@ func TestUnion(t *testing.T) { break } require.NoError(err) - result, ok := row[0].(string) - require.True(ok, "first row column should be string, but is %T", row[0]) + result, ok := row.GetValue(0).(string) + require.True(ok, "first row column should be string, but is %T", row.GetValue(0)) results = append(results, result) } diff --git a/sql/rowexec/update.go b/sql/rowexec/update.go index c61c0d929d..88bed67cb0 100644 --- a/sql/rowexec/update.go +++ b/sql/rowexec/update.go @@ -37,7 +37,8 @@ func (u *updateIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - oldRow, newRow := oldAndNewRow[:len(oldAndNewRow)/2], oldAndNewRow[len(oldAndNewRow)/2:] + oldRow := oldAndNewRow.Subslice(0, oldAndNewRow.Len()/2) + newRow := oldAndNewRow.Subslice(oldAndNewRow.Len()/2, oldAndNewRow.Len()) if equals, err := oldRow.Equals(newRow, u.schema); err == nil { if !equals { // apply check constraints @@ -96,7 +97,7 @@ func applyUpdateExpressionsWithIgnore(ctx *sql.Context, updateExprs []sql.Expres } cpy := row.Copy() - cpy[wtce.OffendingIdx] = wtce.OffendingVal // Needed for strings + cpy.SetValue(wtce.OffendingIdx, wtce.OffendingVal) // Needed for strings val = convertDataAndWarn(ctx, tableSchema, cpy, wtce.OffendingIdx, wtce.Err) } var ok bool @@ -123,12 +124,12 @@ func applyUpdateExpressionsWithIgnore(ctx *sql.Context, updateExprs []sql.Expres } func (u *updateIter) validateNullability(ctx *sql.Context, row sql.Row, schema sql.Schema) error { - for idx := 0; idx < len(row); idx++ { + for idx := 0; idx < row.Len(); idx++ { col := schema[idx] - if !col.Nullable && row[idx] == nil { + if !col.Nullable && row.GetValue(idx) == nil { // In the case of an IGNORE we set the nil value to a default and add a warning if u.ignore { - row[idx] = col.Type.Zero() + row.SetValue(idx, col.Type.Zero()) _ = warnOnIgnorableError(ctx, row, sql.ErrInsertIntoNonNullableProvidedNull.New(col.Name)) // will always return nil } else { return sql.ErrInsertIntoNonNullableProvidedNull.New(col.Name) @@ -204,7 +205,8 @@ func (u *updateJoinIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - oldJoinRow, newJoinRow := oldAndNewRow[:len(oldAndNewRow)/2], oldAndNewRow[len(oldAndNewRow)/2:] + oldJoinRow := oldAndNewRow.Subslice(0, oldAndNewRow.Len()/2) + newJoinRow := oldAndNewRow.Subslice(oldAndNewRow.Len()/2, oldAndNewRow.Len()) tableToOldRowMap := plan.SplitRowIntoTableRowMap(oldJoinRow, u.joinSchema) tableToNewRowMap := plan.SplitRowIntoTableRowMap(newJoinRow, u.joinSchema) @@ -256,7 +258,7 @@ func (u *updateJoinIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } if !equals { - return append(oldJoinRow, newJoinRow...), nil + return oldJoinRow.Append(newJoinRow), nil } } } @@ -329,7 +331,7 @@ func (u *updateJoinIter) shouldUpdateDirectionalJoin(ctx *sql.Context, joinRow, return true, nil } - for _, v := range tableRow { + for _, v := range tableRow.Values() { if v != nil { return true, nil } @@ -362,20 +364,20 @@ func (u *updateJoinIter) getOrCreateCache(ctx *sql.Context, tableName string) sq // recreateRowFromMap takes a join schema and row map and recreates the original join row. func recreateRowFromMap(rowMap map[string]sql.Row, joinSchema sql.Schema) sql.Row { - var ret sql.Row + var ret sql.Row = sql.UntypedSqlRow{} if len(joinSchema) == 0 { return ret } currentTable := joinSchema[0].Source - ret = append(ret, rowMap[currentTable]...) + ret = ret.Append(rowMap[currentTable]) for i := 1; i < len(joinSchema); i++ { c := joinSchema[i] if c.Source != currentTable { - ret = append(ret, rowMap[c.Source]...) + ret = ret.Append(rowMap[c.Source]) currentTable = c.Source } } diff --git a/sql/rowexec/update_test.go b/sql/rowexec/update_test.go index 363846675a..c10c3b9c82 100644 --- a/sql/rowexec/update_test.go +++ b/sql/rowexec/update_test.go @@ -77,7 +77,7 @@ func TestUpdateIgnoreConversions(t *testing.T) { }) table := memory.NewTable(db, "foo", sch, nil) - err := table.Insert(ctx, sql.Row{nil}) + err := table.Insert(ctx, sql.UntypedSqlRow{nil}) require.NoError(t, err) // Run the UPDATE IGNORE @@ -102,7 +102,7 @@ func TestUpdateIgnoreConversions(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, len(rows)) - require.Equal(t, tc.expected, rows[0][0]) + require.Equal(t, tc.expected, rows[0].GetValue(0)) }) } } diff --git a/sql/rows.go b/sql/rows.go index a01757ce05..fab3d7e9a9 100644 --- a/sql/rows.go +++ b/sql/rows.go @@ -25,38 +25,170 @@ import ( ) // Row is a tuple of values. -type Row []interface{} +type Row interface { + GetValue(i int) interface{} + GetBytes() []byte + SetValue(i int, v interface{}) + SetBytes(i int, v []byte) + GetType(i int) + Values() []interface{} + Copy() Row + Len() int + Subslice(i, j int) Row + Append(Row) Row + Equals(row Row, schema Schema) (bool, error) +} -// NewRow creates a row from the given values. -func NewRow(values ...interface{}) Row { +type SqlRow struct { + values []interface{} + types []Type +} + +func NewSqlRowWithLen(l int) Row { + return make(UntypedSqlRow, l) +} + +func NewSqlRow(values ...interface{}) *SqlRow { row := make([]interface{}, len(values)) copy(row, values) - return row + return &SqlRow{values: row} +} + +var _ Row = (*SqlRow)(nil) + +func (r *SqlRow) Subslice(i, j int) Row { + return &SqlRow{values: r.values[i:j]} +} + +func (r *SqlRow) Len() int { + return len(r.values) +} + +func (r *SqlRow) Copy() Row { + return NewSqlRow(r.values...) +} + +func (r *SqlRow) Append(r2 Row) Row { + row := make([]interface{}, r.Len()+r2.Len()) + copy(row, r.values) + for i := range r2.Values() { + row[i+r.Len()] = r2.GetValue(i) + } + return &SqlRow{values: row} +} + +func (r *SqlRow) Equals(row Row, schema Schema) (bool, error) { + if row.Len() != r.Len() || row.Len() != len(schema) { + return false, nil + } + + for i, colLeft := range r.Values() { + colRight := row.GetValue(i) + cmp, err := schema[i].Type.Compare(colLeft, colRight) + if err != nil { + return false, err + } + if cmp != 0 { + return false, nil + } + } + + return true, nil +} + +func (r *SqlRow) GetValue(i int) interface{} { + return r.values[i] +} + +func (r *SqlRow) GetBytes() []byte { + //TODO implement me + panic("implement me") } -// Copy creates a new row with the same values as the current one. -func (r Row) Copy() Row { - return NewRow(r...) +func (r *SqlRow) SetValue(i int, v interface{}) { + r.values[i] = v } -// Append appends all the values in r2 to this row and returns the result -func (r Row) Append(r2 Row) Row { - row := make(Row, len(r)+len(r2)) - copy(row, r) - for i := range r2 { - row[i+len(r)] = r2[i] +func (r *SqlRow) SetBytes(i int, v []byte) { + //TODO implement me + panic("implement me") +} + +func (r *SqlRow) GetType(i int) { + //TODO implement me + panic("implement me") +} + +func (r *SqlRow) Values() []interface{} { + return r.values +} + +// NewRow creates a row from the given values. +func NewRow(values ...interface{}) Row { + return NewSqlRow(values...) +} + +func NewUntypedRow(v ...interface{}) Row { + return UntypedSqlRow(v) +} + +type UntypedSqlRow []interface{} + +func (r UntypedSqlRow) Append(row Row) Row { + if row == nil || row.Len() == 0 { + return r } - return row + return append(r, row.Values()...) +} + +func (r UntypedSqlRow) GetValue(i int) interface{} { + return r[i] +} + +func (r UntypedSqlRow) GetBytes() []byte { + //TODO implement me + panic("implement me") +} + +func (r UntypedSqlRow) SetValue(i int, v interface{}) { + r[i] = v +} + +func (r UntypedSqlRow) SetBytes(i int, v []byte) { + //TODO implement me + panic("implement me") +} + +func (r UntypedSqlRow) GetType(i int) { + //TODO implement me + panic("implement me") +} + +func (r UntypedSqlRow) Values() []interface{} { + return r +} + +func (r UntypedSqlRow) Copy() Row { + cp := make([]interface{}, len(r)) + copy(cp, r) + return UntypedSqlRow(cp) } -// Equals checks whether two rows are equal given a schema. -func (r Row) Equals(row Row, schema Schema) (bool, error) { - if len(row) != len(r) || len(row) != len(schema) { +func (r UntypedSqlRow) Len() int { + return len(r) +} + +func (r UntypedSqlRow) Subslice(i, j int) Row { + return r[i:j] +} + +func (r UntypedSqlRow) Equals(row Row, schema Schema) (bool, error) { + if row.Len() != r.Len() || row.Len() != len(schema) { return false, nil } - for i, colLeft := range r { - colRight := row[i] + for i, colLeft := range r.Values() { + colRight := row.GetValue(i) cmp, err := schema[i].Type.Compare(colLeft, colRight) if err != nil { return false, err @@ -69,11 +201,13 @@ func (r Row) Equals(row Row, schema Schema) (bool, error) { return true, nil } +var _ Row = UntypedSqlRow{} + // FormatRow returns a formatted string representing this row's values func FormatRow(row Row) string { var sb strings.Builder sb.WriteRune('[') - for i, v := range row { + for i, v := range row.Values() { if i > 0 { sb.WriteRune(',') } @@ -113,7 +247,7 @@ func RowIterToRows(ctx *Context, i RowIter) ([]Row, error) { } func rowFromRow2(sch Schema, r Row2) Row { - row := make(Row, len(sch)) + row := make([]interface{}, len(sch)) for i, col := range sch { switch col.Type.Type() { case query.Type_INT8: @@ -174,7 +308,7 @@ func rowFromRow2(sch Schema, r Row2) Row { panic(fmt.Sprintf("unknown type %T", col.Type)) } } - return row + return NewSqlRow(row...) } // RowsToRowIter creates a RowIter that iterates over the given rows. @@ -209,3 +343,15 @@ type MutableRowIter interface { GetChildIter() RowIter WithChildIter(childIter RowIter) RowIter } + +func RowsToUntyped(rows []Row) []UntypedSqlRow { + var dest []UntypedSqlRow + for _, r := range rows { + if ur, ok := r.(UntypedSqlRow); ok { + dest = append(dest, ur) + } else { + dest = append(dest, NewUntypedRow(r.Values()...).(UntypedSqlRow)) + } + } + return dest +} diff --git a/sql/schemas.go b/sql/schemas.go index 78fa4b3f8b..7b29fe3fe9 100644 --- a/sql/schemas.go +++ b/sql/schemas.go @@ -35,13 +35,13 @@ type Schema []*Column // CheckRow checks the row conforms to the schema. func (s Schema) CheckRow(row Row) error { expected := len(s) - got := len(row) + got := row.Len() if expected != got { return ErrUnexpectedRowLength.New(expected, got) } for idx, f := range s { - v := row[idx] + v := row.GetValue(idx) if f.Check(v) { continue } diff --git a/sql/sqlfmt.go b/sql/sqlfmt.go index 13117a4b51..9a1f4d88c6 100644 --- a/sql/sqlfmt.go +++ b/sql/sqlfmt.go @@ -102,7 +102,7 @@ func GenerateCreateTablePrimaryKeyDefinition(pkCols []string) string { // GenerateCreateTableIndexDefinition returns index definition string for 'CREATE TABLE' statement // for given index. This part comes after primary key definition if there is any. -func GenerateCreateTableIndexDefinition(isUnique, isSpatial, isFullText, isVector bool, indexID string, indexCols []string, comment string) string { +func GenerateCreateTableIndexDefinition(isUnique, isSpatial, isFullText bool, indexID string, indexCols []string, comment string) string { unique := "" if isUnique { unique = "UNIQUE " @@ -117,13 +117,7 @@ func GenerateCreateTableIndexDefinition(isUnique, isSpatial, isFullText, isVecto if isFullText { fulltext = "FULLTEXT " } - - vector := "" - if isVector { - vector = "VECTOR " - } - - key := fmt.Sprintf(" %s%s%s%sKEY %s (%s)", unique, spatial, fulltext, vector, QuoteIdentifier(indexID), strings.Join(indexCols, ",")) + key := fmt.Sprintf(" %s%s%sKEY %s (%s)", unique, spatial, fulltext, QuoteIdentifier(indexID), strings.Join(indexCols, ",")) if comment != "" { key = fmt.Sprintf("%s COMMENT '%s'", key, comment) } diff --git a/sql/statistics.go b/sql/statistics.go index fef5b6f27b..1b453532e4 100644 --- a/sql/statistics.go +++ b/sql/statistics.go @@ -174,16 +174,10 @@ func (h Histogram) Clone(context.Context) JSONWrapper { func (h Histogram) ToInterface() (interface{}, error) { ret := make([]interface{}, len(h)) for i, b := range h { - var upperBound Row - for _, v := range b.UpperBound() { - upperBound = append(upperBound, v) - } + upperBound := b.UpperBound().Copy() mcvs := make([]Row, len(b.Mcvs())) for i, mcv := range b.Mcvs() { - var row Row - for _, v := range mcv { - row = append(row, v) - } + row := mcv.Copy() mcvs[i] = row } ret[i] = map[string]interface{}{ @@ -206,7 +200,7 @@ func (h Histogram) DebugString() string { for _, bucket := range h { cnt := int(bucket.RowCount()) var key []string - for _, v := range bucket.UpperBound() { + for _, v := range bucket.UpperBound().Values() { key = append(key, fmt.Sprintf("%v", v)) } bounds = append(bounds, strings.Join(key, ",")) diff --git a/sql/stats/distributions.go b/sql/stats/distributions.go index 8a5b4fc697..fb690174be 100644 --- a/sql/stats/distributions.go +++ b/sql/stats/distributions.go @@ -44,7 +44,7 @@ func (d *normDistIter) Next(*sql.Context) (sql.Row, error) { return nil, io.EOF } d.i++ - var ret sql.Row + var ret sql.UntypedSqlRow ret = append(ret, d.i) for i := 0; i < d.cols; i++ { val := rand.NormFloat64()*d.std + d.mean @@ -74,7 +74,7 @@ func (d *expDistIter) Next(*sql.Context) (sql.Row, error) { return nil, io.EOF } d.i++ - var ret sql.Row + var ret sql.UntypedSqlRow ret = append(ret, d.i) for i := 0; i < d.cols; i++ { val := -math.Log2(rand.NormFloat64()) / d.lambda diff --git a/sql/stats/filter.go b/sql/stats/filter.go index 83526748b5..cc807ada20 100644 --- a/sql/stats/filter.go +++ b/sql/stats/filter.go @@ -26,15 +26,15 @@ func Union(b1, b2 []sql.HistogramBucket, types []sql.Type) ([]sql.HistogramBucke for i < len(b1) && j < len(b2) { key1 := b1[i].UpperBound() key2 := b2[j].UpperBound() - for k := range key1 { + for k := range key1.Values() { t := types[k] - cmp, err := nilSafeCmp(t, key1[k], key2[k]) + cmp, err := nilSafeCmp(t, key1.GetValue(k), key2.GetValue(k)) if err != nil { return nil, err } switch cmp { case 0: - if k == len(key1)-1 { + if k == key1.Len()-1 { ret = append(ret, b1[i]) i++ j++ @@ -72,15 +72,15 @@ func Intersect(b1, b2 []sql.HistogramBucket, types []sql.Type) ([]sql.HistogramB for i < len(b1) && j < len(b2) { key1 := b1[i].UpperBound() key2 := b2[j].UpperBound() - for k := range key1 { + for k := 0; k < key1.Len(); k++ { t := types[k] - cmp, err := nilSafeCmp(t, key1[k], key2[k]) + cmp, err := nilSafeCmp(t, key1.GetValue(k), key2.GetValue(k)) if err != nil { return nil, err } switch cmp { case 0: - if k == len(key1)-1 { + if k == key1.Len()-1 { ret = append(ret, b1[i]) i++ j++ @@ -105,7 +105,7 @@ func PrefixKey(buckets []sql.HistogramBucket, types []sql.Type, key []interface{ bucketKey := buckets[i].UpperBound() for i, _ := range key { t := types[i] - cmp, err := nilSafeCmp(t, bucketKey[i], key[i]) + cmp, err := nilSafeCmp(t, bucketKey.GetValue(i), key[i]) if err != nil { searchErr = err } @@ -129,7 +129,7 @@ func PrefixKey(buckets []sql.HistogramBucket, types []sql.Type, key []interface{ equals := true var err error for equals && upperBucket < len(buckets) { - equals, err = keysEqual(types, buckets[upperBucket].UpperBound(), key) + equals, err = keysEqual(types, buckets[upperBucket].UpperBound().Values(), key) if err != nil { return nil, err } @@ -200,8 +200,8 @@ func keysEqual(types []sql.Type, left, right []interface{}) (bool, error) { func PrefixLt(buckets []sql.HistogramBucket, types []sql.Type, val interface{}) ([]sql.HistogramBucket, error) { // first bucket whose upper bound is greater than val - idx, err := PrefixLtHist(buckets, sql.Row{val}, func(i, j sql.Row) (int, error) { - return nilSafeCmp(types[0], i[0], j[0]) + idx, err := PrefixLtHist(buckets, sql.UntypedSqlRow{val}, func(i, j sql.Row) (int, error) { + return nilSafeCmp(types[0], i.GetValue(0), j.GetValue(0)) }) if err != nil { return nil, err @@ -212,8 +212,8 @@ func PrefixLt(buckets []sql.HistogramBucket, types []sql.Type, val interface{}) } func PrefixGt(buckets []sql.HistogramBucket, types []sql.Type, val interface{}) ([]sql.HistogramBucket, error) { - idx, err := PrefixGtHist(buckets, sql.Row{val}, func(i, j sql.Row) (int, error) { - return nilSafeCmp(types[0], i[0], j[0]) + idx, err := PrefixGtHist(buckets, sql.UntypedSqlRow{val}, func(i, j sql.Row) (int, error) { + return nilSafeCmp(types[0], i.GetValue(0), j.GetValue(0)) }) if err != nil { return nil, err @@ -228,8 +228,8 @@ func PrefixGt(buckets []sql.HistogramBucket, types []sql.Type, val interface{}) func PrefixLte(buckets []sql.HistogramBucket, types []sql.Type, val interface{}) ([]sql.HistogramBucket, error) { // first bucket whose upper bound is greater than val - idx, err := PrefixLteHist(buckets, sql.Row{val}, func(i, j sql.Row) (int, error) { - return nilSafeCmp(types[0], i[0], j[0]) + idx, err := PrefixLteHist(buckets, sql.UntypedSqlRow{val}, func(i, j sql.Row) (int, error) { + return nilSafeCmp(types[0], i.GetValue(0), j.GetValue(0)) }) if err != nil { return nil, err @@ -297,8 +297,8 @@ func PrefixGteHist(h []sql.HistogramBucket, target sql.Row, cmp func(sql.Row, sq } func PrefixGte(buckets []sql.HistogramBucket, types []sql.Type, val interface{}) ([]sql.HistogramBucket, error) { - idx, err := PrefixGteHist(buckets, sql.Row{val}, func(i, j sql.Row) (int, error) { - return nilSafeCmp(types[0], i[0], j[0]) + idx, err := PrefixGteHist(buckets, sql.UntypedSqlRow{val}, func(i, j sql.Row) (int, error) { + return nilSafeCmp(types[0], i.GetValue(0), j.GetValue(0)) }) if err != nil { return nil, err @@ -316,7 +316,7 @@ func PrefixIsNull(buckets []sql.HistogramBucket) ([]sql.HistogramBucket, error) idx := sort.Search(len(buckets), func(i int) bool { // lowest index that func is true bucketKey := buckets[i].UpperBound() - return bucketKey[0] != nil + return bucketKey.GetValue(0) != nil }) if searchErr != nil { return nil, searchErr @@ -331,7 +331,7 @@ func PrefixIsNotNull(buckets []sql.HistogramBucket) ([]sql.HistogramBucket, erro idx := sort.Search(len(buckets), func(i int) bool { // lowest index that func is true bucketKey := buckets[i].UpperBound() - return bucketKey[0] != nil + return bucketKey.GetValue(0) != nil }) if searchErr != nil { diff --git a/sql/stats/filter_test.go b/sql/stats/filter_test.go index ba840733e3..a73ad25819 100644 --- a/sql/stats/filter_test.go +++ b/sql/stats/filter_test.go @@ -29,26 +29,26 @@ var xFds = sql.NewTablescanFDs(sql.NewColSet(1, 2, 3), []sql.ColSet{sql.NewColSe // NULL, 0,5,10,15,20, 5 row buckets of duplicates, two buckets for each value var x1Stat = &Statistic{Hist: buckets_x_1, Typs: []sql.Type{types.Int64}, Fds: xFds, Colset: sql.NewColSet(1)} var buckets_x_1 = sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{5}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{5}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{10}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{10}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{15}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{15}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{20}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{20}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{5}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{5}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{15}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{15}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 5}, } // staggered buckets, 2 vals per, half is last bound half is current bound var x2Stat = &Statistic{Hist: buckets_x_2, Typs: []sql.Type{types.Int64}, Fds: xFds, Colset: sql.NewColSet(1)} var buckets_x_2 = sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 3, BoundVal: []interface{}{5}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{10}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{15}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{20}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 3, BoundVal: sql.UntypedSqlRow{5}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{15}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 2}, } var xyFds = sql.NewTablescanFDs(sql.NewColSet(1, 2, 3), []sql.ColSet{sql.NewColSet(1, 2)}, nil, sql.NewColSet(1, 2, 3)) @@ -56,34 +56,34 @@ var xyFds = sql.NewTablescanFDs(sql.NewColSet(1, 2, 3), []sql.ColSet{sql.NewColS var xy1Stat = &Statistic{Hist: buckets_xy_1, Typs: []sql.Type{types.Int64, types.Int64}, Fds: xyFds, Colset: sql.NewColSet(1, 2)} var buckets_xy_1 = sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, 1}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, 1}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, 4}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, 4}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{1, nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{1, nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{1, 1}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{1, 1}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{1, 3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{3, 3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{3, 3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{4, 3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: []interface{}{4, 3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, 1}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, 1}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, 4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, 4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{1, nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{1, nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{1, 1}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{1, 1}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{1, 3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{3, 3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{3, 3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{4, 3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 0, BoundVal: sql.UntypedSqlRow{4, 3}, BoundCnt: 5}, } var xy2Stat = &Statistic{Hist: buckets_xy_2, Typs: []sql.Type{types.Int64, types.Int64}, Fds: xyFds, Colset: sql.NewColSet(1, 2)} var buckets_xy_2 = sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: []interface{}{nil, nil}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 5, BoundVal: []interface{}{nil, 1}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 5, BoundVal: []interface{}{nil, 4}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 5, BoundVal: []interface{}{1, nil}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{1, 1}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{1, 3}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{2, 3}, BoundCnt: 2}, - &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: []interface{}{3, 3}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 1, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, nil}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, 1}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 5, BoundVal: sql.UntypedSqlRow{nil, 4}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 5, BoundVal: sql.UntypedSqlRow{1, nil}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{1, 1}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{1, 3}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{2, 3}, BoundCnt: 2}, + &Bucket{RowCnt: 5, DistinctCnt: 2, NullCnt: 0, BoundVal: sql.UntypedSqlRow{3, 3}, BoundCnt: 2}, } func TestPrefixKey(t *testing.T) { @@ -99,7 +99,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_1 nil key", statistic: x1Stat, - pref: []interface{}{nil}, + pref: sql.UntypedSqlRow{nil}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -108,7 +108,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_1 (2) key", statistic: x1Stat, - pref: []interface{}{2}, + pref: sql.UntypedSqlRow{2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -117,7 +117,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_1 (5) key", statistic: x1Stat, - pref: []interface{}{5}, + pref: sql.UntypedSqlRow{5}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -126,7 +126,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_1 (6) key", statistic: x1Stat, - pref: []interface{}{6}, + pref: sql.UntypedSqlRow{6}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -135,7 +135,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_1 (20) key", statistic: x1Stat, - pref: []interface{}{20}, + pref: sql.UntypedSqlRow{20}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(2), @@ -144,7 +144,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_1 (21) key", statistic: x1Stat, - pref: []interface{}{21}, + pref: sql.UntypedSqlRow{21}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -154,7 +154,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_2 (nil) key", statistic: x2Stat, - pref: []interface{}{nil}, + pref: sql.UntypedSqlRow{nil}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(3), @@ -163,7 +163,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_2 (2) key", statistic: x2Stat, - pref: []interface{}{2}, + pref: sql.UntypedSqlRow{2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -172,7 +172,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_2 (5) key", statistic: x2Stat, - pref: []interface{}{5}, + pref: sql.UntypedSqlRow{5}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -181,7 +181,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_2 (6) key", statistic: x2Stat, - pref: []interface{}{6}, + pref: sql.UntypedSqlRow{6}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -190,7 +190,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_2 (20) key", statistic: x2Stat, - pref: []interface{}{20}, + pref: sql.UntypedSqlRow{20}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -199,7 +199,7 @@ func TestPrefixKey(t *testing.T) { { name: "x_2 (21) key", statistic: x2Stat, - pref: []interface{}{21}, + pref: sql.UntypedSqlRow{21}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -209,7 +209,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 nil key", statistic: xy1Stat, - pref: []interface{}{nil}, + pref: sql.UntypedSqlRow{nil}, expBuckets: 7, expRowCount: uint64(35), expDistinctCount: uint64(7), @@ -218,7 +218,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (1) key", statistic: xy1Stat, - pref: []interface{}{1}, + pref: sql.UntypedSqlRow{1}, expBuckets: 6, expRowCount: uint64(30), expDistinctCount: uint64(6), @@ -227,7 +227,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (2) key", statistic: xy1Stat, - pref: []interface{}{2}, + pref: sql.UntypedSqlRow{2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -236,7 +236,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (4) key", statistic: xy1Stat, - pref: []interface{}{4}, + pref: sql.UntypedSqlRow{4}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(2), @@ -245,7 +245,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (6) key", statistic: xy1Stat, - pref: []interface{}{5}, + pref: sql.UntypedSqlRow{5}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -255,7 +255,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (nil,nil) key", statistic: xy1Stat, - pref: []interface{}{nil, nil}, + pref: sql.UntypedSqlRow{nil, nil}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -264,7 +264,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (nil,1) key", statistic: xy1Stat, - pref: []interface{}{nil, 1}, + pref: sql.UntypedSqlRow{nil, 1}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -273,7 +273,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (nil,2) key", statistic: xy1Stat, - pref: []interface{}{nil, 2}, + pref: sql.UntypedSqlRow{nil, 2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -282,7 +282,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (0,nil) key", statistic: xy1Stat, - pref: []interface{}{0, nil}, + pref: sql.UntypedSqlRow{0, nil}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -291,7 +291,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (1,nil) key", statistic: xy1Stat, - pref: []interface{}{1, nil}, + pref: sql.UntypedSqlRow{1, nil}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -300,7 +300,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (1,1) key", statistic: xy1Stat, - pref: []interface{}{1, 1}, + pref: sql.UntypedSqlRow{1, 1}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -309,7 +309,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (1,2) key", statistic: xy1Stat, - pref: []interface{}{1, 2}, + pref: sql.UntypedSqlRow{1, 2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -318,7 +318,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (1,3) key", statistic: xy1Stat, - pref: []interface{}{1, 3}, + pref: sql.UntypedSqlRow{1, 3}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(2), @@ -327,7 +327,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (2,nil) key", statistic: xy1Stat, - pref: []interface{}{2, nil}, + pref: sql.UntypedSqlRow{2, nil}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -336,7 +336,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (2,2) key", statistic: xy1Stat, - pref: []interface{}{2, 2}, + pref: sql.UntypedSqlRow{2, 2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -345,7 +345,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (2,3) key", statistic: xy1Stat, - pref: []interface{}{2, 3}, + pref: sql.UntypedSqlRow{2, 3}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -354,7 +354,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (3,3) key", statistic: xy1Stat, - pref: []interface{}{3, 3}, + pref: sql.UntypedSqlRow{3, 3}, expBuckets: 3, expRowCount: uint64(15), expDistinctCount: uint64(3), @@ -363,7 +363,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (3,4) key", statistic: xy1Stat, - pref: []interface{}{3, 4}, + pref: sql.UntypedSqlRow{3, 4}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(1), @@ -372,7 +372,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (4,3) key", statistic: xy1Stat, - pref: []interface{}{4, 3}, + pref: sql.UntypedSqlRow{4, 3}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(2), @@ -381,7 +381,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_1 (4,4) key", statistic: xy1Stat, - pref: []interface{}{4, 4}, + pref: sql.UntypedSqlRow{4, 4}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -391,7 +391,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 nil key", statistic: xy2Stat, - pref: []interface{}{nil}, + pref: sql.UntypedSqlRow{nil}, expBuckets: 4, expRowCount: uint64(20), expDistinctCount: uint64(7), @@ -400,7 +400,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (2) key", statistic: xy2Stat, - pref: []interface{}{2}, + pref: sql.UntypedSqlRow{2}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -409,7 +409,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (3) key", statistic: xy2Stat, - pref: []interface{}{3}, + pref: sql.UntypedSqlRow{3}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -418,7 +418,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (5) key", statistic: xy2Stat, - pref: []interface{}{5}, + pref: sql.UntypedSqlRow{5}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -428,7 +428,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (nil,nil) key", statistic: xy2Stat, - pref: []interface{}{nil, nil}, + pref: sql.UntypedSqlRow{nil, nil}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(3), @@ -437,7 +437,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (nil,1) key", statistic: xy2Stat, - pref: []interface{}{nil, 1}, + pref: sql.UntypedSqlRow{nil, 1}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -446,7 +446,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (nil,2) key", statistic: xy2Stat, - pref: []interface{}{nil, 2}, + pref: sql.UntypedSqlRow{nil, 2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -455,7 +455,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (0,nil) key", statistic: xy2Stat, - pref: []interface{}{0, nil}, + pref: sql.UntypedSqlRow{0, nil}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -464,7 +464,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (1,nil) key", statistic: xy2Stat, - pref: []interface{}{1, nil}, + pref: sql.UntypedSqlRow{1, nil}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -473,7 +473,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (1,1) key", statistic: xy2Stat, - pref: []interface{}{1, 1}, + pref: sql.UntypedSqlRow{1, 1}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -482,7 +482,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (1,2) key", statistic: xy2Stat, - pref: []interface{}{1, 2}, + pref: sql.UntypedSqlRow{1, 2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -491,7 +491,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (1,3) key", statistic: xy2Stat, - pref: []interface{}{1, 3}, + pref: sql.UntypedSqlRow{1, 3}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -500,7 +500,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (2,nil) key", statistic: xy2Stat, - pref: []interface{}{2, nil}, + pref: sql.UntypedSqlRow{2, nil}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -509,7 +509,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (2,2) key", statistic: xy2Stat, - pref: []interface{}{2, 2}, + pref: sql.UntypedSqlRow{2, 2}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -518,7 +518,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (2,3) key", statistic: xy2Stat, - pref: []interface{}{2, 3}, + pref: sql.UntypedSqlRow{2, 3}, expBuckets: 2, expRowCount: uint64(10), expDistinctCount: uint64(4), @@ -527,7 +527,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (3,3) key", statistic: xy2Stat, - pref: []interface{}{3, 3}, + pref: sql.UntypedSqlRow{3, 3}, expBuckets: 1, expRowCount: uint64(5), expDistinctCount: uint64(2), @@ -536,7 +536,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (3,4) key", statistic: xy2Stat, - pref: []interface{}{3, 4}, + pref: sql.UntypedSqlRow{3, 4}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -545,7 +545,7 @@ func TestPrefixKey(t *testing.T) { { name: "xy_2 (4,3) key", statistic: xy2Stat, - pref: []interface{}{4, 3}, + pref: sql.UntypedSqlRow{4, 3}, expBuckets: 0, expRowCount: uint64(0), expDistinctCount: uint64(0), @@ -569,10 +569,10 @@ func TestPrefixKey(t *testing.T) { } } -func collectBounds(s []sql.HistogramBucket) [][]interface{} { - var bounds [][]interface{} +func collectBounds(s []sql.HistogramBucket) []sql.UntypedSqlRow { + var bounds []sql.UntypedSqlRow for _, b := range s { - bounds = append(bounds, b.UpperBound()) + bounds = append(bounds, b.UpperBound().(sql.UntypedSqlRow)) } return bounds } @@ -580,20 +580,20 @@ func collectBounds(s []sql.HistogramBucket) [][]interface{} { // TODO these will use the same tests as above, just with different expected values func TestPrefixIsNull(t *testing.T) { tests := []struct { - vals [][]interface{} + vals []sql.UntypedSqlRow key []interface{} expLower int expUpper int typs []sql.Type }{ { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, expLower: 0, expUpper: 1, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, expLower: 0, expUpper: 3, typs: []sql.Type{types.Int64}, @@ -622,20 +622,20 @@ func TestPrefixIsNull(t *testing.T) { func TestPrefixIsNotNull(t *testing.T) { tests := []struct { - vals [][]interface{} + vals []sql.UntypedSqlRow key []interface{} expLower int expUpper int typs []sql.Type }{ { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, expLower: 1, expUpper: 4, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, expLower: 3, expUpper: 6, typs: []sql.Type{types.Int64}, @@ -666,35 +666,35 @@ func TestPrefixIsNotNull(t *testing.T) { func TestPrefixGt(t *testing.T) { tests := []struct { - vals [][]interface{} + vals []sql.UntypedSqlRow key interface{} expLower int expUpper int typs []sql.Type }{ { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, key: 2, expLower: 2, expUpper: 4, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: nil, expLower: 3, expUpper: 6, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 3, expLower: 5, expUpper: 6, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 4, expLower: 6, expUpper: 6, @@ -725,35 +725,35 @@ func TestPrefixGt(t *testing.T) { func TestPrefixGte(t *testing.T) { tests := []struct { - vals [][]interface{} + vals []sql.UntypedSqlRow key interface{} expLower int expUpper int typs []sql.Type }{ { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, key: 2, expLower: 1, expUpper: 4, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 3, expLower: 4, expUpper: 6, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 4, expLower: 5, expUpper: 6, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 5, expLower: 6, expUpper: 6, @@ -784,49 +784,49 @@ func TestPrefixGte(t *testing.T) { func TestPrefixLt(t *testing.T) { tests := []struct { - vals [][]interface{} + vals []sql.UntypedSqlRow key interface{} expLower int expUpper int typs []sql.Type }{ { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, key: 2, expLower: 1, expUpper: 1, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, key: nil, expLower: 1, expUpper: 1, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{2}, {3}, {4}}, key: 2, expLower: 0, expUpper: 0, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 3, expLower: 3, expUpper: 4, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 4, expLower: 3, expUpper: 5, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 5, expLower: 3, expUpper: 6, @@ -858,49 +858,49 @@ func TestPrefixLt(t *testing.T) { func TestPrefixLte(t *testing.T) { tests := []struct { - vals [][]interface{} + vals []sql.UntypedSqlRow key interface{} expLower int expUpper int typs []sql.Type }{ { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, key: 2, expLower: 1, expUpper: 2, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {2}, {3}, {4}}, key: nil, expLower: 1, expUpper: 1, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{2}, {3}, {4}}, key: 2, expLower: 0, expUpper: 1, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 3, expLower: 3, expUpper: 5, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 4, expLower: 3, expUpper: 6, typs: []sql.Type{types.Int64}, }, { - vals: [][]interface{}{{nil}, {nil}, {nil}, {2}, {3}, {4}}, + vals: []sql.UntypedSqlRow{{nil}, {nil}, {nil}, {2}, {3}, {4}}, key: 5, expLower: 3, expUpper: 6, diff --git a/sql/stats/iter.go b/sql/stats/iter.go index 1123b2db0d..09403d12ef 100644 --- a/sql/stats/iter.go +++ b/sql/stats/iter.go @@ -107,7 +107,7 @@ func (s *statsIter) bucketToRow(i int, bucket sql.HistogramBucket) (sql.Row, err mcvs[i] = StringifyKey(mcv, s.types) } - return sql.Row{ + return sql.UntypedSqlRow{ s.qual.Db(), s.qual.Table(), s.qual.Index(), @@ -125,13 +125,13 @@ func (s *statsIter) bucketToRow(i int, bucket sql.HistogramBucket) (sql.Row, err } func ParseRow(rowStr string, types []sql.Type) (sql.Row, error) { - var row sql.Row + var row sql.Row = sql.UntypedSqlRow{} for i, v := range strings.Split(rowStr, ",") { val, _, err := types[i].Convert(v) if err != nil { return nil, err } - row = append(row, val) + row = row.Append(sql.NewUntypedRow(val)) } return row, nil } @@ -139,7 +139,7 @@ func ParseRow(rowStr string, types []sql.Type) (sql.Row, error) { func StringifyKey(r sql.Row, typs []sql.Type) string { b := strings.Builder{} sep := "" - for i, v := range r { + for i, v := range r.Values() { typ := typs[i] if _, ok := typ.(sql.StringType); ok { typ = types.LongText diff --git a/sql/stats/join.go b/sql/stats/join.go index 7dca6c9ed5..1da110f589 100644 --- a/sql/stats/join.go +++ b/sql/stats/join.go @@ -39,10 +39,10 @@ func Join(s1, s2 sql.Statistic, prefixCnt int, debug bool) (sql.Statistic, error var err error for i := 0; i < prefixCnt; i++ { if s1.Types()[i].Equals(s2.Types()[i]) { - cmp, err = s1.Types()[i].Compare(row1[i], row2[i]) + cmp, err = s1.Types()[i].Compare(row1.GetValue(i), row2.GetValue(i)) } else { - k1 := row1[i] - k2, _, err := s1.Types()[i].Convert(row2[i]) + k1 := row1.GetValue(i) + k2, _, err := s1.Types()[i].Convert(row2.GetValue(i)) if err != nil { return 0, fmt.Errorf("incompatible types") } @@ -501,7 +501,7 @@ type BucketConstructor func(rows, distinct, nulls, boundCnt uint64, bound sql.Ro func MergeOverlappingBuckets(h []sql.HistogramBucket, types []sql.Type, newB BucketConstructor) ([]sql.HistogramBucket, error) { cmp := func(l, r sql.Row) (int, error) { for i := 0; i < len(types); i++ { - cmp, err := types[i].Compare(l[i], r[i]) + cmp, err := types[i].Compare(l.GetValue(i), r.GetValue(i)) if err != nil { return 0, err } @@ -570,11 +570,11 @@ const ( func euclideanDistance(row1, row2 sql.Row, prefixLen int) (float64, error) { var distSq float64 for i := 0; i < prefixLen; i++ { - v1, _, err := types.Float64.Convert(row1[i]) + v1, _, err := types.Float64.Convert(row1.GetValue(i)) if err != nil { return 0, err } - v2, _, err := types.Float64.Convert(row2[i]) + v2, _, err := types.Float64.Convert(row2.GetValue(i)) if err != nil { return 0, err } diff --git a/sql/stats/join_test.go b/sql/stats/join_test.go index a7fe9e868d..1d12e995d3 100644 --- a/sql/stats/join_test.go +++ b/sql/stats/join_test.go @@ -31,40 +31,40 @@ func TestBinMerge(t *testing.T) { }{ { inp: sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 5}, }, exp: sql.Histogram{ - &Bucket{RowCnt: 10, DistinctCnt: 5, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{4}, BoundCnt: 5}, + &Bucket{RowCnt: 10, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 5}, }, }, { inp: sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 10, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{3}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{3}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 5}, }, exp: sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 10, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 10, DistinctCnt: 1, BoundVal: sql.Row{3}, BoundCnt: 10}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 10, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{3}, BoundCnt: 10}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 5}, }, }, { inp: sql.Histogram{ - &Bucket{RowCnt: 5, DistinctCnt: 10, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{2}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{4}, BoundCnt: 5}, - &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.Row{4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 5}, + &Bucket{RowCnt: 5, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 5}, }, exp: sql.Histogram{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{2}, BoundCnt: 10}, - &Bucket{RowCnt: 10, DistinctCnt: 5, BoundVal: sql.Row{4}, BoundCnt: 10}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{2}, BoundCnt: 10}, + &Bucket{RowCnt: 10, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{4}, BoundCnt: 10}, }, }, } @@ -83,19 +83,19 @@ func TestEuclideanDistance(t *testing.T) { dist float64 }{ { - x: sql.Row{0, 3}, - y: sql.Row{4, 0}, + x: sql.UntypedSqlRow{0, 3}, + y: sql.UntypedSqlRow{4, 0}, dist: 5, }, { - x: sql.Row{5, 0, 0}, - y: sql.Row{0, 12, 0}, + x: sql.UntypedSqlRow{5, 0, 0}, + y: sql.UntypedSqlRow{0, 12, 0}, dist: 13, }, } for _, tt := range tests { t.Run(fmt.Sprintf("%v x %v = %.2f", tt.x, tt.y, tt.dist), func(t *testing.T) { - cmp, err := euclideanDistance(tt.x, tt.y, len(tt.x)) + cmp, err := euclideanDistance(tt.x, tt.y, tt.x.Len()) require.NoError(t, err) require.Equal(t, tt.dist, cmp) }) @@ -111,184 +111,184 @@ func TestBinAlignment(t *testing.T) { }{ { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 12, DistinctCnt: 12, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 2, DistinctCnt: 2, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 6, DistinctCnt: 6, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 12, DistinctCnt: 12, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 2, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 6, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{40}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{40}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 23, DistinctCnt: 23, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{40}, BoundCnt: 1}, + &Bucket{RowCnt: 23, DistinctCnt: 23, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{40}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{40}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{40}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{60}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{60}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 26, DistinctCnt: 26, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{40}, BoundCnt: 1}, + &Bucket{RowCnt: 26, DistinctCnt: 26, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{40}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{60}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{60}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 20, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 20, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{60}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{60}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 30, DistinctCnt: 30, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 30, DistinctCnt: 30, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{60}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{60}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 30, DistinctCnt: 30, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 30, DistinctCnt: 30, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 30, DistinctCnt: 30, BoundVal: sql.Row{20}, BoundCnt: 1}, + &Bucket{RowCnt: 30, DistinctCnt: 30, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, expLeft: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 20, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 20, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, expRight: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, }, }, } cmp := func(i, j sql.Row) (int, error) { - return types.Int64.Compare(i[0], j[0]) + return types.Int64.Compare(i.GetValue(0), j.GetValue(0)) } for i, tt := range tests { @@ -309,137 +309,137 @@ func TestJoin(t *testing.T) { }{ { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 20, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 20, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 11, BoundVal: sql.Row{10}, McvVals: []sql.Row{{1}, {2}}, McvsCnt: []uint64{5, 5}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 11, BoundVal: sql.UntypedSqlRow{10}, McvVals: []sql.UntypedSqlRow{sql.UntypedSqlRow{1}, sql.UntypedSqlRow{2}}, McvsCnt: []uint64{5, 5}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 6, BoundVal: sql.Row{10}, McvVals: []sql.Row{{2}}, McvsCnt: []uint64{4}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{10}, McvVals: []sql.UntypedSqlRow{sql.UntypedSqlRow{2}}, McvsCnt: []uint64{4}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 29, DistinctCnt: 6, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 29, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.Row{10}, McvVals: []sql.Row{{1}, {2}}, McvsCnt: []uint64{5, 5}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, McvVals: []sql.UntypedSqlRow{sql.UntypedSqlRow{1}, sql.UntypedSqlRow{2}}, McvsCnt: []uint64{5, 5}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 6, BoundVal: sql.Row{10}, McvVals: []sql.Row{{3}}, McvsCnt: []uint64{4}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{10}, McvVals: []sql.UntypedSqlRow{sql.UntypedSqlRow{3}}, McvsCnt: []uint64{4}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 6, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.Row{10}, McvVals: []sql.Row{{1}, {2}}, McvsCnt: []uint64{5, 5}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, McvVals: []sql.UntypedSqlRow{sql.UntypedSqlRow{1}, sql.UntypedSqlRow{2}}, McvsCnt: []uint64{5, 5}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, McvVals: []sql.Row{{3}}, McvsCnt: []uint64{4}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, McvVals: []sql.UntypedSqlRow{sql.UntypedSqlRow{3}}, McvsCnt: []uint64{4}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, + &Bucket{RowCnt: 20, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 23, DistinctCnt: 23, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{40}, BoundCnt: 1}, + &Bucket{RowCnt: 23, DistinctCnt: 23, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{40}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{30}, BoundCnt: 1}, - &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.Row{40}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, + &Bucket{RowCnt: 3, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{40}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 5, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 12, DistinctCnt: 12, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 6, DistinctCnt: 6, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 1, DistinctCnt: 1, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 12, DistinctCnt: 12, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 6, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 1, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 6, DistinctCnt: 6, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 1, DistinctCnt: 1, BoundVal: sql.Row{50}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 10, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 6, DistinctCnt: 6, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 1, DistinctCnt: 1, BoundVal: sql.UntypedSqlRow{50}, BoundCnt: 1}, }, }, { left: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, right: []sql.HistogramBucket{ - &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 5, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 10, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, exp: []sql.HistogramBucket{ - &Bucket{RowCnt: 33, DistinctCnt: 3, BoundVal: sql.Row{0}, BoundCnt: 1}, - &Bucket{RowCnt: 16, DistinctCnt: 2, BoundVal: sql.Row{10}, BoundCnt: 1}, - &Bucket{RowCnt: 12, DistinctCnt: 2, BoundVal: sql.Row{20}, BoundCnt: 1}, - &Bucket{RowCnt: 16, DistinctCnt: 2, BoundVal: sql.Row{30}, BoundCnt: 1}, + &Bucket{RowCnt: 33, DistinctCnt: 3, BoundVal: sql.UntypedSqlRow{0}, BoundCnt: 1}, + &Bucket{RowCnt: 16, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{10}, BoundCnt: 1}, + &Bucket{RowCnt: 12, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{20}, BoundCnt: 1}, + &Bucket{RowCnt: 16, DistinctCnt: 2, BoundVal: sql.UntypedSqlRow{30}, BoundCnt: 1}, }, }, } cmp := func(i, j sql.Row) (int, error) { - return types.Int64.Compare(i[0], j[0]) + return types.Int64.Compare(i.GetValue(0), j.GetValue(0)) } for i, tt := range tests { diff --git a/sql/stats/statistic.go b/sql/stats/statistic.go index 3ec787c1f3..4715d9aa88 100644 --- a/sql/stats/statistic.go +++ b/sql/stats/statistic.go @@ -285,19 +285,19 @@ func NewHistogramBucket(rowCount, distinctCount, nullCount, boundCount uint64, b NullCnt: nullCount, McvsCnt: mcvCounts, BoundCnt: boundCount, - BoundVal: boundValue, - McvVals: mcvs, + BoundVal: boundValue.Values(), + McvVals: sql.RowsToUntyped(mcvs), } } type Bucket struct { - RowCnt uint64 `json:"row_count"` - DistinctCnt uint64 `json:"distinct_count"` - NullCnt uint64 `json:"null_count"` - McvsCnt []uint64 `json:"mcv_counts"` - BoundCnt uint64 `json:"bound_count"` - BoundVal sql.Row `json:"upper_bound"` - McvVals []sql.Row `json:"mcvs"` + RowCnt uint64 `json:"row_count"` + DistinctCnt uint64 `json:"distinct_count"` + NullCnt uint64 `json:"null_count"` + McvsCnt []uint64 `json:"mcv_counts"` + BoundCnt uint64 `json:"bound_count"` + BoundVal sql.UntypedSqlRow `json:"upper_bound"` + McvVals []sql.UntypedSqlRow `json:"mcvs"` } var _ sql.HistogramBucket = (*Bucket)(nil) @@ -327,5 +327,9 @@ func (b Bucket) McvCounts() []uint64 { } func (b Bucket) Mcvs() []sql.Row { - return b.McvVals + rows := make([]sql.Row, len(b.McvVals)) + for i, r := range b.McvVals { + rows[i] = r + } + return rows } diff --git a/sql/types/conversion.go b/sql/types/conversion.go index a3a21bf8c7..b055752dbe 100644 --- a/sql/types/conversion.go +++ b/sql/types/conversion.go @@ -551,6 +551,6 @@ func TypesEqual(a, b sql.Type) bool { } return false default: - return a.Equals(b) + return a == b } } diff --git a/sql/types/ok_result.go b/sql/types/ok_result.go index f1e0bbba87..b5cb1313a1 100644 --- a/sql/types/ok_result.go +++ b/sql/types/ok_result.go @@ -54,8 +54,8 @@ func NewOkResult(rowsAffected int) OkResult { // IsOkResult returns whether the given row represents an OkResult. func IsOkResult(row sql.Row) bool { - if len(row) == 1 { - if _, ok := row[0].(OkResult); ok { + if row.Len() == 1 { + if _, ok := row.GetValue(0).(OkResult); ok { return true } } @@ -64,5 +64,5 @@ func IsOkResult(row sql.Row) bool { // GetOkResult extracts the OkResult from the row given func GetOkResult(row sql.Row) OkResult { - return row[0].(OkResult) + return row.GetValue(0).(OkResult) } diff --git a/sql/types/strings.go b/sql/types/strings.go index f9bf6d0fdc..8fd100c1d8 100644 --- a/sql/types/strings.go +++ b/sql/types/strings.go @@ -387,7 +387,7 @@ func ConvertToString(v interface{}, t sql.StringType) (string, error) { return "", sql.ErrConvertToSQL.New(s, t) } - // TODO: add this checking to the interface, rather than relying on the StringType implementation + // TODO: add this checking to the interface{}, rather than relying on the StringType implementation st, isStringType := t.(StringType) if isStringType { if st.baseType == sqltypes.Text { From 78bb5585a41767d51887d7920ae192a2cce8d3bd Mon Sep 17 00:00:00 2001 From: Max Hoffman Date: Wed, 27 Nov 2024 14:22:36 -0800 Subject: [PATCH 02/12] test skip encode --- server/handler.go | 13 ++++++++++++- sql/rows.go | 6 ++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/server/handler.go b/server/handler.go index 5e79f5e72d..0886de74e3 100644 --- a/server/handler.go +++ b/server/handler.go @@ -939,13 +939,24 @@ func RowToSQL(ctx *sql.Context, sch sql.Schema, row sql.Row, projs []sql.Express } outVals := make([]sqltypes.Value, len(sch)) + var err error + if br, ok := row.(sql.BytesRow); ok { + for i, col := range sch { + buf, err := br.GetBytes(i, col.Type) + outVals[i] = sqltypes.MakeTrusted(col.Type.Type(), buf) + if err != nil { + return nil, err + } + } + return outVals, nil + } + if len(projs) == 0 { for i, col := range sch { if row.GetValue(i) == nil { outVals[i] = sqltypes.NULL continue } - var err error outVals[i], err = col.Type.SQL(ctx, nil, row.GetValue(i)) if err != nil { return nil, err diff --git a/sql/rows.go b/sql/rows.go index fab3d7e9a9..8ac8b7b2b3 100644 --- a/sql/rows.go +++ b/sql/rows.go @@ -27,9 +27,7 @@ import ( // Row is a tuple of values. type Row interface { GetValue(i int) interface{} - GetBytes() []byte SetValue(i int, v interface{}) - SetBytes(i int, v []byte) GetType(i int) Values() []interface{} Copy() Row @@ -39,6 +37,10 @@ type Row interface { Equals(row Row, schema Schema) (bool, error) } +type BytesRow interface { + GetBytes(int, Type) ([]byte, error) +} + type SqlRow struct { values []interface{} types []Type From 129227e5be8ae3131fd7d924fd26dd0bba60cd76 Mon Sep 17 00:00:00 2001 From: Max Hoffman Date: Wed, 4 Dec 2024 10:53:32 -0800 Subject: [PATCH 03/12] small edits --- server/handler.go | 47 +++++++++++++++++++++++++++++++++++++++++++---- sql/rows.go | 2 +- sql/types/time.go | 2 ++ 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/server/handler.go b/server/handler.go index 0886de74e3..83f6c0f562 100644 --- a/server/handler.go +++ b/server/handler.go @@ -18,6 +18,7 @@ import ( "context" "encoding/base64" "fmt" + "github.com/dolthub/go-mysql-server/sql/expression" "io" "net" "regexp" @@ -940,12 +941,50 @@ func RowToSQL(ctx *sql.Context, sch sql.Schema, row sql.Row, projs []sql.Express outVals := make([]sqltypes.Value, len(sch)) var err error + var buf []byte = make([]byte, 256) if br, ok := row.(sql.BytesRow); ok { + if len(projs) == 0 { + for i, col := range sch { + val, err := br.GetBytes(i, col.Type, buf[:0]) + buf = buf[len(val):] + if err != nil { + return nil, err + } + outVals[i] = sqltypes.MakeTrusted(col.Type.Type(), val) + + //v := row.GetValue(i) + //cmpBuf, _ := col.Type.SQL(ctx, nil, v) + //fmt.Printf("exp: %s, actual: %s, equal: %d\n", cmpBuf, val, bytes.Compare(cmpBuf.ToBytes(), val)) + } + return outVals, nil + } + for i, col := range sch { - buf, err := br.GetBytes(i, col.Type) - outVals[i] = sqltypes.MakeTrusted(col.Type.Type(), buf) - if err != nil { - return nil, err + e := projs[i] + switch e := e.(type) { + case *expression.GetField: + val, err := br.GetBytes(e.Index(), col.Type, buf[:0]) + buf = buf[len(val):] + if err != nil { + return nil, err + } + outVals[i] = sqltypes.MakeTrusted(col.Type.Type(), val) + //v := row.GetValue(e.Index()) + //cmpBuf, _ := col.Type.SQL(ctx, nil, v) + //fmt.Printf("exp: %s, actual: %s, equal: %d\n", cmpBuf, val, bytes.Compare(cmpBuf.ToBytes(), val)) + default: + field, err := projs[i].Eval(ctx, row) + if err != nil { + return nil, err + } + if field == nil { + outVals[i] = sqltypes.NULL + continue + } + outVals[i], err = col.Type.SQL(ctx, nil, field) + if err != nil { + return nil, err + } } } return outVals, nil diff --git a/sql/rows.go b/sql/rows.go index 8ac8b7b2b3..09b5a7538d 100644 --- a/sql/rows.go +++ b/sql/rows.go @@ -38,7 +38,7 @@ type Row interface { } type BytesRow interface { - GetBytes(int, Type) ([]byte, error) + GetBytes(int, Type, []byte) ([]byte, error) } type SqlRow struct { diff --git a/sql/types/time.go b/sql/types/time.go index 9ee01fe0da..6fd9d0bc56 100644 --- a/sql/types/time.go +++ b/sql/types/time.go @@ -468,7 +468,9 @@ func (t Timespan) String() string { if isNegative { sign = "-" } + if microseconds == 0 { + return fmt.Sprintf("%v%02d:%02d:%02d", sign, hours, minutes, seconds) } return fmt.Sprintf("%v%02d:%02d:%02d.%06d", sign, hours, minutes, seconds, microseconds) From 0bae8b393360e26ed0e5a31a1a4d9dd7b8bda324 Mon Sep 17 00:00:00 2001 From: James Cor Date: Thu, 26 Dec 2024 13:27:06 -0800 Subject: [PATCH 04/12] bad merge --- sql/expression/tablefunction/table_function.go | 2 +- sql/plan/create_user_data.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sql/expression/tablefunction/table_function.go b/sql/expression/tablefunction/table_function.go index 4491b1f8d9..370d9d9c42 100644 --- a/sql/expression/tablefunction/table_function.go +++ b/sql/expression/tablefunction/table_function.go @@ -82,7 +82,7 @@ func (t *TableFunctionWrapper) RowIter(ctx *sql.Context, r sql.Row) (sql.RowIter if err != nil { return nil, err } - return sql.RowsToRowIter(sql.Row{v}), nil + return sql.RowsToRowIter(sql.UntypedSqlRow{v}), nil } func (t *TableFunctionWrapper) Resolved() bool { diff --git a/sql/plan/create_user_data.go b/sql/plan/create_user_data.go index 13e911c0d0..c9cffbd11a 100644 --- a/sql/plan/create_user_data.go +++ b/sql/plan/create_user_data.go @@ -178,10 +178,11 @@ func NewDefaultAuthentication(password string) Authentication { type AuthenticationOther struct { password string plugin string + identity string } -func NewOtherAuthentication(password, plugin string) Authentication { - return AuthenticationOther{password, plugin} +func NewOtherAuthentication(password, plugin, identity string) Authentication { + return AuthenticationOther{password, plugin, identity} } func (a AuthenticationOther) Plugin() string { From b5c1e81a1c60ddeb84607c9cc1e0eed85d40943b Mon Sep 17 00:00:00 2001 From: jycor Date: Thu, 26 Dec 2024 21:31:12 +0000 Subject: [PATCH 05/12] [ga-format-pr] Run ./format_repo.sh to fix formatting --- enginetest/engine_only_test.go | 2 +- server/handler.go | 2 +- sql/types/time.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/enginetest/engine_only_test.go b/enginetest/engine_only_test.go index 9b5be3612c..c65ca68d7a 100644 --- a/enginetest/engine_only_test.go +++ b/enginetest/engine_only_test.go @@ -18,7 +18,6 @@ import ( "context" sql2 "database/sql" "fmt" - "github.com/dolthub/go-mysql-server/sql/variables" "io" "net" "runtime" @@ -47,6 +46,7 @@ import ( "github.com/dolthub/go-mysql-server/sql/planbuilder" "github.com/dolthub/go-mysql-server/sql/rowexec" "github.com/dolthub/go-mysql-server/sql/types" + "github.com/dolthub/go-mysql-server/sql/variables" ) // This file is for tests of the engine that we are very sure do not rely on a particular database implementation. They diff --git a/server/handler.go b/server/handler.go index 273cd882c4..1c2d19164c 100644 --- a/server/handler.go +++ b/server/handler.go @@ -18,7 +18,6 @@ import ( "context" "encoding/base64" "fmt" - "github.com/dolthub/go-mysql-server/sql/expression" "io" "net" "regexp" @@ -41,6 +40,7 @@ import ( "github.com/dolthub/go-mysql-server/internal/sockstate" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/analyzer" + "github.com/dolthub/go-mysql-server/sql/expression" "github.com/dolthub/go-mysql-server/sql/iters" "github.com/dolthub/go-mysql-server/sql/plan" "github.com/dolthub/go-mysql-server/sql/rowexec" diff --git a/sql/types/time.go b/sql/types/time.go index 88ffdf328f..e80ff74e60 100644 --- a/sql/types/time.go +++ b/sql/types/time.go @@ -500,7 +500,7 @@ func appendDigit(v int64, extend int, buf []byte, i int) int { cmp *= 10 } - for cmp > 0 && v < cmp{ + for cmp > 0 && v < cmp { buf[i] = '0' i++ From 5a79bc76eff963c8be455746b45b74d0167759e2 Mon Sep 17 00:00:00 2001 From: James Cor Date: Thu, 26 Dec 2024 15:39:24 -0800 Subject: [PATCH 06/12] git push --- server/handler.go | 10 +++++----- sql/planbuilder/priv.go | 2 +- sql/rowexec/show.go | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/server/handler.go b/server/handler.go index 273cd882c4..85b15e2bdf 100644 --- a/server/handler.go +++ b/server/handler.go @@ -949,12 +949,12 @@ func RowToSQL(ctx *sql.Context, sch sql.Schema, row sql.Row, projs []sql.Express outVals := make([]sqltypes.Value, len(sch)) var err error - var buf []byte = make([]byte, 256) + var newBuf = make([]byte, 256) if br, ok := row.(sql.BytesRow); ok { if len(projs) == 0 { for i, col := range sch { - val, err := br.GetBytes(i, col.Type, buf[:0]) - buf = buf[len(val):] + val, err := br.GetBytes(i, col.Type, newBuf[:0]) + newBuf = newBuf[len(val):] if err != nil { return nil, err } @@ -971,8 +971,8 @@ func RowToSQL(ctx *sql.Context, sch sql.Schema, row sql.Row, projs []sql.Express e := projs[i] switch e := e.(type) { case *expression.GetField: - val, err := br.GetBytes(e.Index(), col.Type, buf[:0]) - buf = buf[len(val):] + val, err := br.GetBytes(e.Index(), col.Type, newBuf[:0]) + newBuf = newBuf[len(val):] if err != nil { return nil, err } diff --git a/sql/planbuilder/priv.go b/sql/planbuilder/priv.go index 6a3883baf8..087fe1b6c8 100644 --- a/sql/planbuilder/priv.go +++ b/sql/planbuilder/priv.go @@ -163,7 +163,7 @@ func (b *Builder) buildAuthenticatedUser(user ast.AccountWithAuth) plan.Authenti } else if user.Auth1.Plugin == string(mysql.CachingSha2Password) { authUser.Auth1 = plan.NewCachingSha2PasswordAuthentication(user.Auth1.Password) } else if len(user.Auth1.Plugin) > 0 { - authUser.Auth1 = plan.NewOtherAuthentication(user.Auth1.Password, user.Auth1.Plugin) + authUser.Auth1 = plan.NewOtherAuthentication(user.Auth1.Password, user.Auth1.Plugin, user.Auth1.Identity) } else { // We default to using the password, even if it's empty authUser.Auth1 = plan.NewDefaultAuthentication(user.Auth1.Password) diff --git a/sql/rowexec/show.go b/sql/rowexec/show.go index e8098215eb..b92524b60e 100644 --- a/sql/rowexec/show.go +++ b/sql/rowexec/show.go @@ -78,14 +78,14 @@ func (b *BaseBuilder) buildDescribeQuery(ctx *sql.Context, n *plan.DescribeQuery formatString := sql.Describe(n.Child, n.Format) for _, l := range strings.Split(formatString, "\n") { if strings.TrimSpace(l) != "" { - rows = append(rows, sql.NewRow(l)) + rows = append(rows, sql.NewUntypedRow(l)) } } return sql.RowsToRowIter(rows...), nil } ctx.Warn(0, "EXPLAIN Output is currently a placeholder; use EXPLAIN PLAN for old behavior") - dummyRow := sql.Row{ + dummyRow := sql.UntypedSqlRow{ 1, // id "SELECT", // select_type "NULL", // table From f86c000b937690539024f7f013dff2ff99d1999c Mon Sep 17 00:00:00 2001 From: James Cor Date: Thu, 26 Dec 2024 15:49:44 -0800 Subject: [PATCH 07/12] fix tests --- enginetest/queries/information_schema_queries.go | 4 ++-- enginetest/queries/insert_queries.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/enginetest/queries/information_schema_queries.go b/enginetest/queries/information_schema_queries.go index 0acdd8f79a..af218327fa 100644 --- a/enginetest/queries/information_schema_queries.go +++ b/enginetest/queries/information_schema_queries.go @@ -1812,7 +1812,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type Assertions: []ScriptTestAssertion{ { Query: "show databases like 'information_schema';", - Expected: []sql.Row{{"information_schema"}}, + Expected: []sql.UntypedSqlRow{{"information_schema"}}, }, { Query: "create database information_schema;", @@ -1824,7 +1824,7 @@ from information_schema.routines where routine_schema = 'mydb' and routine_type }, { Query: "show databases like 'information_schema';", - Expected: []sql.Row{{"information_schema"}}, + Expected: []sql.UntypedSqlRow{{"information_schema"}}, }, }, }, diff --git a/enginetest/queries/insert_queries.go b/enginetest/queries/insert_queries.go index fb39a32c2d..13a8871e9c 100644 --- a/enginetest/queries/insert_queries.go +++ b/enginetest/queries/insert_queries.go @@ -2775,12 +2775,12 @@ var InsertIgnoreScripts = []ScriptTest{ }, { Query: "insert ignore into test_table values (1, 'invalid'), (2, 'bye'), (3, null)", - Expected: []sql.Row{{types.OkResult{RowsAffected: 3}}}, + Expected: []sql.UntypedSqlRow{{types.OkResult{RowsAffected: 3}}}, //ExpectedWarning: mysql.ERWarnDataTruncated, // TODO: incorrect code }, { Query: "select * from test_table", - Expected: []sql.Row{{1, ""}, {2, "bye"}, {3, nil}}, + Expected: []sql.UntypedSqlRow{{1, ""}, {2, "bye"}, {3, nil}}, }, }, }, @@ -3055,11 +3055,11 @@ var InsertBrokenScripts = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "INSERT INTO test (pk) VALUES (1);", - Expected: []sql.Row{{types.NewOkResult(1)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, }, { Query: "select * from t2;", - Expected: []sql.Row{{1, "a"}}, + Expected: []sql.UntypedSqlRow{{1, "a"}}, }, }, }, From cf72039b8c7796c96d1dab356c95e589481f0f65 Mon Sep 17 00:00:00 2001 From: James Cor Date: Fri, 27 Dec 2024 11:36:23 -0800 Subject: [PATCH 08/12] fixing more tests --- enginetest/queries/mysql_db_queries.go | 4 ++-- enginetest/queries/priv_auth_queries.go | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/enginetest/queries/mysql_db_queries.go b/enginetest/queries/mysql_db_queries.go index 867f393c1e..1867cb6ef2 100644 --- a/enginetest/queries/mysql_db_queries.go +++ b/enginetest/queries/mysql_db_queries.go @@ -43,7 +43,7 @@ var MySqlDbTests = []ScriptTest{ Assertions: []ScriptTestAssertion{ { Query: "show databases like 'mysql';", - Expected: []sql.Row{{"mysql"}}, + Expected: []sql.UntypedSqlRow{{"mysql"}}, }, { Query: "create database mysql;", @@ -55,7 +55,7 @@ var MySqlDbTests = []ScriptTest{ }, { Query: "show databases like 'mysql';", - Expected: []sql.Row{{"mysql"}}, + Expected: []sql.UntypedSqlRow{{"mysql"}}, }, }, }, diff --git a/enginetest/queries/priv_auth_queries.go b/enginetest/queries/priv_auth_queries.go index b10d96dd69..e19e7aa522 100644 --- a/enginetest/queries/priv_auth_queries.go +++ b/enginetest/queries/priv_auth_queries.go @@ -713,11 +713,11 @@ var UserPrivTests = []UserPrivilegeTest{ Assertions: []UserPrivilegeTestAssertion{ { Query: "select user, host, plugin, authentication_string from mysql.user where user='testuser1';", - Expected: []sql.Row{{"testuser1", "127.0.0.1", "mysql_native_password", "*22A99BA288DB55E8E230679259740873101CD636"}}, + Expected: []sql.UntypedSqlRow{{"testuser1", "127.0.0.1", "mysql_native_password", "*22A99BA288DB55E8E230679259740873101CD636"}}, }, { Query: "select user, host, plugin, authentication_string from mysql.user where user='testuser2';", - Expected: []sql.Row{{"testuser2", "127.0.0.1", "mysql_native_password", ""}}, + Expected: []sql.UntypedSqlRow{{"testuser2", "127.0.0.1", "mysql_native_password", ""}}, }, }, }, @@ -733,11 +733,11 @@ var UserPrivTests = []UserPrivilegeTest{ // string. Since it's not a consistent value during each test run, we just sanity // check the first bytes of metadata (digest type, iterations) in the auth string. Query: "select user, host, plugin, authentication_string like '$A$005$%' from mysql.user where user='testuser1';", - Expected: []sql.Row{{"testuser1", "127.0.0.1", "caching_sha2_password", true}}, + Expected: []sql.UntypedSqlRow{{"testuser1", "127.0.0.1", "caching_sha2_password", true}}, }, { Query: "select user, host, plugin, authentication_string from mysql.user where user='testuser2';", - Expected: []sql.Row{{"testuser2", "127.0.0.1", "caching_sha2_password", ""}}, + Expected: []sql.UntypedSqlRow{{"testuser2", "127.0.0.1", "caching_sha2_password", ""}}, }, }, }, @@ -749,26 +749,26 @@ var UserPrivTests = []UserPrivilegeTest{ Assertions: []UserPrivilegeTestAssertion{ { Query: "select user, host, plugin, authentication_string from mysql.user where user='testuser1';", - Expected: []sql.Row{{"testuser1", "127.0.0.1", "mysql_native_password", "*22A99BA288DB55E8E230679259740873101CD636"}}, + Expected: []sql.UntypedSqlRow{{"testuser1", "127.0.0.1", "mysql_native_password", "*22A99BA288DB55E8E230679259740873101CD636"}}, }, { Query: "ALTER USER testuser1@`127.0.0.1` IDENTIFIED WITH caching_sha2_password BY 'pass1';", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { // caching_sha2_password auth uses a random salt to create the authentication // string. Since it's not a consistent value during each test run, we just sanity // check the first bytes of metadata (digest type, iterations) in the auth string. Query: "select user, host, plugin, authentication_string like '$A$005$%' from mysql.user where user='testuser1';", - Expected: []sql.Row{{"testuser1", "127.0.0.1", "caching_sha2_password", true}}, + Expected: []sql.UntypedSqlRow{{"testuser1", "127.0.0.1", "caching_sha2_password", true}}, }, { Query: "ALTER USER testuser1@`127.0.0.1` IDENTIFIED WITH caching_sha2_password;", - Expected: []sql.Row{{types.NewOkResult(0)}}, + Expected: []sql.UntypedSqlRow{{types.NewOkResult(0)}}, }, { Query: "select user, host, plugin, authentication_string from mysql.user where user='testuser1';", - Expected: []sql.Row{{"testuser1", "127.0.0.1", "caching_sha2_password", ""}}, + Expected: []sql.UntypedSqlRow{{"testuser1", "127.0.0.1", "caching_sha2_password", ""}}, }, }, }, From 170512e15117a302fe7724808eb5d3c96185bd1b Mon Sep 17 00:00:00 2001 From: James Cor Date: Fri, 27 Dec 2024 11:41:19 -0800 Subject: [PATCH 09/12] fixes --- enginetest/enginetests.go | 40 ++++++++++++++-------------- enginetest/memory_engine_test.go | 2 +- enginetest/queries/script_queries.go | 4 +-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/enginetest/enginetests.go b/enginetest/enginetests.go index 7ab529d843..90ed6fb7cc 100644 --- a/enginetest/enginetests.go +++ b/enginetest/enginetests.go @@ -346,7 +346,7 @@ func TestInfoSchema(t *testing.T, h Harness) { TestQueryWithContext(t, ctx, e, h, "SELECT id, uSeR, hOST FROM information_schema.processlist ORDER BY id", - []sql.Row{ + []sql.UntypedSqlRow{ {uint64(1), "root", "localhost"}, {uint64(2), "root", "otherhost"}, }, @@ -391,7 +391,7 @@ func TestInfoSchema(t *testing.T, h Harness) { TestQueryWithContext(t, ctx, e, h, "SELECT id, uSeR, hOST FROM information_schema.processlist pl ORDER BY id", - []sql.Row{ + []sql.UntypedSqlRow{ {uint64(1), "root", "localhost"}, {uint64(2), "root", "otherhost"}, }, @@ -436,7 +436,7 @@ func TestInfoSchema(t *testing.T, h Harness) { TestQueryWithContext(t, ctx, e, h, "SELECT id, uSeR, hOST FROM information_schema.processlist pl join information_schema.schemata on true ORDER BY id limit 1", - []sql.Row{ + []sql.UntypedSqlRow{ {uint64(1), "root", "localhost"}, }, sql.Schema{ @@ -1110,14 +1110,14 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { file string query string exp string - expRows []sql.Row + expRows []sql.UntypedSqlRow err *errors.Kind skip bool }{ { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1\tfirst row\n" + "2\tsecond row\n" + @@ -1126,13 +1126,13 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "dumpfile.txt", query: "select * from mytable limit 1 into dumpfile 'dumpfile.txt';", - expRows: []sql.Row{{types.NewOkResult(1)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(1)}}, exp: "1first row", }, { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1,first row\n" + "2,second row\n" + @@ -1141,7 +1141,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by '$$';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1$$first row\n" + "2$$second row\n" + @@ -1150,7 +1150,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',' optionally enclosed by '\"';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1,\"first row\"\n" + "2,\"second row\"\n" + @@ -1169,7 +1169,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',' enclosed by '\"';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "\"1\",\"first row\"\n" + "\"2\",\"second row\"\n" + @@ -1178,7 +1178,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',' lines terminated by ';';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1,first row;" + "2,second row;" + @@ -1187,7 +1187,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',' lines terminated by 'r';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1,fi\\rst \\rowr" + "2,second \\rowr" + @@ -1196,7 +1196,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',' lines starting by 'r';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "r1,first row\n" + "r2,second row\n" + @@ -1205,7 +1205,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by '';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1\tfirst row\n" + "2\tsecond row\n" + @@ -1214,7 +1214,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from mytable into outfile 'outfile.txt' fields terminated by ',' lines terminated by '';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1,first row" + "2,second row" + @@ -1223,7 +1223,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from niltable into outfile 'outfile.txt';", - expRows: []sql.Row{{types.NewOkResult(6)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(6)}}, exp: "1\t\\N\t\\N\t\\N\n" + "2\t2\t1\t\\N\n" + "3\t\\N\t0\t\\N\n" + @@ -1234,7 +1234,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from niltable into outfile 'outfile.txt' fields terminated by ',' enclosed by '\"';", - expRows: []sql.Row{{types.NewOkResult(6)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(6)}}, exp: "\"1\",\\N,\\N,\\N\n" + "\"2\",\"2\",\"1\",\\N\n" + "\"3\",\\N,\"0\",\\N\n" + @@ -1245,7 +1245,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from niltable into outfile 'outfile.txt' fields terminated by ',' escaped by '$';", - expRows: []sql.Row{{types.NewOkResult(6)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(6)}}, exp: "1,$N,$N,$N\n" + "2,2,1,$N\n" + "3,$N,0,$N\n" + @@ -1256,7 +1256,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "outfile.txt", query: "select * from niltable into outfile 'outfile.txt' fields terminated by ',' escaped by '';", - expRows: []sql.Row{{types.NewOkResult(6)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(6)}}, exp: "1,NULL,NULL,NULL\n" + "2,2,1,NULL\n" + "3,NULL,0,NULL\n" + @@ -1267,7 +1267,7 @@ func TestSelectIntoFile(t *testing.T, harness Harness) { { file: "./subdir/outfile.txt", query: "select * from mytable into outfile './subdir/outfile.txt';", - expRows: []sql.Row{{types.NewOkResult(3)}}, + expRows: []sql.UntypedSqlRow{{types.NewOkResult(3)}}, exp: "" + "1\tfirst row\n" + "2\tsecond row\n" + diff --git a/enginetest/memory_engine_test.go b/enginetest/memory_engine_test.go index 5dcb7e0227..250be571fa 100644 --- a/enginetest/memory_engine_test.go +++ b/enginetest/memory_engine_test.go @@ -208,7 +208,7 @@ func TestSingleScript(t *testing.T) { Assertions: []queries.ScriptTestAssertion{ { Query: "select 1 into @a", - Expected: []sql.Row{}, + Expected: []sql.UntypedSqlRow{}, }, }, }, diff --git a/enginetest/queries/script_queries.go b/enginetest/queries/script_queries.go index d388cc94bd..bbf011d8b6 100644 --- a/enginetest/queries/script_queries.go +++ b/enginetest/queries/script_queries.go @@ -7666,7 +7666,7 @@ where }, { Query: "select i, cast(e as binary) from t;", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {1, []uint8("abc")}, {2, []uint8("def")}, {3, []uint8("ghi")}, @@ -7674,7 +7674,7 @@ where }, { Query: "select case when e = 'abc' then 'abc' when e = 'def' then 123 else e end from t", - Expected: []sql.Row{ + Expected: []sql.UntypedSqlRow{ {"abc"}, {"123"}, {"ghi"}, From 4be33a64c91459109f941e4015f1d44feeebcbcf Mon Sep 17 00:00:00 2001 From: James Cor Date: Fri, 27 Dec 2024 12:25:01 -0800 Subject: [PATCH 10/12] test From eacd272238f3a8d36e46299224a4ae233ab0e394 Mon Sep 17 00:00:00 2001 From: James Cor Date: Fri, 27 Dec 2024 13:24:33 -0800 Subject: [PATCH 11/12] fix race --- enginetest/queries/regex_queries_race.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enginetest/queries/regex_queries_race.go b/enginetest/queries/regex_queries_race.go index 82aa525afe..ba146cfe3c 100644 --- a/enginetest/queries/regex_queries_race.go +++ b/enginetest/queries/regex_queries_race.go @@ -28,7 +28,7 @@ import ( type RegexTest struct { Query string - Expected []sql.Row + Expected []sql.UntypedSqlRow ExpectedErr *errors.Kind } From 399448be8b7e1871eac9d5cc4c84dd3976ba5a20 Mon Sep 17 00:00:00 2001 From: James Cor Date: Tue, 31 Dec 2024 14:10:29 -0800 Subject: [PATCH 12/12] test --- server/handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/handler.go b/server/handler.go index f9fdb9c93c..9daa2f359e 100644 --- a/server/handler.go +++ b/server/handler.go @@ -950,7 +950,7 @@ func RowToSQL(ctx *sql.Context, sch sql.Schema, row sql.Row, projs []sql.Express outVals := make([]sqltypes.Value, len(sch)) var err error var newBuf = make([]byte, 256) - if br, ok := row.(sql.BytesRow); ok { + if br, ok := row.(sql.BytesRow); ok && false { if len(projs) == 0 { for i, col := range sch { val, err := br.GetBytes(i, col.Type, newBuf[:0])