Add tests for ALTER TABLE authorization callbacks and other things.
FossilOrigin-Name: 55cad8d15040bc01300bfe5efcc7225dd9695c2972c0f9b4bbd311ed57188e1f
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
C Fix\sauthorization\scallbacks\sfor\sthe\snew\scommands\son\sthis\sbranch.
|
||||
D 2025-09-27T16:13:56.339
|
||||
C Add\stests\sfor\sALTER\sTABLE\sauthorization\scallbacks\sand\sother\sthings.
|
||||
D 2025-09-27T18:08:19.486
|
||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
@@ -726,7 +726,7 @@ F src/os_win.c f81a7cffdfe8c593a840895b3f64290714f0186b06302d2c397012252d830374
|
||||
F src/os_win.h 4c247cdb6d407c75186c94a1e84d5a22cbae4adcec93fcae8d2bc1f956fd1f19
|
||||
F src/pager.c 113f9149092ccff6cf90e97c2611200e5a237f13d26c394bc9fd933377852764
|
||||
F src/pager.h 6137149346e6c8a3ddc1eeb40aee46381e9bc8b0fcc6dda8a1efde993c2275b8
|
||||
F src/parse.y 834ba749a6a9f34ef49ad4dd30531252739f6f796f1589d0c4ba548385276535
|
||||
F src/parse.y 42642f5090924ad566dc6ae602f5a752209b2fab88a1e7b1c97e4a7bcdc73241
|
||||
F src/pcache.c 588cc3c5ccaaadde689ed35ce5c5c891a1f7b1f4d1f56f6cf0143b74d8ee6484
|
||||
F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
|
||||
F src/pcache1.c 131ca0daf4e66b4608d2945ae76d6ed90de3f60539afbd5ef9ec65667a5f2fcd
|
||||
@@ -837,9 +837,9 @@ F test/alter2.test 7e3d26ab409df52df887b366a63902c3429b935c41cb962fd58ffc25784f2
|
||||
F test/alter3.test dcdd5f850f30656a45a0f05e41abfb52b74bbf6ccba165d0f7adf6b0116e4fd6
|
||||
F test/alter4.test 37cafe164067a6590a0ee4cec780bddbbaa33dc50b11542dcfbe0e65626494fd
|
||||
F test/alterauth.test 63442ba61ceb0c1eeb63aac1f4f5cebfa509d352276059d27106ae256bafc959
|
||||
F test/alterauth2.test 48967abae0494d9a300d1c92473d99fcb66edfcc23579c89322f033f49410adc
|
||||
F test/alterauth2.test 4b74fa8f184f4736497317feb587b65759eb87d87acfe3a8ef433d4d18bb002b
|
||||
F test/altercol.test b43fb5725332f4cf8cff0280605202c1672e808281accea60a066d2ccc5129e5
|
||||
F test/altercons.test 33fb8117e669b14536a7cf5df694a6027e5773c2e5d12dd2a240c7b2046c9cc5
|
||||
F test/altercons.test b40249578a58d5b5fb8abbb2c557b7f20497474c1afafec515a4b3ef7160de32
|
||||
F test/altercorrupt.test 2e1d705342cf9d7de884518ddbb053fd52d7e60d2b8869b7b63b2fda68435c12
|
||||
F test/alterdropcol.test a653a3945f964d26845ec0cd0a8e74189f46de3119a984c5bc45457da392612e
|
||||
F test/alterdropcol2.test 527fce683b200d620f560f666c44ae33e22728e990a10a48a543280dfd4b4d41
|
||||
@@ -2170,8 +2170,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||
F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
P d939b25d76fe70a3255cfe38097d4489323028cd05e5512a98dce06b48eee445
|
||||
R df87aa2ddd3ec2e579d06904451a2687
|
||||
P 0165e2afa8b640c9d7a31414f06144e089844dc13691f06f363a50d14fec62bc
|
||||
R 0819fcbc2a55072aad51eafba2f369d4
|
||||
U dan
|
||||
Z afa946c19eec2db0cf6e37984f361e84
|
||||
Z bef260ba3e3ba846b8729475ed6f1ef0
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
0165e2afa8b640c9d7a31414f06144e089844dc13691f06f363a50d14fec62bc
|
||||
55cad8d15040bc01300bfe5efcc7225dd9695c2972c0f9b4bbd311ed57188e1f
|
||||
|
||||
+3
-2
@@ -1832,11 +1832,13 @@ cmd ::= ALTER TABLE fullname(X) RENAME TO nm(Z). {
|
||||
sqlite3AlterRenameTable(pParse,X,&Z);
|
||||
}
|
||||
|
||||
// The ALTER TABLE ADD COLUMN command. This is broken into two sections so
|
||||
// that sqlite3AlterBeginAddColumn() is called before parsing the various
|
||||
// constraints and so on (carglist) attached to the new column definition.
|
||||
cmd ::= alter_add(Y) carglist. {
|
||||
Y.n = (int)(pParse->sLastToken.z-Y.z) + pParse->sLastToken.n;
|
||||
sqlite3AlterFinishAddColumn(pParse, &Y);
|
||||
}
|
||||
|
||||
alter_add(A) ::= ALTER TABLE fullname(X) ADD kwcolumn_opt nm(Y) typetoken(Z). {
|
||||
disableLookaside(pParse);
|
||||
sqlite3AlterBeginAddColumn(pParse, X);
|
||||
@@ -1859,7 +1861,6 @@ cmd ::= ALTER TABLE fullname(X) ALTER kwcolumn_opt nm(Y) DROP NOT NULL. {
|
||||
cmd ::= ALTER TABLE fullname(X) ALTER kwcolumn_opt nm(Y) SET NOT(Z) NULL onconf. {
|
||||
sqlite3AlterSetNotNull(pParse, X, &Y, &Z);
|
||||
}
|
||||
|
||||
cmd ::= ALTER TABLE fullname(X) ADD CONSTRAINT(Y) nm(Z) CHECK LP(A) expr RP(B) onconf. {
|
||||
sqlite3AlterAddConstraint(pParse, X, &Y, &Z, A.z+1, (B.z-A.z-1));
|
||||
}
|
||||
|
||||
@@ -116,4 +116,55 @@ do_auth_test 1.3 {
|
||||
{SQLITE_UPDATE sqlite_temp_master sql temp {}}
|
||||
}
|
||||
|
||||
do_auth_test 1.4 {
|
||||
ALTER TABLE t2 ALTER COLUMN b SET NOT NULL;
|
||||
} {
|
||||
{SQLITE_ALTER_TABLE main t2 b {}}
|
||||
{SQLITE_FUNCTION {} sqlite_add_constraint {} {}}
|
||||
{SQLITE_FUNCTION {} sqlite_drop_constraint {} {}}
|
||||
{SQLITE_FUNCTION {} sqlite_fail {} {}}
|
||||
{SQLITE_READ sqlite_master sql main {}}
|
||||
{SQLITE_READ sqlite_master tbl_name main {}}
|
||||
{SQLITE_READ sqlite_master type main {}}
|
||||
{SQLITE_READ t2 b main {}}
|
||||
{SQLITE_SELECT {} {} {} {}}
|
||||
{SQLITE_UPDATE sqlite_master sql main {}}
|
||||
}
|
||||
do_auth_test 1.5 {
|
||||
ALTER TABLE t2 ALTER COLUMN 'b' DROP NOT NULL;
|
||||
} {
|
||||
{SQLITE_ALTER_TABLE main t2 b {}}
|
||||
{SQLITE_FUNCTION {} sqlite_drop_constraint {} {}}
|
||||
{SQLITE_READ sqlite_master sql main {}}
|
||||
{SQLITE_READ sqlite_master tbl_name main {}}
|
||||
{SQLITE_READ sqlite_master type main {}}
|
||||
{SQLITE_UPDATE sqlite_master sql main {}}
|
||||
}
|
||||
|
||||
do_auth_test 1.6 {
|
||||
ALTER TABLE t2 ADD CONSTRAINT abc CHECK (aaa>b)
|
||||
} {
|
||||
{SQLITE_ALTER_TABLE main t2 {} {}}
|
||||
{SQLITE_FUNCTION {} sqlite_add_constraint {} {}}
|
||||
{SQLITE_FUNCTION {} sqlite_fail {} {}}
|
||||
{SQLITE_FUNCTION {} sqlite_find_constraint {} {}}
|
||||
{SQLITE_READ sqlite_master sql main {}}
|
||||
{SQLITE_READ sqlite_master tbl_name main {}}
|
||||
{SQLITE_READ sqlite_master type main {}}
|
||||
{SQLITE_READ t2 aaa main {}}
|
||||
{SQLITE_READ t2 b main {}}
|
||||
{SQLITE_SELECT {} {} {} {}}
|
||||
{SQLITE_UPDATE sqlite_master sql main {}}
|
||||
}
|
||||
do_auth_test 1.7 {
|
||||
ALTER TABLE t2 DROP CONSTRAINT abc;
|
||||
} {
|
||||
{SQLITE_ALTER_TABLE main t2 {} {}}
|
||||
{SQLITE_FUNCTION {} sqlite_drop_constraint {} {}}
|
||||
{SQLITE_READ sqlite_master sql main {}}
|
||||
{SQLITE_READ sqlite_master tbl_name main {}}
|
||||
{SQLITE_READ sqlite_master type main {}}
|
||||
{SQLITE_UPDATE sqlite_master sql main {}}
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
@@ -228,6 +228,14 @@ do_execsql_test 6.4.1 {
|
||||
SELECT sql FROM sqlite_schema WHERE tbl_name='b1'
|
||||
} {{CREATE TABLE b1(a, b, CONSTRAINT abc CHECK (a!=2))}}
|
||||
|
||||
do_execsql_test 6.5 {
|
||||
CREATE TABLE abc(x,y);
|
||||
}
|
||||
|
||||
do_catchsql_test 6.6 {
|
||||
ALTER TABLE abc ADD CHECK (z>=0);
|
||||
} {1 {no such column: z}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Try attaching a NOT NULL to a generated column.
|
||||
#
|
||||
@@ -270,4 +278,43 @@ do_catchsql_test 7.9 {
|
||||
ALTER TABLE v1 ALTER a DROP NOT NULL
|
||||
} {1 {cannot edit constraints of view "v1"}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
do_execsql_test 8.0 {
|
||||
CREATE TABLE t1(a INTEGER PRIMARY KEY, b NOT NULL, c CHECK (c!=555), d);
|
||||
INSERT INTO t1 VALUES(1, 1, 1, 1);
|
||||
INSERT INTO t1 VALUES(2, 2, 2, 2);
|
||||
INSERT INTO t1 VALUES(3, 3, 3, 3);
|
||||
}
|
||||
|
||||
do_execsql_test 8.1.1 {
|
||||
ALTER TABLE t1 ALTER a SET NOT NULL;
|
||||
ALTER TABLE t1 ALTER b SET NOT NULL;
|
||||
ALTER TABLE t1 ALTER c SET NOT NULL;
|
||||
ALTER TABLE t1 ALTER d SET NOT NULL;
|
||||
}
|
||||
|
||||
do_execsql_test 8.1.2 {
|
||||
SELECT sql FROM sqlite_schema WHERE tbl_name = 't1'
|
||||
} {{CREATE TABLE t1(a INTEGER PRIMARY KEY NOT NULL, b NOT NULL, c CHECK (c!=555) NOT NULL, d NOT NULL)}}
|
||||
|
||||
do_execsql_test 8.1.3 {
|
||||
SELECT * FROM t1 WHERE a=2;
|
||||
} {2 2 2 2}
|
||||
|
||||
do_execsql_test 8.2.1 {
|
||||
ALTER TABLE t1 ALTER a DROP NOT NULL;
|
||||
ALTER TABLE t1 ALTER b DROP NOT NULL;
|
||||
ALTER TABLE t1 ALTER c DROP NOT NULL;
|
||||
ALTER TABLE t1 ALTER d DROP NOT NULL;
|
||||
}
|
||||
|
||||
do_execsql_test 8.2.2 {
|
||||
SELECT sql FROM sqlite_schema WHERE tbl_name = 't1'
|
||||
} {{CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c CHECK (c!=555), d)}}
|
||||
|
||||
do_execsql_test 8.2.3 {
|
||||
SELECT * FROM t1 WHERE a=3;
|
||||
} {3 3 3 3}
|
||||
|
||||
finish_test
|
||||
|
||||
Reference in New Issue
Block a user