]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add extra tests for the error messages generated by sqlite3_declare_vtab() when passe...
authordan <Dan Kennedy>
Thu, 16 May 2024 16:22:51 +0000 (16:22 +0000)
committerdan <Dan Kennedy>
Thu, 16 May 2024 16:22:51 +0000 (16:22 +0000)
FossilOrigin-Name: 5fa0c2a026f0467af3a76ea80cee8168b7a49553c350f642d1dff02ff9e7aeed

manifest
manifest.uuid
src/test_bestindex.c
test/bestindexC.test
test/vtabL.test

index 6365b053b1cac828a08014be81607f7f5feed515..ea1aa1987fedb759b8c47d2caae54865e5bfb1d0 100644 (file)
--- a/manifest
+++ b/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].
-D 2024-05-16T15:57:42.281
+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-16T16:22:51.903
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -775,7 +775,7 @@ F src/test9.c 12e5ba554d2d1cbe0158f6ab3f7ffcd7a86ee4e5
 F src/test_async.c 195ab49da082053fdb0f949c114b806a49ca770a
 F src/test_autoext.c 915d245e736652a219a907909bb6710f0d587871
 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_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
 F src/test_config.c 5fa77ee6064ba546e144c4fea870c5ede2c54314616f81485c6a9c4192100c75
@@ -939,7 +939,7 @@ F test/bestindex8.test b63a4f171a2c83d481bb14c431a8b72e85d27b2ffdaa0435a95d58ca9
 F test/bestindex9.test 1a4b93db117fd8abe74ae9be982f86aa72f01e60cd4ac541e6ede39673a451a0
 F test/bestindexA.test e1b5def6b190797cacf008e6815ffb78fb30261999030d60a728d572eef44c7f
 F test/bestindexB.test 328b97b69cd1a20928d5997f9ecb04d2e00f1d18e19ab27f9e9adb44d7bc51ce
-F test/bestindexC.test a2d4ab909e17bb58fe4d66a394460e713620c7b2964b450bc82216c171d264a2
+F test/bestindexC.test 9e6f184be080fd9c4605a7e5c7097eed1a259372f9af78151c37b072a9086f86
 F test/between.test b9a65fb065391980119e8a781a7409d3fcf059d89968279c750e190a9a1d5263
 F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
 F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
@@ -1958,7 +1958,7 @@ F test/vtabH.test 2efb5a24b0bb50796b21eca23032cfb77abfa4b0c03938e38ce5897abac404
 F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f
 F test/vtabJ.test a6aef49d558af90fae10565b29501f82a95781cb4f797f2d13e2d19f9b6bc77b
 F test/vtabK.test 13293177528fada1235c0112db0d187d754af1355c5a39371abd365104e3afbf
-F test/vtabL.test 49ec7342e8bfcb0d6c3d2443c619f430c609c042d5d7e6ddf52def65d6d1812f
+F test/vtabL.test c7b7f537978005d063fa2f53a3cd5a46ecf651ecd19970cb9ed4203698398deb
 F test/vtab_alter.test 736e66fb5ec7b4fee58229aa3ada2f27ec58bc58c00edae4836890c3784c6783
 F test/vtab_err.test dcc8b7b9cb67522b3fe7a272c73856829dae4ab7fdb30399aea1b6981bda2b65
 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.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 953271f29e7bd6ba9b85f73250b1c22b08eef317f9ac3c7c3d92cbaa57d7efd5
-R bd9b1f3e12a43e6ce15734622e6a391b
-U drh
-Z b7a4080de77f5c75fed04a53319240a7
+P 1ec2961a0341619ae88832942b52606b3246fc0de07ca6da0300e4bfc656ecf0
+R 3e80a1a8d16383b10a9edc0a3a535e00
+U dan
+Z 4379dfd9de0672673743bdb6b799c4de
 # Remove this line to create a well-formed Fossil manifest.
index e169c99247344fe17389261f98c7a5cabf5b634a..5851bda00f6369e514564e68c988a80a852aa9c3 100644 (file)
@@ -1 +1 @@
-1ec2961a0341619ae88832942b52606b3246fc0de07ca6da0300e4bfc656ecf0
\ No newline at end of file
+5fa0c2a026f0467af3a76ea80cee8168b7a49553c350f642d1dff02ff9e7aeed
\ No newline at end of file
index 6b6b413950e9efca51febb27259e480928da9074..0e1e86a81ca78ed9ebf57a33aca1790c4bac6ffc 100644 (file)
@@ -215,6 +215,9 @@ static int tclConnect(
       rc = SQLITE_ERROR;
     }else{
       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 ){
index 708e56f774c5fc9fcd49a3612dcb8ebf3833bf03..c6ddf306189aded7f82ceef1e48c0504c512a1cf 100644 (file)
@@ -177,9 +177,7 @@ unset ::do_not_use_offset
 reset_db
 proc vtab_command {lVal method args} {
   switch -- $method {
-    xConnect {
-      error "not happy!"
-    }
+    xConnect { error "not happy!" }
   }
 
   return {}
@@ -193,5 +191,23 @@ do_test 4.1 {
   sqlite3_errcode db
 } 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
index 0834655ffd0c02ebe3b2a3cf9fe0d10c4c6f1cc2..45528edcbdddc5a2ca287f32bb07d20e563aba8a 100644 (file)
@@ -31,7 +31,6 @@ proc vtab_command {method args} {
   return {}
 }
 
-breakpoint
 foreach {tn cts} {
   1 {SELECT 123}
   2 {SELECT 123, 456}
@@ -41,13 +40,21 @@ foreach {tn cts} {
   6 {DROP TABLE nosuchtable}
   7 {DROP TABLE x1}
   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}
   10 {CREATE TABLE xyz AS SELECT 1 AS 'col'}
 } {
   set ::create_table_sql $cts
   do_catchsql_test 1.$tn {
     CREATE VIRTUAL TABLE x1 USING tcl(vtab_command);
-  } {1 {vtable constructor failed: x1}}
+  } {1 {declare_vtab: SQL logic error}}
 }
 
 foreach {tn cts} {