Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion enginetest/enginetests.go
Original file line number Diff line number Diff line change
Expand Up @@ -4379,7 +4379,7 @@ func TestColumnDefaults(t *testing.T, harness Harness) {
return nil
})
TestQueryWithContext(t, ctx, e, harness, "select * from t10 order by 1", []sql.Row{
{1, now, now.Truncate(time.Second), now, now.Truncate(time.Second)},
{1, now.Truncate(time.Second), now.Truncate(time.Second), now.Truncate(time.Second), now.Truncate(time.Second)},
}, nil, nil)
})

Expand Down
4 changes: 2 additions & 2 deletions enginetest/queries/alter_table_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,15 +141,15 @@ var AlterTableScripts = []ScriptTest{
},
{
Query: "show create table t;",
Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT (CURRENT_TIMESTAMP()),\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.Row{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT CURRENT_TIMESTAMP,\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)}},
},
{
Query: "show create table t;",
Expected: []sql.Row{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT (CURRENT_TIMESTAMP()),\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.Row{{"t", "CREATE TABLE `t` (\n `pk` int NOT NULL,\n `col1` timestamp(6) DEFAULT CURRENT_TIMESTAMP,\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;",
Expand Down
4 changes: 2 additions & 2 deletions enginetest/queries/column_default_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -485,9 +485,9 @@ var ColumnDefaultTests = []ScriptTest{
Query: "desc t33",
Expected: []sql.Row{
{"pk", "varchar(100)", "NO", "PRI", "(replace(uuid(), '-', ''))", "DEFAULT_GENERATED"},
{"v1_new", "timestamp(6)", "YES", "", "(NOW())", "DEFAULT_GENERATED"},
{"v1_new", "timestamp(6)", "YES", "", "CURRENT_TIMESTAMP", "DEFAULT_GENERATED"},
{"v2", "varchar(100)", "YES", "", "NULL", ""},
{"v3", "datetime(6)", "YES", "", "(CURRENT_TIMESTAMP())", "DEFAULT_GENERATED"},
{"v3", "datetime(6)", "YES", "", "CURRENT_TIMESTAMP", "DEFAULT_GENERATED"},
},
},
{
Expand Down
2 changes: 1 addition & 1 deletion enginetest/queries/create_table_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ var CreateTableQueries = []WriteQueryTest{
)`,
ExpectedWriteResult: []sql.Row{{types.NewOkResult(0)}},
SelectQuery: "SHOW CREATE TABLE td",
ExpectedSelect: []sql.Row{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 (NOW()),\n `col8` bigint DEFAULT (NOW()),\n PRIMARY KEY (`pk`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"}},
ExpectedSelect: []sql.Row{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"}},
},
{
WriteQuery: `CREATE TABLE t1 (i int PRIMARY KEY, j varchar(MAX))`,
Expand Down
282 changes: 277 additions & 5 deletions enginetest/queries/update_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -780,6 +780,26 @@ var OnUpdateExprScripts = []ScriptTest{
Query: "create table tt (i int, d date on update current_timestamp)",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "create table tt (i int, ts timestamp on update now(1))",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "create table tt (i int, ts timestamp on update current_timestamp(1))",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "create table tt (i int, ts timestamp on update current_timestamp(100))",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "create table tt (i int, ts timestamp on update localtime(1))",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "create table tt (i int, ts timestamp on update localtimestamp(1))",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "alter table t modify column ts timestamp on update (5)",
ExpectedErrStr: "syntax error at position 53 near 'update'",
Expand All @@ -792,6 +812,10 @@ var OnUpdateExprScripts = []ScriptTest{
Query: "alter table t modify column t date on update current_timestamp",
ExpectedErr: sql.ErrInvalidOnUpdate,
},
{
Query: "select current_timestamp(i) from t",
ExpectedErrStr: "syntax error at position 27 near 'i'",
},
},
},
{
Expand All @@ -806,7 +830,7 @@ var OnUpdateExprScripts = []ScriptTest{
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp DEFAULT 0 ON UPDATE (CURRENT_TIMESTAMP())\n" +
" `ts` timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
Expand Down Expand Up @@ -877,7 +901,7 @@ var OnUpdateExprScripts = []ScriptTest{
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp DEFAULT (CURRENT_TIMESTAMP()) ON UPDATE (CURRENT_TIMESTAMP())\n" +
" `ts` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
Expand Down Expand Up @@ -961,7 +985,7 @@ var OnUpdateExprScripts = []ScriptTest{
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp DEFAULT 0 ON UPDATE (CURRENT_TIMESTAMP())\n" +
" `ts` timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
Expand Down Expand Up @@ -1029,8 +1053,8 @@ var OnUpdateExprScripts = []ScriptTest{
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int NOT NULL,\n" +
" `ts` timestamp DEFAULT 0 ON UPDATE (CURRENT_TIMESTAMP()),\n" +
" `dt` datetime DEFAULT 0 ON UPDATE (CURRENT_TIMESTAMP()),\n" +
" `ts` timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,\n" +
" `dt` datetime DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,\n" +
" PRIMARY KEY (`i`)\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
Expand Down Expand Up @@ -1215,4 +1239,252 @@ var OnUpdateExprScripts = []ScriptTest{
},
},
},
{
Name: "now() synonyms",
SetUpScript: []string{
"create table t (i int, ts timestamp);",
},
Assertions: []ScriptTestAssertion{
{
Query: "create table t1 (i int, ts timestamp on update now())",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t1;",
Expected: []sql.Row{
{"t1", "CREATE TABLE `t1` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t2 (i int, ts timestamp on update now(0))",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t2;",
Expected: []sql.Row{
{"t2", "CREATE TABLE `t2` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t3 (i int, ts timestamp on update localtime)",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t3;",
Expected: []sql.Row{
{"t3", "CREATE TABLE `t3` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t4 (i int, ts timestamp on update localtime())",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t4;",
Expected: []sql.Row{
{"t4", "CREATE TABLE `t4` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t5 (i int, ts timestamp on update localtime(0))",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t5;",
Expected: []sql.Row{
{"t5", "CREATE TABLE `t5` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t6 (i int, ts timestamp on update localtimestamp)",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t6;",
Expected: []sql.Row{
{"t6", "CREATE TABLE `t6` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t7 (i int, ts timestamp on update localtimestamp())",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t7;",
Expected: []sql.Row{
{"t7", "CREATE TABLE `t7` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "create table t8 (i int, ts timestamp on update localtimestamp(0))",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t8;",
Expected: []sql.Row{
{"t8", "CREATE TABLE `t8` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update now()",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update now(0)",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update localtime",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update localtime()",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update localtime(0)",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update localtimestamp",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update localtimestamp()",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
{
Query: "alter table t modify column ts timestamp on update localtimestamp(0)",
Expected: []sql.Row{
{types.NewOkResult(0)},
},
},
{
Query: "show create table t;",
Expected: []sql.Row{
{"t", "CREATE TABLE `t` (\n" +
" `i` int,\n" +
" `ts` timestamp ON UPDATE CURRENT_TIMESTAMP\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin"},
},
},
},
},
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/dolthub/go-icu-regex v0.0.0-20230524105445-af7e7991c97e
github.com/dolthub/jsonpath v0.0.2-0.20230525180605-8dc13778fd72
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81
github.com/dolthub/vitess v0.0.0-20231220170902-3729729e89b1
github.com/dolthub/vitess v0.0.0-20240103005833-78fa0d3c4815
github.com/go-kit/kit v0.10.0
github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d
github.com/gocraft/dbr/v2 v2.7.2
Expand Down
6 changes: 2 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,8 @@ github.com/dolthub/jsonpath v0.0.2-0.20230525180605-8dc13778fd72 h1:NfWmngMi1CYU
github.com/dolthub/jsonpath v0.0.2-0.20230525180605-8dc13778fd72/go.mod h1:ZWUdY4iszqRQ8OcoXClkxiAVAoWoK3cq0Hvv4ddGRuM=
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-20231207010700-88fb35413580 h1:OSp1g3tRBMVIyxza4LN20rZ6yYEKqjf5hNNisVg/Lns=
github.com/dolthub/vitess v0.0.0-20231207010700-88fb35413580/go.mod h1:IwjNXSQPymrja5pVqmfnYdcy7Uv7eNJNBPK/MEh9OOw=
github.com/dolthub/vitess v0.0.0-20231220170902-3729729e89b1 h1:7uygH2yYhLka7Slzugf8i9rjQv5EDDphGbofawKdILg=
github.com/dolthub/vitess v0.0.0-20231220170902-3729729e89b1/go.mod h1:IwjNXSQPymrja5pVqmfnYdcy7Uv7eNJNBPK/MEh9OOw=
github.com/dolthub/vitess v0.0.0-20240103005833-78fa0d3c4815 h1:3mVQUpOVp6pLTE2kgvn8yolJ8SgTgyWEgVNIoVd/Hko=
github.com/dolthub/vitess v0.0.0-20240103005833-78fa0d3c4815/go.mod h1:IwjNXSQPymrja5pVqmfnYdcy7Uv7eNJNBPK/MEh9OOw=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
Expand Down
Loading