Skip to content

Commit 7607636

Browse files
committed
replace count(*) in keyless tables
1 parent e9bfab1 commit 7607636

File tree

3 files changed

+129
-49
lines changed

3 files changed

+129
-49
lines changed

enginetest/queries/generated_columns.go

Lines changed: 116 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ var GeneratedColumnTests = []ScriptTest{
9393
Query: "select * from t1 order by a",
9494
Expected: []sql.Row{{2, 3}, {3, 4}, {4, 5}, {5, 6}},
9595
},
96+
{
97+
Query: "select count(*) from t1",
98+
Expected: []sql.Row{{4}},
99+
},
96100
},
97101
},
98102
{
@@ -130,9 +134,15 @@ var GeneratedColumnTests = []ScriptTest{
130134
"INSERT INTO t16 (pk) VALUES (1), (2)",
131135
"ALTER TABLE t16 ADD COLUMN v2 BIGINT AS (5) STORED FIRST",
132136
},
133-
Assertions: []ScriptTestAssertion{{
134-
Query: "SELECT * FROM t16",
135-
Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}}},
137+
Assertions: []ScriptTestAssertion{
138+
{
139+
Query: "SELECT * FROM t16",
140+
Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}},
141+
},
142+
{
143+
Query: "select count(*) from t16",
144+
Expected: []sql.Row{{2}},
145+
},
136146
},
137147
},
138148
{
@@ -142,9 +152,15 @@ var GeneratedColumnTests = []ScriptTest{
142152
"INSERT INTO t17 VALUES (1, 3), (2, 4)",
143153
"ALTER TABLE t17 ADD COLUMN v2 BIGINT AS (v1 + 2) STORED FIRST",
144154
},
145-
Assertions: []ScriptTestAssertion{{
146-
Query: "SELECT * FROM t17",
147-
Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}}},
155+
Assertions: []ScriptTestAssertion{
156+
{
157+
Query: "SELECT * FROM t17",
158+
Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}},
159+
},
160+
{
161+
Query: "select count(*) from t17",
162+
Expected: []sql.Row{{2}},
163+
},
148164
},
149165
},
150166
{
@@ -234,6 +250,10 @@ var GeneratedColumnTests = []ScriptTest{
234250
Query: "select * from t1 order by b",
235251
Expected: []sql.Row{{1, 2}, {2, 3}},
236252
},
253+
{
254+
Query: "select count(*) from t1",
255+
Expected: []sql.Row{{2}},
256+
},
237257
},
238258
},
239259
{
@@ -306,6 +326,10 @@ var GeneratedColumnTests = []ScriptTest{
306326
Query: "select * from t1 order by b",
307327
Expected: []sql.Row{{1, 2, 3, 4}, {2, 3, 4, 5}},
308328
},
329+
{
330+
Query: "select count(*) from t1",
331+
Expected: []sql.Row{{2}},
332+
},
309333
},
310334
},
311335
{
@@ -386,6 +410,10 @@ var GeneratedColumnTests = []ScriptTest{
386410
Query: "select * from t1 order by b",
387411
Expected: []sql.Row{{1, 2}, {2, 3}},
388412
},
413+
{
414+
Query: "select count(*) from t1",
415+
Expected: []sql.Row{{2}},
416+
},
389417
},
390418
},
391419
{
@@ -539,6 +567,10 @@ var GeneratedColumnTests = []ScriptTest{
539567
" PRIMARY KEY (`a`)\n" +
540568
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}},
541569
},
570+
{
571+
Query: "select count(*) from t1",
572+
Expected: []sql.Row{{3}},
573+
},
542574
},
543575
},
544576
{
@@ -575,6 +607,10 @@ var GeneratedColumnTests = []ScriptTest{
575607
{1, 2, 4},
576608
},
577609
},
610+
{
611+
Query: "select count(*) from t",
612+
Expected: []sql.Row{{1}},
613+
},
578614
{
579615
Query: "alter table tt add column `col 3` int generated always as (`col 1` + `col 2` + pow(`col 1`, `col 2`)) stored;",
580616
Expected: []sql.Row{
@@ -603,6 +639,10 @@ var GeneratedColumnTests = []ScriptTest{
603639
{1, 2, 4},
604640
},
605641
},
642+
{
643+
Query: "select count(*) from tt",
644+
Expected: []sql.Row{{1}},
645+
},
606646
},
607647
},
608648
{
@@ -639,6 +679,10 @@ var GeneratedColumnTests = []ScriptTest{
639679
{1, 2, 4},
640680
},
641681
},
682+
{
683+
Query: "select count(*) from t",
684+
Expected: []sql.Row{{1}},
685+
},
642686
{
643687
Query: "alter table tt add column `col 3` int generated always as (`col 1` + `col 2` + pow(`col 1`, `col 2`)) virtual;",
644688
Expected: []sql.Row{
@@ -667,6 +711,10 @@ var GeneratedColumnTests = []ScriptTest{
667711
{1, 2, 4},
668712
},
669713
},
714+
{
715+
Query: "select count(*) from tt",
716+
Expected: []sql.Row{{1}},
717+
},
670718
},
671719
},
672720
{
@@ -676,9 +724,15 @@ var GeneratedColumnTests = []ScriptTest{
676724
"INSERT INTO t16 (pk) VALUES (1), (2)",
677725
"ALTER TABLE t16 ADD COLUMN v2 BIGINT AS (5) VIRTUAL FIRST",
678726
},
679-
Assertions: []ScriptTestAssertion{{
680-
Query: "SELECT * FROM t16",
681-
Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}}},
727+
Assertions: []ScriptTestAssertion{
728+
{
729+
Query: "SELECT * FROM t16",
730+
Expected: []sql.Row{{5, 1, 4}, {5, 2, 4}},
731+
},
732+
{
733+
Query: "select count(*) from t16",
734+
Expected: []sql.Row{{2}},
735+
},
682736
},
683737
},
684738
{
@@ -688,9 +742,15 @@ var GeneratedColumnTests = []ScriptTest{
688742
"INSERT INTO t17 VALUES (1, 3), (2, 4)",
689743
"ALTER TABLE t17 ADD COLUMN v2 BIGINT AS (v1 + 2) VIRTUAL FIRST",
690744
},
691-
Assertions: []ScriptTestAssertion{{
692-
Query: "SELECT * FROM t17",
693-
Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}}},
745+
Assertions: []ScriptTestAssertion{
746+
{
747+
Query: "SELECT * FROM t17",
748+
Expected: []sql.Row{{5, 1, 3}, {6, 2, 4}},
749+
},
750+
{
751+
Query: "SELECT count(*) FROM t17",
752+
Expected: []sql.Row{{2}},
753+
},
694754
},
695755
},
696756
{
@@ -831,6 +891,14 @@ var GeneratedColumnTests = []ScriptTest{
831891
Query: "select * from t2 order by c",
832892
Expected: []sql.Row{{1, 0}, {2, 1}, {3, 2}, {6, 5}, {7, 6}},
833893
},
894+
{
895+
Query: "select count(*) from t1",
896+
Expected: []sql.Row{{5}},
897+
},
898+
{
899+
Query: "select count(*) from t2",
900+
Expected: []sql.Row{{5}},
901+
},
834902
},
835903
},
836904
{
@@ -850,6 +918,10 @@ var GeneratedColumnTests = []ScriptTest{
850918
{2, types.MustJSON(`{"a": 1}`), nil},
851919
{3, types.MustJSON(`{"b": "300"}`), 300}},
852920
},
921+
{
922+
Query: "select count(*) from t1",
923+
Expected: []sql.Row{{3}},
924+
},
853925
},
854926
},
855927
{
@@ -870,6 +942,10 @@ var GeneratedColumnTests = []ScriptTest{
870942
{"ghi", "", "ghi"},
871943
},
872944
},
945+
{
946+
Query: "select count(*) from t1",
947+
Expected: []sql.Row{{3}},
948+
},
873949
},
874950
},
875951
{
@@ -910,6 +986,10 @@ var GeneratedColumnTests = []ScriptTest{
910986
{2, 3, 4, 5},
911987
},
912988
},
989+
{
990+
Query: "select count(*) from t",
991+
Expected: []sql.Row{{3}},
992+
},
913993
},
914994
},
915995
{
@@ -987,6 +1067,10 @@ var GeneratedColumnTests = []ScriptTest{
9871067
Query: "select * from t1 order by a",
9881068
Expected: []sql.Row{{1, 2, 3}, {3, 4, 7}},
9891069
},
1070+
{
1071+
Query: "select count(*) from t1",
1072+
Expected: []sql.Row{{2}},
1073+
},
9901074
},
9911075
},
9921076
{
@@ -1051,6 +1135,10 @@ var GeneratedColumnTests = []ScriptTest{
10511135
{3, 4, 7},
10521136
},
10531137
},
1138+
{
1139+
Query: "select count(*) from t1",
1140+
Expected: []sql.Row{{2}},
1141+
},
10541142
{
10551143
Query: "select * from t1 where c = 6",
10561144
Expected: []sql.Row{
@@ -1080,6 +1168,10 @@ var GeneratedColumnTests = []ScriptTest{
10801168
Query: "select * from t1 where v = 2",
10811169
Expected: []sql.Row{{"{\"a\": 2}", 2}},
10821170
},
1171+
{
1172+
Query: "select count(*) from t1",
1173+
Expected: []sql.Row{{3}},
1174+
},
10831175
{
10841176
Query: "update t1 set j = '{\"a\": 5}' where v = 2",
10851177
Expected: []sql.Row{{NewUpdateResult(1, 1)}},
@@ -1176,6 +1268,10 @@ var GeneratedColumnTests = []ScriptTest{
11761268
Query: "select * from t1 order by b",
11771269
Expected: []sql.Row{{1, 2, 3, 4}, {2, 3, 4, 5}},
11781270
},
1271+
{
1272+
Query: "select count(*) from t1",
1273+
Expected: []sql.Row{{2}},
1274+
},
11791275
},
11801276
},
11811277
{
@@ -1260,6 +1356,10 @@ var GeneratedColumnTests = []ScriptTest{
12601356
Query: "insert into t2 (a) values (1), (2)",
12611357
Expected: []sql.Row{{types.NewOkResult(2)}},
12621358
},
1359+
{
1360+
Query: "select count(*) from t2",
1361+
Expected: []sql.Row{{2}},
1362+
},
12631363
{
12641364
Query: "select * from t2 order by a",
12651365
Expected: []sql.Row{
@@ -1277,6 +1377,10 @@ var GeneratedColumnTests = []ScriptTest{
12771377
Query: "insert into t3 (a) values (1), (2)",
12781378
Expected: []sql.Row{{types.NewOkResult(2)}},
12791379
},
1380+
{
1381+
Query: "select count(*) from t3",
1382+
Expected: []sql.Row{{2}},
1383+
},
12801384
{
12811385
Query: "select * from t3 order by a",
12821386
Expected: []sql.Row{

enginetest/queries/query_plans.go

Lines changed: 12 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sql/analyzer/replace_count_star.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func replaceCountStar(ctx *sql.Context, a *Analyzer, n sql.Node, _ *plan.Scope,
6565
rt = t
6666
}
6767
}
68-
if rt == nil || sql.IsKeyless(rt.Table.Schema()) {
68+
if rt == nil {
6969
return n, transform.SameTree, nil
7070
}
7171

0 commit comments

Comments
 (0)