Skip to content

Commit 9345190

Browse files
committed
Merge branch 'main' into max/stats-iter-change
2 parents e976324 + f9c30b3 commit 9345190

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1788
-270
lines changed

engine.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ func (e *Engine) EngineEventScheduler() sql.EventScheduler {
816816
// getter function, |ctxGetterFunc, the EventScheduler |status|, and the |period| for the event scheduler
817817
// to check for events to execute. If |period| is less than 1, then it is ignored and the default period
818818
// (30s currently) is used. This function also initializes the EventScheduler of the analyzer of this engine.
819-
func (e *Engine) InitializeEventScheduler(ctxGetterFunc func() (*sql.Context, func() error, error), status eventscheduler.SchedulerStatus, period int) error {
819+
func (e *Engine) InitializeEventScheduler(ctxGetterFunc func() (*sql.Context, error), status eventscheduler.SchedulerStatus, period int) error {
820820
var err error
821821
e.EventScheduler, err = eventscheduler.InitEventScheduler(e.Analyzer, e.BackgroundThreads, ctxGetterFunc, status, e.executeEvent, period)
822822
if err != nil {

enginetest/engine_only_test.go

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,47 @@ func TestRegex(t *testing.T) {
781781
},
782782
},
783783
},
784+
{
785+
Name: "REGEXP caching behavior",
786+
SetUpScript: []string{
787+
"CREATE TABLE test (v1 TEXT, v2 INT, v3 INT);",
788+
"INSERT INTO test VALUES ('abc', 1, 2), ('[d-i]+', 2, 3), ('ghi', 3, 4);",
789+
},
790+
Assertions: []queries.ScriptTestAssertion{
791+
{
792+
Query: "SELECT REGEXP_LIKE('abc def ghi', 'abc') FROM test;",
793+
Expected: []sql.Row{{1}, {1}, {1}},
794+
},
795+
{
796+
Query: "SELECT REGEXP_LIKE('abc def ghi', v1) FROM test;",
797+
Expected: []sql.Row{{1}, {1}, {1}},
798+
},
799+
{
800+
Query: "SELECT REGEXP_INSTR('abc def ghi', '[a-z]+', 1, 2) FROM test;",
801+
Expected: []sql.Row{{5}, {5}, {5}},
802+
},
803+
{
804+
Query: "SELECT REGEXP_INSTR('abc def ghi', v1, 1, 1) FROM test;",
805+
Expected: []sql.Row{{1}, {5}, {9}},
806+
},
807+
{
808+
Query: "SELECT REGEXP_INSTR('abc def ghi', '[a-z]+', v2, v3) FROM test;",
809+
Expected: []sql.Row{{5}, {9}, {0}},
810+
},
811+
{
812+
Query: "SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 2) FROM test;",
813+
Expected: []sql.Row{{"def"}, {"def"}, {"def"}},
814+
},
815+
{
816+
Query: "SELECT REGEXP_SUBSTR('abc def ghi', v1, 1, 1) FROM test;",
817+
Expected: []sql.Row{{"abc"}, {"def"}, {"ghi"}},
818+
},
819+
{
820+
Query: "SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', v2, v3) FROM test;",
821+
Expected: []sql.Row{{"def"}, {"ghi"}, {nil}},
822+
},
823+
},
824+
},
784825
} {
785826
enginetest.TestScript(t, harness, test)
786827
}
@@ -1037,7 +1078,7 @@ func newDatabase() (*sql2.DB, func()) {
10371078
Protocol: "tcp",
10381079
Address: fmt.Sprintf("localhost:%d", port),
10391080
}
1040-
srv, err := server.NewServer(cfg, engine, harness.SessionBuilder(), nil)
1081+
srv, err := server.NewServer(cfg, engine, sql.NewContext, harness.SessionBuilder(), nil)
10411082
if err != nil {
10421083
panic(err)
10431084
}

enginetest/enginetests.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2142,7 +2142,7 @@ func TestUserAuthentication(t *testing.T, h Harness) {
21422142
require.FailNow(t, "harness must implement ServerHarness")
21432143
}
21442144

2145-
s, err := server.NewServer(serverConfig, engine, serverHarness.SessionBuilder(), nil)
2145+
s, err := server.NewServer(serverConfig, engine, sql.NewContext, serverHarness.SessionBuilder(), nil)
21462146
require.NoError(t, err)
21472147
go func() {
21482148
err := s.Start()
@@ -5695,7 +5695,7 @@ func testCharsetCollationWire(t *testing.T, h Harness, sessionBuilder server.Ses
56955695
defer engine.Close()
56965696
engine.EngineAnalyzer().Catalog.MySQLDb.AddRootAccount()
56975697

5698-
s, err := server.NewServer(serverConfig, engine, sessionBuilder, nil)
5698+
s, err := server.NewServer(serverConfig, engine, sql.NewContext, sessionBuilder, nil)
56995699
require.NoError(t, err)
57005700
go func() {
57015701
err := s.Start()
@@ -5811,7 +5811,7 @@ func TestTypesOverWire(t *testing.T, harness ClientHarness, sessionBuilder serve
58115811
Address: fmt.Sprintf("localhost:%d", port),
58125812
MaxConnections: 1000,
58135813
}
5814-
s, err := server.NewServer(serverConfig, engine, sessionBuilder, nil)
5814+
s, err := server.NewServer(serverConfig, engine, sql.NewContext, sessionBuilder, nil)
58155815
require.NoError(t, err)
58165816
go func() {
58175817
err := s.Start()

enginetest/queries/alter_table_queries.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,19 @@ var AlterTableScripts = []ScriptTest{
4545
},
4646
},
4747
},
48+
{
49+
Name: "issue 8917: exec error nested in block doesn't panic",
50+
SetUpScript: []string{
51+
"CREATE TABLE b(b int primary key)",
52+
"CREATE TABLE a(a int primary key, b int, CONSTRAINT `fk` FOREIGN KEY (b) REFERENCES b (b))",
53+
},
54+
Assertions: []ScriptTestAssertion{
55+
{
56+
Query: "alter table a add column c varchar(100), modify column b varchar(100)",
57+
ExpectedErr: sql.ErrForeignKeyTypeChange,
58+
},
59+
},
60+
},
4861
{
4962
Name: "variety of alter column statements in a single statement",
5063
SetUpScript: []string{

enginetest/queries/insert_queries.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,6 +1712,33 @@ var InsertScripts = []ScriptTest{
17121712
},
17131713
},
17141714
},
1715+
{
1716+
Name: "Insert on duplicate key references table in subquery with different schema lengths",
1717+
SetUpScript: []string{
1718+
"create table a (i int primary key, j int, k int)",
1719+
"insert into a values (1, 2, 3)",
1720+
"create table b (i int primary key)",
1721+
"insert into b values (1)",
1722+
},
1723+
Assertions: []ScriptTestAssertion{
1724+
{
1725+
Query: "insert into a select * from (select i from b) as bb on duplicate key update a.i = bb.i + 100;",
1726+
ExpectedErrStr: "number of values does not match number of columns provided",
1727+
},
1728+
{
1729+
Query: "insert into a (i) select * from (select i from b) as bb on duplicate key update a.i = bb.i + 100;",
1730+
Expected: []sql.Row{
1731+
{types.NewOkResult(2)},
1732+
},
1733+
},
1734+
{
1735+
Query: "select * from a",
1736+
Expected: []sql.Row{
1737+
{101, 2, 3},
1738+
},
1739+
},
1740+
},
1741+
},
17151742
{
17161743
Name: "Insert on duplicate key references table in aliased subquery",
17171744
SetUpScript: []string{

enginetest/queries/queries.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,26 @@ var QueryTests = []QueryTest{
842842
Query: "SELECT 1 WHERE ((1 IN (NULL * 1)) IS NULL);",
843843
Expected: []sql.Row{{1}},
844844
},
845+
{
846+
Query: "select coalesce(1, 0.0);",
847+
Expected: []sql.Row{{"1"}},
848+
},
849+
{
850+
Query: "select coalesce(1, '0');",
851+
Expected: []sql.Row{{"1"}},
852+
},
853+
{
854+
Query: "select coalesce(1, 'x');",
855+
Expected: []sql.Row{{"1"}},
856+
},
857+
{
858+
Query: "select coalesce(1, 1);",
859+
Expected: []sql.Row{{1}},
860+
},
861+
{
862+
Query: "select coalesce(1, CAST('2017-08-29' AS DATE))",
863+
Expected: []sql.Row{{"1"}},
864+
},
845865
{
846866
Query: "SELECT count(*) from mytable WHERE ((i IN (NULL >= 1)) IS NULL);",
847867
Expected: []sql.Row{{3}},
@@ -1052,6 +1072,16 @@ Select * from (
10521072
) dt;`,
10531073
Expected: []sql.Row{{1}},
10541074
},
1075+
{
1076+
Query: `
1077+
WITH RECURSIVE cte(d) AS (
1078+
SELECT 0
1079+
UNION ALL
1080+
SELECT cte.d + 1 FROM cte limit 3
1081+
)
1082+
SELECT * FROM cte WHERE d = 2;`,
1083+
Expected: []sql.Row{{2}},
1084+
},
10551085
{
10561086
// https://github.com/dolthub/dolt/issues/5642
10571087
Query: "SELECT count(*) FROM mytable WHERE i = 3720481604718463778705849469618542795;",
@@ -10140,6 +10170,34 @@ from typestable`,
1014010170
{false},
1014110171
},
1014210172
},
10173+
10174+
{
10175+
Query: "explain select 1",
10176+
SkipServerEngine: true,
10177+
Expected: []sql.Row{
10178+
{1, "SELECT", "NULL", "NULL", "NULL", "NULL", "NULL", "NULL", "NULL", "NULL", "NULL", ""},
10179+
},
10180+
},
10181+
{
10182+
Query: "explain plan select 1",
10183+
SkipServerEngine: true,
10184+
Expected: []sql.Row{
10185+
{"Project"},
10186+
{" ├─ columns: [1]"},
10187+
{" └─ Table"},
10188+
{" └─ name: "},
10189+
},
10190+
},
10191+
{
10192+
Query: "explain format=tree select 1",
10193+
SkipServerEngine: true,
10194+
Expected: []sql.Row{
10195+
{"Project"},
10196+
{" ├─ columns: [1]"},
10197+
{" └─ Table"},
10198+
{" └─ name: "},
10199+
},
10200+
},
1014310201
}
1014410202

1014510203
var KeylessQueries = []QueryTest{

enginetest/queries/query_plans.go

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

0 commit comments

Comments
 (0)