mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Back out the change that allows typeless columns in strict tables. Replace
that capability with an ANY type for strict tables that will accept any datatype with BLOB affinity. FossilOrigin-Name: d8fd1a2bfd51848ea612142d23475b268b3f5269e558f2e09713d1ac18b18274
This commit is contained in:
20
manifest
20
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Allow\stypeless\scolumns\sin\sSTRICT\stables\sthat\sare\sable\sto\saccept\sany\ndata\stype.
|
C Back\sout\sthe\schange\sthat\sallows\stypeless\scolumns\sin\sstrict\stables.\s\sReplace\nthat\scapability\swith\san\sANY\stype\sfor\sstrict\stables\sthat\swill\saccept\sany\ndatatype\swith\sBLOB\saffinity.
|
||||||
D 2021-08-21T20:54:19.283
|
D 2021-08-23T10:28:02.736
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -488,7 +488,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
|||||||
F src/btree.c e204a9c8fb4fe5dbb910a863ba487f4af9b5c501254ec4ccbfcdd6b1f65b7fb4
|
F src/btree.c e204a9c8fb4fe5dbb910a863ba487f4af9b5c501254ec4ccbfcdd6b1f65b7fb4
|
||||||
F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
|
F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
|
||||||
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
|
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
|
||||||
F src/build.c f9246c633829153bb6d41f03eeb5a121a6e618b48e20a5e9c18927c381df072d
|
F src/build.c 8fa6deebf8726339a5aafb322e9d79c48950b994f33f17460c5393ef593d202e
|
||||||
F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
|
F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
|
F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
|
||||||
@@ -500,7 +500,7 @@ F src/expr.c e98375fc63552cc8cdd36a41bdca3039cb603d9fe67abd9c9f40adae8405fbc5
|
|||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c 1905af1821b88321e1bb9d6a69e704495b6844a9b6c29398d40117cc251e893c
|
F src/fkey.c 1905af1821b88321e1bb9d6a69e704495b6844a9b6c29398d40117cc251e893c
|
||||||
F src/func.c c224240cbc97fa5e9c4fe9acb128716cb835ca045532bca6951b7c45b020c56c
|
F src/func.c c224240cbc97fa5e9c4fe9acb128716cb835ca045532bca6951b7c45b020c56c
|
||||||
F src/global.c 24ba3b3e88dd2a70389388c3bc46fd55a44bfae3c44f76dad1ca00556f1c769a
|
F src/global.c 612ea60c9acbcb45754c2ed659b4a56936a06814718e969636fedc7e3b889808
|
||||||
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
||||||
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
||||||
F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
|
F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
|
||||||
@@ -549,7 +549,7 @@ F src/shell.c.in f795a4ae3c35631f5edcfa754c7824ff1d8a75b23a07e22e664b50f82e82634
|
|||||||
F src/sqlite.h.in 4e977a5e2ed1a9e8987ff65a2cab5f99a4298ebf040ea5ff636e1753339ff45a
|
F src/sqlite.h.in 4e977a5e2ed1a9e8987ff65a2cab5f99a4298ebf040ea5ff636e1753339ff45a
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h e97f4e9b509408fea4c4e9bef5a41608dfac343b4d3c7a990dedde1e19af9510
|
F src/sqlite3ext.h e97f4e9b509408fea4c4e9bef5a41608dfac343b4d3c7a990dedde1e19af9510
|
||||||
F src/sqliteInt.h a0e00a52b90f236c77fd0c0b839cc091d9926aca7627eb6ad8cf3f55a9847a71
|
F src/sqliteInt.h 4cb73cc4b9b7705ccfd5bdfb9c248a9772a90ba52f743dbab90d13123babe36b
|
||||||
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
|
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
|
||||||
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
|
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
|
||||||
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
||||||
@@ -616,7 +616,7 @@ F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
|
|||||||
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
|
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
|
||||||
F src/util.c eafc8cfeb66fdbf8839922d13019b7882f242ac31b383e3451aab7744c54df3e
|
F src/util.c eafc8cfeb66fdbf8839922d13019b7882f242ac31b383e3451aab7744c54df3e
|
||||||
F src/vacuum.c 454973a59fb20bb982efc2df568a098616db6328a0491b6e84e2e07f7333db45
|
F src/vacuum.c 454973a59fb20bb982efc2df568a098616db6328a0491b6e84e2e07f7333db45
|
||||||
F src/vdbe.c b228d775c269c4f44284ca9f855329f7cb429159d0f79e54408e4506c932b712
|
F src/vdbe.c 39755f468a623af5e805c65a9ad7edb7c45fd78239fd58a319c7db8dfacc302b
|
||||||
F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
|
F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
|
||||||
F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b
|
F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b
|
||||||
F src/vdbeapi.c aa5aaf2c37676b83af5724c6cd8207a3064ed46a217fd180957f75ac84f7a2a5
|
F src/vdbeapi.c aa5aaf2c37676b83af5724c6cd8207a3064ed46a217fd180957f75ac84f7a2a5
|
||||||
@@ -1425,7 +1425,7 @@ F test/stat.test 15a3106eddedfc882f64bc09f237b4169be4b92dd57c93031b8ff8b13af3e7c
|
|||||||
F test/statfault.test f525a7bf633e50afd027700e9a486090684b1ac1
|
F test/statfault.test f525a7bf633e50afd027700e9a486090684b1ac1
|
||||||
F test/stmt.test 54ed2cc0764bf3e48a058331813c3dbd19fc1d0827c3d8369914a5d8f564ec75
|
F test/stmt.test 54ed2cc0764bf3e48a058331813c3dbd19fc1d0827c3d8369914a5d8f564ec75
|
||||||
F test/stmtvtab1.test 6873dfb24f8e79cbb5b799b95c2e4349060eb7a3b811982749a84b359468e2d5
|
F test/stmtvtab1.test 6873dfb24f8e79cbb5b799b95c2e4349060eb7a3b811982749a84b359468e2d5
|
||||||
F test/strict1.test c5848830ebbf96b5126c41b16974d76110a50f8877dec42e222527cd292c47f5
|
F test/strict1.test 1e80c6ae71702c7cebacbc9c61d0c58e270b4cc8004c187296e39432015bf2be
|
||||||
F test/strict2.test fe1928b3768f51b39774d753ac7e71727718d1c3305eead0e5ea60f75e9e6b4c
|
F test/strict2.test fe1928b3768f51b39774d753ac7e71727718d1c3305eead0e5ea60f75e9e6b4c
|
||||||
F test/subjournal.test 8d4e2572c0ee9a15549f0d8e40863161295107e52f07a3e8012a2e1fdd093c49
|
F test/subjournal.test 8d4e2572c0ee9a15549f0d8e40863161295107e52f07a3e8012a2e1fdd093c49
|
||||||
F test/subquery.test d7268d193dd33d5505df965399d3a594e76ae13f
|
F test/subquery.test d7268d193dd33d5505df965399d3a594e76ae13f
|
||||||
@@ -1922,7 +1922,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 600f1991e5c0a5d89cd8776a157b6fd72c7489791085876925e8dd7ab146fe1f
|
P 1e2dcc2d4ee88c0aed40d1472b1c7d43fd43822891729ad6a2c55d5b912e7ad7
|
||||||
R 1fec1fd4fd154dec8605720039e4eeb3
|
R bc0e3fa5395544f8414a9f2fc5c4a24f
|
||||||
U drh
|
U drh
|
||||||
Z 8c2a8dfd9ff7ca38c0c83e9da4b64c4b
|
Z 6df95366126c115ab64940da7d4c5f2b
|
||||||
|
@@ -1 +1 @@
|
|||||||
1e2dcc2d4ee88c0aed40d1472b1c7d43fd43822891729ad6a2c55d5b912e7ad7
|
d8fd1a2bfd51848ea612142d23475b268b3f5269e558f2e09713d1ac18b18274
|
17
src/build.c
17
src/build.c
@@ -2606,12 +2606,19 @@ void sqlite3EndTable(
|
|||||||
p->tabFlags |= TF_Strict;
|
p->tabFlags |= TF_Strict;
|
||||||
for(ii=0; ii<p->nCol; ii++){
|
for(ii=0; ii<p->nCol; ii++){
|
||||||
Column *pCol = &p->aCol[ii];
|
Column *pCol = &p->aCol[ii];
|
||||||
if( pCol->eCType==COLTYPE_CUSTOM && pCol->colFlags & COLFLAG_HASTYPE ){
|
if( pCol->eCType==COLTYPE_CUSTOM ){
|
||||||
sqlite3ErrorMsg(pParse,
|
if( pCol->colFlags & COLFLAG_HASTYPE ){
|
||||||
"unknown datatype for %s.%s: \"%s\"",
|
sqlite3ErrorMsg(pParse,
|
||||||
p->zName, pCol->zCnName, sqlite3ColumnType(pCol, "")
|
"unknown datatype for %s.%s: \"%s\"",
|
||||||
);
|
p->zName, pCol->zCnName, sqlite3ColumnType(pCol, "")
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
sqlite3ErrorMsg(pParse, "missing datatype for %s.%s",
|
||||||
|
p->zName, pCol->zCnName);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
|
}else if( pCol->eCType==COLTYPE_ANY ){
|
||||||
|
pCol->affinity = SQLITE_AFF_BLOB;
|
||||||
}
|
}
|
||||||
if( (pCol->colFlags & COLFLAG_PRIMKEY)!=0
|
if( (pCol->colFlags & COLFLAG_PRIMKEY)!=0
|
||||||
&& p->iPKey!=ii
|
&& p->iPKey!=ii
|
||||||
|
@@ -364,8 +364,9 @@ const char sqlite3StrBINARY[] = "BINARY";
|
|||||||
** sqlite3_column_type() or sqlite3_value_type())
|
** sqlite3_column_type() or sqlite3_value_type())
|
||||||
** for each entry in sqlite3StdType[].
|
** for each entry in sqlite3StdType[].
|
||||||
*/
|
*/
|
||||||
const unsigned char sqlite3StdTypeLen[] = { 4, 3, 7, 4, 4 };
|
const unsigned char sqlite3StdTypeLen[] = { 3, 4, 3, 7, 4, 4 };
|
||||||
const char sqlite3StdTypeAffinity[] = {
|
const char sqlite3StdTypeAffinity[] = {
|
||||||
|
SQLITE_AFF_NUMERIC,
|
||||||
SQLITE_AFF_BLOB,
|
SQLITE_AFF_BLOB,
|
||||||
SQLITE_AFF_INTEGER,
|
SQLITE_AFF_INTEGER,
|
||||||
SQLITE_AFF_INTEGER,
|
SQLITE_AFF_INTEGER,
|
||||||
@@ -373,6 +374,7 @@ const char sqlite3StdTypeAffinity[] = {
|
|||||||
SQLITE_AFF_TEXT
|
SQLITE_AFF_TEXT
|
||||||
};
|
};
|
||||||
const char sqlite3StdTypeMap[] = {
|
const char sqlite3StdTypeMap[] = {
|
||||||
|
0,
|
||||||
SQLITE_BLOB,
|
SQLITE_BLOB,
|
||||||
SQLITE_INTEGER,
|
SQLITE_INTEGER,
|
||||||
SQLITE_INTEGER,
|
SQLITE_INTEGER,
|
||||||
@@ -380,6 +382,7 @@ const char sqlite3StdTypeMap[] = {
|
|||||||
SQLITE_TEXT
|
SQLITE_TEXT
|
||||||
};
|
};
|
||||||
const char *sqlite3StdType[] = {
|
const char *sqlite3StdType[] = {
|
||||||
|
"ANY",
|
||||||
"BLOB",
|
"BLOB",
|
||||||
"INT",
|
"INT",
|
||||||
"INTEGER",
|
"INTEGER",
|
||||||
|
@@ -2055,12 +2055,13 @@ struct Column {
|
|||||||
** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
|
** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
|
||||||
*/
|
*/
|
||||||
#define COLTYPE_CUSTOM 0 /* Type appended to zName */
|
#define COLTYPE_CUSTOM 0 /* Type appended to zName */
|
||||||
#define COLTYPE_BLOB 1
|
#define COLTYPE_ANY 1
|
||||||
#define COLTYPE_INT 2
|
#define COLTYPE_BLOB 2
|
||||||
#define COLTYPE_INTEGER 3
|
#define COLTYPE_INT 3
|
||||||
#define COLTYPE_REAL 4
|
#define COLTYPE_INTEGER 4
|
||||||
#define COLTYPE_TEXT 5
|
#define COLTYPE_REAL 5
|
||||||
#define SQLITE_N_STDTYPE 5 /* Number of standard types */
|
#define COLTYPE_TEXT 6
|
||||||
|
#define SQLITE_N_STDTYPE 6 /* Number of standard types */
|
||||||
|
|
||||||
/* Allowed values for Column.colFlags.
|
/* Allowed values for Column.colFlags.
|
||||||
**
|
**
|
||||||
|
@@ -2974,7 +2974,7 @@ case OP_TypeCheck: {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
/* anything goes */
|
/* COLTYPE_ANY. Accept anything. */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,14 +20,14 @@ set testprefix strict1
|
|||||||
# STRICT tables have on a limited number of allowed datatypes.
|
# STRICT tables have on a limited number of allowed datatypes.
|
||||||
#
|
#
|
||||||
do_catchsql_test strict1-1.1 {
|
do_catchsql_test strict1-1.1 {
|
||||||
CREATE TABLE t1ok0(a) STRICT;
|
CREATE TABLE t1(a) STRICT;
|
||||||
} {0 {}}
|
} {1 {missing datatype for t1.a}}
|
||||||
do_catchsql_test strict1-1.2 {
|
do_catchsql_test strict1-1.2 {
|
||||||
CREATE TABLE t1ok1(a PRIMARY KEY) STRICT, WITHOUT ROWID;
|
CREATE TABLE t1(a PRIMARY KEY) STRICT, WITHOUT ROWID;
|
||||||
} {0 {}}
|
} {1 {missing datatype for t1.a}}
|
||||||
do_catchsql_test strict1-1.3 {
|
do_catchsql_test strict1-1.3 {
|
||||||
CREATE TABLE t1ok2(a PRIMARY KEY) WITHOUT ROWID, STRICT;
|
CREATE TABLE t1(a PRIMARY KEY) WITHOUT ROWID, STRICT;
|
||||||
} {0 {}}
|
} {1 {missing datatype for t1.a}}
|
||||||
do_catchsql_test strict1-1.4 {
|
do_catchsql_test strict1-1.4 {
|
||||||
CREATE TABLE t1(a BANJO PRIMARY KEY) WITHOUT ROWID, STRICT;
|
CREATE TABLE t1(a BANJO PRIMARY KEY) WITHOUT ROWID, STRICT;
|
||||||
} {1 {unknown datatype for t1.a: "BANJO"}}
|
} {1 {unknown datatype for t1.a: "BANJO"}}
|
||||||
|
Reference in New Issue
Block a user