Skip to content

Commit 17a77a5

Browse files
elianddbclaude
andcommitted
Add comprehensive tests for preventing user and system variables in column defaults
Tests cover various scenarios for issue #9427: - User variables (@A) in column DEFAULT expressions - System variables (@@Version, @@session.sql_mode, etc.) in column DEFAULT expressions - User and system variables in GENERATED ALWAYS AS expressions - User and system variables in ALTER TABLE ADD COLUMN defaults - User and system variables in ALTER TABLE ALTER COLUMN SET DEFAULT All tests verify that the appropriate ErrColumnDefaultUserVariable error is thrown to match MySQL behavior. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent f777d41 commit 17a77a5

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

enginetest/queries/column_default_queries.go

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,4 +940,120 @@ var ColumnDefaultTests = []ScriptTest{
940940
},
941941
},
942942
},
943+
{
944+
Name: "User variables in column defaults are not allowed",
945+
SetUpScript: []string{
946+
"set @a = 1;",
947+
},
948+
Assertions: []ScriptTestAssertion{
949+
{
950+
Query: "CREATE TABLE t(i int DEFAULT (@a));",
951+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
952+
},
953+
{
954+
Query: "CREATE TABLE t(i int DEFAULT ((@a)));",
955+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
956+
},
957+
{
958+
Query: "CREATE TABLE t(i int DEFAULT (@a + 1));",
959+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
960+
},
961+
},
962+
},
963+
{
964+
Name: "System variables in column defaults are not allowed",
965+
Assertions: []ScriptTestAssertion{
966+
{
967+
Query: "CREATE TABLE t(i int DEFAULT (@@version));",
968+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
969+
},
970+
{
971+
Query: "CREATE TABLE t(i int DEFAULT (@@session.sql_mode));",
972+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
973+
},
974+
{
975+
Query: "CREATE TABLE t(i int DEFAULT (@@global.max_connections));",
976+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
977+
},
978+
},
979+
},
980+
{
981+
Name: "User variables in generated columns are not allowed",
982+
SetUpScript: []string{
983+
"set @a = 1;",
984+
},
985+
Assertions: []ScriptTestAssertion{
986+
{
987+
Query: "CREATE TABLE t(i int GENERATED ALWAYS AS (@a));",
988+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
989+
},
990+
{
991+
Query: "CREATE TABLE t(i int GENERATED ALWAYS AS (@a + 1));",
992+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
993+
},
994+
},
995+
},
996+
{
997+
Name: "System variables in generated columns are not allowed",
998+
Assertions: []ScriptTestAssertion{
999+
{
1000+
Query: "CREATE TABLE t(i int GENERATED ALWAYS AS (@@version));",
1001+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
1002+
},
1003+
{
1004+
Query: "CREATE TABLE t(i int GENERATED ALWAYS AS (@@session.sql_mode));",
1005+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
1006+
},
1007+
},
1008+
},
1009+
{
1010+
Name: "User variables in ALTER TABLE ADD COLUMN defaults are not allowed",
1011+
SetUpScript: []string{
1012+
"CREATE TABLE t(pk int PRIMARY KEY);",
1013+
"set @a = 1;",
1014+
},
1015+
Assertions: []ScriptTestAssertion{
1016+
{
1017+
Query: "ALTER TABLE t ADD COLUMN i int DEFAULT (@a);",
1018+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
1019+
},
1020+
},
1021+
},
1022+
{
1023+
Name: "System variables in ALTER TABLE ADD COLUMN defaults are not allowed",
1024+
SetUpScript: []string{
1025+
"CREATE TABLE t(pk int PRIMARY KEY);",
1026+
},
1027+
Assertions: []ScriptTestAssertion{
1028+
{
1029+
Query: "ALTER TABLE t ADD COLUMN i int DEFAULT (@@version);",
1030+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
1031+
},
1032+
},
1033+
},
1034+
{
1035+
Name: "User variables in ALTER TABLE ALTER COLUMN defaults are not allowed",
1036+
SetUpScript: []string{
1037+
"CREATE TABLE t(pk int PRIMARY KEY, i int);",
1038+
"set @a = 1;",
1039+
},
1040+
Assertions: []ScriptTestAssertion{
1041+
{
1042+
Query: "ALTER TABLE t ALTER COLUMN i SET DEFAULT (@a);",
1043+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
1044+
},
1045+
},
1046+
},
1047+
{
1048+
Name: "System variables in ALTER TABLE ALTER COLUMN defaults are not allowed",
1049+
SetUpScript: []string{
1050+
"CREATE TABLE t(pk int PRIMARY KEY, i int);",
1051+
},
1052+
Assertions: []ScriptTestAssertion{
1053+
{
1054+
Query: "ALTER TABLE t ALTER COLUMN i SET DEFAULT (@@version);",
1055+
ExpectedErr: sql.ErrColumnDefaultUserVariable,
1056+
},
1057+
},
1058+
},
9431059
}

0 commit comments

Comments
 (0)