mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Add extra tests for the error messages generated by sqlite3_declare_vtab() when passed something other than a well-formed CREATE TABLE statement.
FossilOrigin-Name: 5fa0c2a026f0467af3a76ea80cee8168b7a49553c350f642d1dff02ff9e7aeed
This commit is contained in:
18
manifest
18
manifest
@ -1,5 +1,5 @@
|
|||||||
C The\ssqlite3_declare_vtab()\sinterface\sshould\sreturn\sSQLITE_ERROR,\snot\nSQLITE_MISUSE\swhen\sa\snonsense\sSQL\sinput\sis\sprovided,\sfor\slegacy\scompatibility.\n[forum:/forumpost/4b875d7b2a|Forum\spost\s4b875d7b2a].
|
C Add\sextra\stests\sfor\sthe\serror\smessages\sgenerated\sby\ssqlite3_declare_vtab()\swhen\spassed\ssomething\sother\sthan\sa\swell-formed\sCREATE\sTABLE\sstatement.
|
||||||
D 2024-05-16T15:57:42.281
|
D 2024-05-16T16:22:51.903
|
||||||
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
|
||||||
@ -775,7 +775,7 @@ F src/test9.c 12e5ba554d2d1cbe0158f6ab3f7ffcd7a86ee4e5
|
|||||||
F src/test_async.c 195ab49da082053fdb0f949c114b806a49ca770a
|
F src/test_async.c 195ab49da082053fdb0f949c114b806a49ca770a
|
||||||
F src/test_autoext.c 915d245e736652a219a907909bb6710f0d587871
|
F src/test_autoext.c 915d245e736652a219a907909bb6710f0d587871
|
||||||
F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0
|
F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0
|
||||||
F src/test_bestindex.c 1ee3d64b49ca06a9cb8195fab04f1a0585cafc90d25a2a817caa14e7caab22e7
|
F src/test_bestindex.c 770429c434221afe6216ec81fe4c00ad3bbdad1d5e64576aa613ffb7c5a984f0
|
||||||
F src/test_blob.c ae4a0620b478548afb67963095a7417cd06a4ec0a56adb453542203bfdcb31ce
|
F src/test_blob.c ae4a0620b478548afb67963095a7417cd06a4ec0a56adb453542203bfdcb31ce
|
||||||
F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
|
F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
|
||||||
F src/test_config.c 5fa77ee6064ba546e144c4fea870c5ede2c54314616f81485c6a9c4192100c75
|
F src/test_config.c 5fa77ee6064ba546e144c4fea870c5ede2c54314616f81485c6a9c4192100c75
|
||||||
@ -939,7 +939,7 @@ F test/bestindex8.test b63a4f171a2c83d481bb14c431a8b72e85d27b2ffdaa0435a95d58ca9
|
|||||||
F test/bestindex9.test 1a4b93db117fd8abe74ae9be982f86aa72f01e60cd4ac541e6ede39673a451a0
|
F test/bestindex9.test 1a4b93db117fd8abe74ae9be982f86aa72f01e60cd4ac541e6ede39673a451a0
|
||||||
F test/bestindexA.test e1b5def6b190797cacf008e6815ffb78fb30261999030d60a728d572eef44c7f
|
F test/bestindexA.test e1b5def6b190797cacf008e6815ffb78fb30261999030d60a728d572eef44c7f
|
||||||
F test/bestindexB.test 328b97b69cd1a20928d5997f9ecb04d2e00f1d18e19ab27f9e9adb44d7bc51ce
|
F test/bestindexB.test 328b97b69cd1a20928d5997f9ecb04d2e00f1d18e19ab27f9e9adb44d7bc51ce
|
||||||
F test/bestindexC.test a2d4ab909e17bb58fe4d66a394460e713620c7b2964b450bc82216c171d264a2
|
F test/bestindexC.test 9e6f184be080fd9c4605a7e5c7097eed1a259372f9af78151c37b072a9086f86
|
||||||
F test/between.test b9a65fb065391980119e8a781a7409d3fcf059d89968279c750e190a9a1d5263
|
F test/between.test b9a65fb065391980119e8a781a7409d3fcf059d89968279c750e190a9a1d5263
|
||||||
F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
|
F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
|
||||||
F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
|
F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
|
||||||
@ -1958,7 +1958,7 @@ F test/vtabH.test 2efb5a24b0bb50796b21eca23032cfb77abfa4b0c03938e38ce5897abac404
|
|||||||
F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f
|
F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f
|
||||||
F test/vtabJ.test a6aef49d558af90fae10565b29501f82a95781cb4f797f2d13e2d19f9b6bc77b
|
F test/vtabJ.test a6aef49d558af90fae10565b29501f82a95781cb4f797f2d13e2d19f9b6bc77b
|
||||||
F test/vtabK.test 13293177528fada1235c0112db0d187d754af1355c5a39371abd365104e3afbf
|
F test/vtabK.test 13293177528fada1235c0112db0d187d754af1355c5a39371abd365104e3afbf
|
||||||
F test/vtabL.test 49ec7342e8bfcb0d6c3d2443c619f430c609c042d5d7e6ddf52def65d6d1812f
|
F test/vtabL.test c7b7f537978005d063fa2f53a3cd5a46ecf651ecd19970cb9ed4203698398deb
|
||||||
F test/vtab_alter.test 736e66fb5ec7b4fee58229aa3ada2f27ec58bc58c00edae4836890c3784c6783
|
F test/vtab_alter.test 736e66fb5ec7b4fee58229aa3ada2f27ec58bc58c00edae4836890c3784c6783
|
||||||
F test/vtab_err.test dcc8b7b9cb67522b3fe7a272c73856829dae4ab7fdb30399aea1b6981bda2b65
|
F test/vtab_err.test dcc8b7b9cb67522b3fe7a272c73856829dae4ab7fdb30399aea1b6981bda2b65
|
||||||
F test/vtab_shared.test 5253bff2355a9a3f014c15337da7e177ab0ef8ad
|
F test/vtab_shared.test 5253bff2355a9a3f014c15337da7e177ab0ef8ad
|
||||||
@ -2191,8 +2191,8 @@ 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 953271f29e7bd6ba9b85f73250b1c22b08eef317f9ac3c7c3d92cbaa57d7efd5
|
P 1ec2961a0341619ae88832942b52606b3246fc0de07ca6da0300e4bfc656ecf0
|
||||||
R bd9b1f3e12a43e6ce15734622e6a391b
|
R 3e80a1a8d16383b10a9edc0a3a535e00
|
||||||
U drh
|
U dan
|
||||||
Z b7a4080de77f5c75fed04a53319240a7
|
Z 4379dfd9de0672673743bdb6b799c4de
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
1ec2961a0341619ae88832942b52606b3246fc0de07ca6da0300e4bfc656ecf0
|
5fa0c2a026f0467af3a76ea80cee8168b7a49553c350f642d1dff02ff9e7aeed
|
@ -215,6 +215,9 @@ static int tclConnect(
|
|||||||
rc = SQLITE_ERROR;
|
rc = SQLITE_ERROR;
|
||||||
}else{
|
}else{
|
||||||
rc = sqlite3_declare_vtab(db, Tcl_GetStringResult(interp));
|
rc = sqlite3_declare_vtab(db, Tcl_GetStringResult(interp));
|
||||||
|
if( rc!=SQLITE_OK ){
|
||||||
|
*pzErr = sqlite3_mprintf("declare_vtab: %s", sqlite3_errmsg(db));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( rc!=SQLITE_OK ){
|
if( rc!=SQLITE_OK ){
|
||||||
|
@ -177,9 +177,7 @@ unset ::do_not_use_offset
|
|||||||
reset_db
|
reset_db
|
||||||
proc vtab_command {lVal method args} {
|
proc vtab_command {lVal method args} {
|
||||||
switch -- $method {
|
switch -- $method {
|
||||||
xConnect {
|
xConnect { error "not happy!" }
|
||||||
error "not happy!"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {}
|
return {}
|
||||||
@ -193,5 +191,23 @@ do_test 4.1 {
|
|||||||
sqlite3_errcode db
|
sqlite3_errcode db
|
||||||
} SQLITE_ERROR
|
} SQLITE_ERROR
|
||||||
|
|
||||||
|
proc vtab_command {lVal method args} {
|
||||||
|
switch -- $method {
|
||||||
|
xConnect {
|
||||||
|
return $lVal
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_catchsql_test 4.2 {
|
||||||
|
CREATE VIRTUAL TABLE y1 USING tcl(vtab_command "PRAGMA page_size=1024");
|
||||||
|
} {1 {declare_vtab: syntax error}}
|
||||||
|
do_catchsql_test 4.3 {
|
||||||
|
CREATE VIRTUAL TABLE y1 USING tcl(vtab_command "CREATE TABLE x1(");
|
||||||
|
} {1 {declare_vtab: incomplete input}}
|
||||||
|
do_catchsql_test 4.4 {
|
||||||
|
CREATE VIRTUAL TABLE y1 USING tcl(vtab_command "CREATE TABLE x1(insert)");
|
||||||
|
} {1 {declare_vtab: near "insert": syntax error}}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@ -31,7 +31,6 @@ proc vtab_command {method args} {
|
|||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
|
|
||||||
breakpoint
|
|
||||||
foreach {tn cts} {
|
foreach {tn cts} {
|
||||||
1 {SELECT 123}
|
1 {SELECT 123}
|
||||||
2 {SELECT 123, 456}
|
2 {SELECT 123, 456}
|
||||||
@ -41,13 +40,21 @@ foreach {tn cts} {
|
|||||||
6 {DROP TABLE nosuchtable}
|
6 {DROP TABLE nosuchtable}
|
||||||
7 {DROP TABLE x1}
|
7 {DROP TABLE x1}
|
||||||
8 {DROP TABLE t1}
|
8 {DROP TABLE t1}
|
||||||
|
} {
|
||||||
|
set ::create_table_sql $cts
|
||||||
|
do_catchsql_test 1.$tn {
|
||||||
|
CREATE VIRTUAL TABLE x1 USING tcl(vtab_command);
|
||||||
|
} {1 {declare_vtab: syntax error}}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach {tn cts} {
|
||||||
9 {CREATE TABLE xyz AS SELECT * FROM sqlite_schema}
|
9 {CREATE TABLE xyz AS SELECT * FROM sqlite_schema}
|
||||||
10 {CREATE TABLE xyz AS SELECT 1 AS 'col'}
|
10 {CREATE TABLE xyz AS SELECT 1 AS 'col'}
|
||||||
} {
|
} {
|
||||||
set ::create_table_sql $cts
|
set ::create_table_sql $cts
|
||||||
do_catchsql_test 1.$tn {
|
do_catchsql_test 1.$tn {
|
||||||
CREATE VIRTUAL TABLE x1 USING tcl(vtab_command);
|
CREATE VIRTUAL TABLE x1 USING tcl(vtab_command);
|
||||||
} {1 {vtable constructor failed: x1}}
|
} {1 {declare_vtab: SQL logic error}}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach {tn cts} {
|
foreach {tn cts} {
|
||||||
|
Reference in New Issue
Block a user