aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordan <Dan Kennedy>2021-10-01 20:39:50 +0000
committerdan <Dan Kennedy>2021-10-01 20:39:50 +0000
commit37f3ac8faa5d4cfc18b2163b6fa47109e51b0a83 (patch)
treef79c00e98d69e88472670c1e04d24c5e0f784f22
parent82978ac20b03a5d2538e594ce1eda89002d32182 (diff)
downloadsqlite-37f3ac8faa5d4cfc18b2163b6fa47109e51b0a83.tar.gz
sqlite-37f3ac8faa5d4cfc18b2163b6fa47109e51b0a83.zip
Change things so that SQLITE_OMIT_VIRTUALTABLE implies SQLITE_OMIT_ALTER_TABLE.
FossilOrigin-Name: 2f7c946c5f25a858167f5193ca06e53310394c8cff15426ab8a1327a1ec835fd
-rw-r--r--ext/session/sessionat.test7
-rw-r--r--manifest76
-rw-r--r--manifest.uuid2
-rw-r--r--src/parse.y6
-rw-r--r--src/sqliteInt.h7
-rw-r--r--test/altercorrupt.test6
-rw-r--r--test/alterqf.test7
-rw-r--r--test/analyze4.test6
-rw-r--r--test/auth3.test24
-rw-r--r--test/columncount.test6
-rw-r--r--test/corruptL.test9
-rw-r--r--test/e_changes.test4
-rw-r--r--test/e_totalchanges.test38
-rw-r--r--test/func.test3
-rw-r--r--test/gencol1.test28
-rw-r--r--test/hook.test129
-rw-r--r--test/indexexpr1.test52
-rw-r--r--test/istrue.test30
-rw-r--r--test/pager1.test30
-rw-r--r--test/pragma.test68
-rw-r--r--test/quote.test78
-rw-r--r--test/schema3.test6
-rw-r--r--test/skipscan2.test1
-rw-r--r--test/sorterref.test6
-rw-r--r--test/strict1.test8
-rw-r--r--test/tkt-8454a207b9.test6
-rw-r--r--test/tkt-f67b41381a.test5
-rw-r--r--test/update.test22
-rw-r--r--test/view.test8
-rw-r--r--test/whereE.test6
-rw-r--r--test/window1.test16
-rw-r--r--test/with2.test112
-rw-r--r--test/without_rowid1.test22
-rw-r--r--tool/mkkeywordhash.c2
34 files changed, 477 insertions, 359 deletions
diff --git a/ext/session/sessionat.test b/ext/session/sessionat.test
index 4a3f59a44..8141d9232 100644
--- a/ext/session/sessionat.test
+++ b/ext/session/sessionat.test
@@ -20,9 +20,14 @@ if {![info exists testdir]} {
source [file join [file dirname [info script]] session_common.tcl]
source $testdir/tester.tcl
ifcapable !session {finish_test; return}
-
set testprefix sessionat
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
db close
sqlite3_shutdown
test_sqlite3_log log
diff --git a/manifest b/manifest
index 01bfcd2db..a50590d94 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\spotential\swrite\soutside\sof\sarray\sbounds\sin\sthe\s--hexdb\sdecoder\sof\sthe\nCLI\swhen\sgiven\scorrupt\sinput.
-D 2021-10-01T17:06:44.476
+C Change\sthings\sso\sthat\sSQLITE_OMIT_VIRTUALTABLE\simplies\sSQLITE_OMIT_ALTER_TABLE.
+D 2021-10-01T20:39:50.837
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -450,7 +450,7 @@ F ext/session/sessionG.test 3828b944cd1285f4379340fd36f8b64c464fc84df6ff3ccbc955
F ext/session/sessionH.test b17afdbd3b8f17e9bab91e235acf167cf35485db2ab2df0ea8893fbb914741a4
F ext/session/session_common.tcl f613174665456b2d916ae8df3e5735092a1c1712f36f46840172e9a01e8cc53e
F ext/session/session_speed_test.c dcf0ef58d76b70c8fbd9eab3be77cf9deb8bc1638fed8be518b62d6cbdef88b3
-F ext/session/sessionat.test efe88965e74ff1bc2af9c310b28358c02d420c1fb2705cc7a28f0c1cc142c3ec
+F ext/session/sessionat.test 52993535f1230a42f70886643574ba7ae60ef854f8add9c8e3fcc3eb5c564bd2
F ext/session/sessionbig.test 890ade19e3f80f3d3a3e83821ff79c5e2af906a67ecb5450879f0015cadf101e
F ext/session/sessiondiff.test ad13dd65664bae26744e1f18eb3cbd5588349b7e9118851d8f9364248d67bcec
F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7
@@ -538,7 +538,7 @@ F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
F src/pager.c 1ba6a843148282895d800aa69919553079946ef9a198a97e5d7c64442d10ed4c
F src/pager.h 4bf9b3213a4b2bebbced5eaa8b219cf25d4a82f385d093cd64b7e93e5285f66f
-F src/parse.y 86aa016b281f61d7664dd8cb7808cab8114d14cfaf362a9b9fc9ead8f33546b7
+F src/parse.y 82bdd593c50bddcc285a173e9788a20296103217f5f5290c9122abf8af71af62
F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
F src/pcache1.c 54881292a9a5db202b2c0ac541c5e3ef9a5e8c4f1c1383adb2601d5499a60e65
@@ -554,7 +554,7 @@ F src/shell.c.in f9a13edb4d4cdbdfc161b0d200296c1dd9c492ad86dd73f4768ee841fec6657
F src/sqlite.h.in 4e977a5e2ed1a9e8987ff65a2cab5f99a4298ebf040ea5ff636e1753339ff45a
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h e97f4e9b509408fea4c4e9bef5a41608dfac343b4d3c7a990dedde1e19af9510
-F src/sqliteInt.h 06a8f97a644388b28c0a9428a6b2cdf40e8b51b1cf38064f41baba5fd810be49
+F src/sqliteInt.h c481cd4864217bdff96fc2a7054cdaca0edabe0eb9f6cce8b012d1e014ccdc5f
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@ -655,21 +655,21 @@ F test/alter4.test 716caa071dd8a3c6d57225778d15d3c3cbf5e34b2e84ae44199aeb2bbf50a
F test/alterauth.test 63442ba61ceb0c1eeb63aac1f4f5cebfa509d352276059d27106ae256bafc959
F test/alterauth2.test 381b1ab603c9ef96314a3158528ea17f7964449385a28eeaf8191120b2e24a8d
F test/altercol.test b11fa1b131e80ab5b6ecfb3b725fb0419c14ca6efba5adb57aeabfc9baa0c8f3
-F test/altercorrupt.test 584d707a80e106952d6382790c8919bcf9f0db678ed3a1c09fd98b7f9d1d3a10
+F test/altercorrupt.test 2e1d705342cf9d7de884518ddbb053fd52d7e60d2b8869b7b63b2fda68435c12
F test/alterdropcol.test a653a3945f964d26845ec0cd0a8e74189f46de3119a984c5bc45457da392612e
F test/alterdropcol2.test 527fce683b200d620f560f666c44ae33e22728e990a10a48a543280dfd4b4d41
F test/alterlegacy.test f38c6d06cda39e1f7b955bbce57f2e3ef5b7cb566d3d1234502093e228c15811
F test/altermalloc.test 167a47de41b5c638f5f5c6efb59784002b196fff70f98d9b4ed3cd74a3fb80c9
F test/altermalloc2.test ca3ebc01670d9313953a2b7628d8cc00dc5ea9988f229b3cbbbe1cca506dae45
F test/altermalloc3.test 4660ac6240a8c82ba3947b927612dcc7c05a8eec3fe3c9f38e047ca69a789a33
-F test/alterqf.test 67568ad152db8c1187b15633b801242cf960f1beafc51261a3d1725d910baeb2
+F test/alterqf.test 6b2482a957692606b23567ebd2cf80eb773e3c826086f5f151eee9c5a962623d
F test/altertab.test a13e11cb1933575002367613b1094f0eeb31f493e4bd9ebeca73279fe00c85e7
F test/altertab2.test b0d62f323ca5dab42b0bc028c52e310ebdd13e655e8fac070fe622bad7852c2b
F test/altertab3.test 5929f522fd6fd708396ad9f317d4af9ff1a93e460df85bb1d54d4499eeb94960
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7
F test/analyze3.test 4440c4932247adb2b4e0c838f657c19dc7af4f56859255436dc4e855f39b9324
-F test/analyze4.test 293ec8ea21525f3435beaf9d6b1efb29e719415f03a0cd2a70589d59098e8464
+F test/analyze4.test 68bd069f3ac7ac1e652ddd9f04f57d5606ddb4208450f5297005db7aa0dd707d
F test/analyze5.test fa5131952303ac4146aba101b116b9c8cb89e2637531c334a6df7f7d19dddc0d
F test/analyze6.test 028f5bdfc9e5b5294768fa9a7185b8cd1d019aa7aab5b2f8ee42d7271d9a3b28
F test/analyze7.test 079d17c495e396bdbd6cc6a083112788a6fbfb3b95c42e760e4270a53c9ead8f
@@ -697,7 +697,7 @@ F test/attach4.test 00e754484859998d124d144de6d114d920f2ed6ca2f961e6a7f4183c714f
F test/attachmalloc.test 12c4f028e570acf9e0a4b0b7fe6f536e21f3d5ebddcece423603d0569beaf438
F test/auth.test 567d917e0baddb6d0026a251cff977a3ab2c805a3cef906ba8653aafe7ad7240
F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
-F test/auth3.test db21405b95257c24d29273b6b31d0efc59e1d337e3d5804ba2d1fd4897b1ae49
+F test/auth3.test 76d20a7fa136d63bcfcf8bcb65c0b1455ed71078d81f22bcd0550d3eb18594ab
F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
F test/autoinc.test 997d6f185f138229dc4251583a1d04816423dddc2fc034871a01aeb1d728cb39
F test/autoindex1.test fe27af92eaf884bd9c38f94be3e8afa04ec494e5eefb189902026181a6175f5e
@@ -781,7 +781,7 @@ F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6
F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151ecac0b95
F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1
F test/colname.test 87ad5458bb8709312dac0d6755fd30e8e4ca83298d0a9ef6e5c24277a3c3390e
-F test/columncount.test d86fb6307261186370698962790ad2088ed419e4a4e823512b502f17d443b1b7
+F test/columncount.test 6fe99c2f35738b0129357a1cf3fa483f76140f4cd8a89014c88c33c876d2638f
F test/conflict.test ac0667090f66130ac77d5fb764655558ca6600dd6d88f670ca9123b61c448337
F test/conflict2.test 5557909ce683b1073982f5d1b61dfb1d41e369533bfdaf003180c5bc87282dd1
F test/conflict3.test 81865d9599609aca394fb3b9cd5f561d4729ea5b176bece3644f6ecb540f88ac
@@ -806,7 +806,7 @@ F test/corruptH.test 79801d97ec5c2f9f3c87739aa1ec2eb786f96454
F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
-F test/corruptL.test df132ba9ffd6fa15038380b4154998b9904ab8f1ea78400d7da53c920cb3b13d
+F test/corruptL.test 7d3440831ca24ba64305583c4d4506d417d3f89f5775c0b7cc8102db078f8ff5
F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
F test/corruptN.test c2a96ff81386027f7d7e95858783aa36f82ba1532106969575e3c8f90903a5bb
F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
@@ -858,7 +858,7 @@ F test/e_blobbytes.test 439a945953b35cb6948a552edaec4dc31fd70a05
F test/e_blobclose.test 4b3c8c60c2171164d472059c73e9f3c1844bb66d
F test/e_blobopen.test e95e1d40f995056f6f322cd5e1a1b83a27e1a145
F test/e_blobwrite.test f87ff598b67af5b3ec002a8d83e804dc8d23808e88cf0080c176612fc9ffce14
-F test/e_changes.test 6ba336a796db32f890e50197ab6a8fe5e6017e431fc9082702c246120cd58d55
+F test/e_changes.test 0f8c3e6aab7335cb772d5a3ea34ca4c82f98d0eb896e2eb3add971c16984b405
F test/e_createtable.test 7997c0106c181243e0ac7db7ba8b9ae7233d0bfb0188605650322a7a02ea326e
F test/e_delete.test ab39084f26ae1f033c940b70ebdbbd523dc4962e
F test/e_droptrigger.test 235c610f8bf8ec44513e222b9085c7e49fad65ad0c1975ac2577109dd06fd8fa
@@ -871,7 +871,7 @@ F test/e_reindex.test 2b0e29344497d9a8a999453a003cb476b6b1d2eef2d6c120f83c2d3a42
F test/e_resolve.test a61751c368b109db73df0f20fc75fb47e166b1d8
F test/e_select.test c5425a423da06d0494119db8361ebfc6de302929f7546ca596d56224137e0360
F test/e_select2.test aceb80ab927d46fba5ce7586ebabf23e2bb0604f
-F test/e_totalchanges.test 1daded1db6867991c10b53a18436b2602f41ad82a2b8c2e1ed5eb7d1ad15edaf
+F test/e_totalchanges.test c927f7499dc3aa28b9b556b7d6d115a2f0fe41f012b128d16bf1f3b30e9b41e4
F test/e_update.test f46c2554d915c9197548681e8d8c33a267e84528
F test/e_uri.test 47eeb2960e74613f0f8722b2f13aef08fde69daa16e5380ac93df84dac8b1f72
F test/e_vacuum.test 0d8832a2ce92350db0d0cff47b419465fd9772562e1f77ff7d9478c07a4980d2
@@ -1040,7 +1040,7 @@ F test/fts4umlaut.test fcaca4471de7e78c9d1f7e8976e3e8704d7d8ad979d57a739d00f3f75
F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9
F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d
F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d
-F test/func.test 77f6ea02c97d9ea64074461d347276a75df22d2cf51045a40f90857569e985f0
+F test/func.test 3a65ddb6c1998f71aa86492501a6be87904197e62bfb5b70b2493552b558abd1
F test/func2.test 772d66227e4e6684b86053302e2d74a2500e1e0f
F test/func3.test 600a632c305a88f3946d38f9a51efe145c989b2e13bd2b2a488db47fe76bab6a
F test/func4.test 2285fb5792d593fef442358763f0fd9de806eda47dbc7a5934df57ffdc484c31
@@ -1067,12 +1067,12 @@ F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8
F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
F test/fuzzerfault.test f64c4aef4c9e9edf1d6dc0d3f1e65dcc81e67c996403c88d14f09b74807a42bc
F test/gcfault.test dd28c228a38976d6336a3fc42d7e5f1ad060cb8c
-F test/gencol1.test 1b63f8c00154e58714b1a04554304ffdaae0bac71a23935fe308fb1715068b6c
+F test/gencol1.test cc0dbb0ee116e5602e18ea7d47f2a0f76b26e09a823b7c36ef254370c2b0f3c1
F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98
F test/having.test a89236dd8d55aa50c4805f82ac9daf64d477a44d712d8209c118978d0ca21ec9
F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751
F test/hidden.test 23c1393a79e846d68fd902d72c85d5e5dcf98711
-F test/hook.test 55b6d605d06dadbb04416eae8ad79889aea3521d119c87f04353c25f9c1450a4
+F test/hook.test bb9e03b93fa4bc3bf0f164e455ddaee3603dee0501cb61119baed557c8f936be
F test/hook2.test b9ff3b8c6519fb67f33192f1afe86e7782ee4ac8
F test/icu.test 716a6b89fbabe5cc63e0cd4c260befb08fd7b9d761f04d43669233292f0753b1
F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e
@@ -1104,7 +1104,7 @@ F test/index7.test b238344318e0b4e42126717f6554f0e7dfd0b39cecad4b736039b43e1e3b6
F test/index8.test caa097735c91dbc23d8a402f5e63a2a03c83840ba3928733ed7f9a03f8a912a3
F test/index9.test 0aa3e509dddf81f93380396e40e9bb386904c1054924ba8fa9bcdfe85a8e7721
F test/indexedby.test f21eca4f7a6ffe14c8500a7ad6cd53166666c99e5ccd311842a28bc94a195fe0
-F test/indexexpr1.test 7e0e7a33acb4d9b3524398e6ce90cc05c26603fabbaf3062083a036c8874bc12
+F test/indexexpr1.test 8f7241410e351679010f14cd7cd30357622d04a784508ff54ba5ce99f64a2228
F test/indexexpr2.test 2c7abe3c48f8aaa5a448615ab4d13df3662185d28419c00999670834a3f0b484
F test/indexfault.test 98d78a8ff1f5335628b62f886a1cb7c7dac1ef6d48fa39c51ec871c87dce9811
F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7
@@ -1128,7 +1128,7 @@ F test/ioerr3.test d3cec5e1a11ad6d27527d0d38573fbff14c71bdd
F test/ioerr4.test f130fe9e71008577b342b8874d52984bd04ede2c
F test/ioerr5.test 2edfa4fb0f896f733071303b42224df8bedd9da4
F test/ioerr6.test a395a6ab144b26a9e3e21059a1ab6a7149cca65b
-F test/istrue.test 9619a2d77580f676048aaff7a16a0bcfea2b96c6c660dfaded2e53c873418899
+F test/istrue.test e7f285bb70282625c258e866ce6337d4c762922f5a300e1b50f958aef6e7d9c9
F test/join.test 25da4f53523a4aa17c893134b47fba6aa4799bb33350517b157785878290e238
F test/join2.test 9bdc615841b91c97a16d68bad9508aea11fa0c6b34e5689847bcc4dac70e4990
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
@@ -1260,7 +1260,7 @@ F test/oserror.test 1fc9746b83d778e70d115049747ba19c7fba154afce7cc165b09feb6ca6a
F test/ossfuzz.c 9636dad2092a05a32110df0ca06713038dd0c43dd89a77dabe4b8b0d71096715
F test/ossshell.c f125c5bd16e537a2549aa579b328dd1c59905e7ab1338dfc210e755bb7b69f17
F test/ovfl.test 199c482696defceacee8c8e0e0ef36da62726b2f
-F test/pager1.test a4e438c344663ad7f0bf6e880cacae7531bdf7d960db15a3db4751273ecee06d
+F test/pager1.test 50df7826a03382ff508ed80a6b3c589c3e3ececc1d15239d67126be4b7c8b64b
F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71
F test/pager3.test 4e9a83d6ca0838d7c602c9eb93d1357562d9059c1e02ffb138a8271020838370
F test/pager4.test a122e9e6925d5b23b31e3dfef8c6a44bbf19590e
@@ -1275,7 +1275,7 @@ F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
F test/permutations.test dfdb3356ceb66e515193b12e3fd46706d28274142dc46fd37da63fda9cd4a68a
F test/pg_common.tcl 3b27542224db1e713ae387459b5d117c836a5f6e328846922993b6d2b7640d9f
-F test/pragma.test 30d5bbebd5e9cb5383155cf3f3c81297b98f6642d152e9d4100cf6888630da2c
+F test/pragma.test cae534c12a033a5c319ccc94f50b32811acdef9f67bf19a82ff42697caccd69f
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
F test/pragma3.test 92a46bbea12322dd94a404f49edcfbfc913a2c98115f0d030a7459bb4712ef31
F test/pragma4.test ca5e4dfc46adfe490f75d73734f70349d95a199e6510973899e502eef2c8b1f8
@@ -1292,7 +1292,7 @@ F test/quick.test 1681febc928d686362d50057c642f77a02c62e57
F test/quota-glob.test 32901e9eed6705d68ca3faee2a06b73b57cb3c26
F test/quota.test bfb269ce81ea52f593f9648316cd5013d766dd2a
F test/quota2.test 7dc12e08b11cbc4c16c9ba2aa2e040ea8d8ab4b8
-F test/quote.test b8ddaba6b81dcf63bb31243219e28a2f96e04396adc50108cc7e5593019c3eb5
+F test/quote.test f33f95990e4032d1227b98c0ef314c0a077d162f3f2e61b3039ed69e6f8adbbf
F test/randexpr1.tcl 40dec52119ed3a2b8b2a773bce24b63a3a746459
F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df
F test/rbu.test 168573d353cd0fd10196b87b0caa322c144ef736
@@ -1337,7 +1337,7 @@ F test/savepointfault.test f044eac64b59f09746c7020ee261734de82bf9b2
F test/scanstatus.test 9a0ed37ab6d57b50567282788fffdf832d9b16739ecc41bff9d77a8d767cf317
F test/schema.test 5dd11c96ba64744de955315d2e4f8992e447533690153b93377dffb2a5ef5431
F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5
-F test/schema3.test 1bc1008e1f8cb5654b248c55f27249366eb7ed38
+F test/schema3.test 8ed4ae66e082cdd8b1b1f22d8549e1e7a0db4527a8e6ee8b6193053ee1e5c9ce
F test/schema4.test 3b26c9fa916abb6dadf894137adcf41b7796f7b9
F test/schema5.test 29699b4421f183c8f0e88bd28ce7d75d13ea653e
F test/schema6.test e4bd1f23d368695eb9e7b51ef6e02ca0642ea2ab4a52579959826b5e7dce1f9b
@@ -1390,7 +1390,7 @@ F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
F test/shrink.test 9521e5e0d74c0b6192794f3de3a3e5e3190d465527ae365d96763ef753c7229c
F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329
F test/skipscan1.test 1a9972e1dc15ca3887f306d3cd9a29679afb382eca0f3539f3b746f3c2ccaf68
-F test/skipscan2.test c588cb7ed947db724d300f2a0dc537dd2ad292b0f812641d8481bc0b95dd3f49
+F test/skipscan2.test b032ed3e0ba5caa4df6c43ef22c31566aac67783bc031869155989a7ccdb5bd5
F test/skipscan3.test ec5bab3f81c7038b43450e7b3062e04a198bdbb5
F test/skipscan5.test 0672103fd2c8f96bd114133f356192b35ece45c794fe3677e1d9e5e3104a608e
F test/skipscan6.test bddbb35dd335e2d21b7791a61e3b2e1f3255dc307ce80aa6fe19cc298e6feb13
@@ -1407,7 +1407,7 @@ F test/sort2.test cc23b7c19d684657559e8a55b02f7fcee03851d0
F test/sort3.test 1480ed7c4c157682542224e05e3b75faf4a149e5
F test/sort4.test 5c34d9623a4ae5921d956dfa2b70e77ed0fc6e5c
F test/sort5.test 6b43ae0e2169b5ceed441844492e55ba7f1ae0790528395ddf7888ab3094525d
-F test/sorterref.test a13ed207a0eea3c7898f308f979bfb518f68c598ec737d2c494dfd3deaa83506
+F test/sorterref.test 9a606c86a4c682db5eeaaefa0565b52102778db53e48ca7101cd4f9ebcc0ad94
F test/sortfault.test d4ccf606a0c77498e2beb542764fd9394acb4d66
F test/speed1.test f2974a91d79f58507ada01864c0e323093065452
F test/speed1p.explain d841e650a04728b39e6740296b852dccdca9b2cb
@@ -1430,7 +1430,7 @@ F test/stat.test 15a3106eddedfc882f64bc09f237b4169be4b92dd57c93031b8ff8b13af3e7c
F test/statfault.test 55f86055f9cd7b2d962a621b8a04215c1cebd4eaaecde92d279442327fe648a0
F test/stmt.test 54ed2cc0764bf3e48a058331813c3dbd19fc1d0827c3d8369914a5d8f564ec75
F test/stmtvtab1.test 6873dfb24f8e79cbb5b799b95c2e4349060eb7a3b811982749a84b359468e2d5
-F test/strict1.test ac29180be09313af1d5086420e8b7a832f9bf777653c4cbc64d7fd478000b3f0
+F test/strict1.test 2e590641b1f26f9ff0db5b785df07f932988af1ab6ccab792b792ebb8405d657
F test/strict2.test e78cedd56eb1c3e0b09b16c594dbfcb7e95bc6d85f68f0fd6501c243be28e219
F test/subjournal.test 8d4e2572c0ee9a15549f0d8e40863161295107e52f07a3e8012a2e1fdd093c49
F test/subquery.test d7268d193dd33d5505df965399d3a594e76ae13f
@@ -1504,7 +1504,7 @@ F test/tkt-7a31705a7e6.test 9e9c057b6a9497c8f7ba7b16871029414ccf6550e7345d9085d6
F test/tkt-7bbfb7d442.test 7b2cd79c7a17ae6750e75ec1a7846712a69c9d18
F test/tkt-80ba201079.test 105a721e6aad0ae3c5946d7615d1e4d03f6145b8
F test/tkt-80e031a00f.test 9ee36348b761bf7c14261e002b75a4c0d5a04d4c
-F test/tkt-8454a207b9.test c583a9f814a82a2b5ba95207f55001c9f0cd816c
+F test/tkt-8454a207b9.test aff2e76143cfa443ddce6f7d85968a2e9b57a3deb0b881b730120740555f9e2f
F test/tkt-868145d012.test a5f941107ece6a64410ca4755c6329b7eb57a356
F test/tkt-8c63ff0ec.test 258b7fc8d7e4e1cb5362c7d65c143528b9c4cbed
F test/tkt-91e2e8ba6f.test 08c4f94ae07696b05c9b822da0b4e5337a2f54c5
@@ -1529,7 +1529,7 @@ F test/tkt-d11f09d36e.test d999b548fef885d1d1afa49a0e8544ecf436869d
F test/tkt-d635236375.test 9d37e988b47d87505bc9445be0ca447002df5d09
F test/tkt-d82e3f3721.test bcc0dfba658d15bab30fd4a9320c9e35d214ce30
F test/tkt-f3e5abed55.test d5a0126118142d13e27f6ce9f4c47096e9321c00
-F test/tkt-f67b41381a.test a23bc124c981662db712167bacd0ed8ad11abac9
+F test/tkt-f67b41381a.test 9120eab5e949969a29087e01bf57ac6a52b6c06c16be41091a74c2a863ffc660
F test/tkt-f777251dc7a.test d1a8fc3eefb7a9e64d19ff24d5c8c94c34a632fb
F test/tkt-f7b4edec.test d998a08ff2b18b7f62edce8e3044317c45efe6c7
F test/tkt-f973c7ac31.test 28ef85c7f015477916795246d8286aeda39d4ead
@@ -1664,7 +1664,7 @@ F test/unique.test 93f8b2ef5ea51b9495f8d6493429b1fd0f465264
F test/unique2.test 3674e9f2a3f1fbbfd4772ac74b7a97090d0f77d2
F test/unixexcl.test d936ba2b06794018e136418addd59a2354eeae97
F test/unordered.test 0edaf3411d300693bca595897c5201421c6c5ec787990a1dfe2f7f60ae93f1e2
-F test/update.test e906ca7cb1dc6f52af1ea243e08f727edfa79f924c2691f2f9e72481f847310d
+F test/update.test ef3ebbafeb4be5c96db831f40796e2e77ee846da5ee8b61cfedb1ff1b9e0cc23
F test/update2.test 67455bc61fcbcf96923c45b3bc4f87bc72be7d67575ad35f134906148c7b06d3
F test/upfrom1.tcl 8859d9d437f03b44174c4524a7a734a391fd4526fcff65be08285dafc9dc9041
F test/upfrom1.test 8cb06689e99cd707d884faa16da0e8eb26ff658bb01c47ddf72fadade666e6e1
@@ -1691,7 +1691,7 @@ F test/vacuum6.test d3173a54edc81d13d99e4cf4972232b3cbb52f1d56ed48c3a939ef4e751c
F test/vacuummem.test 7b42abb3208bd82dd23a7536588396f295a314f2
F test/varint.test bbce22cda8fc4d135bcc2b589574be8410614e62
F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
-F test/view.test 798cf7936dda022d3ab0a4871685410d1c3b2a525b6b213915abc836e82a1078
+F test/view.test d654fbadae82f936c2a820bbc892592085467548ff59e88acef201416e9fe48a
F test/view2.test db32c8138b5b556f610b35dfddd38c5a58a292f07fda5281eedb0851b2672679
F test/vtab1.test 772c94825d455dffc5da34dcf4b648d8a23887616185fa024a472bf745e56df8
F test/vtab2.test 14d4ab26cee13ba6cf5c5601b158e4f57552d3b055cdd9406cf7f711e9c84082
@@ -1767,7 +1767,7 @@ F test/whereA.test 9d1077b117f1b68d5f739d94f36956c36cf995eb87bb19b77b2e81af020ed
F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
F test/whereC.test cae295158703cb3fc23bf1a108a9ab730efff0f6
F test/whereD.test c1c335e914e28b122e000e9310f02d2be83e1c9dbca2e29f46bd732703944d1b
-F test/whereE.test 0ac7e61c6225354a980666996539da154991b4325af943a25a9079079c82fb03
+F test/whereE.test 7a727b5d5b6bc8fa4cef5206e90cc0363e55ca7f0566f6fbad0206e43170f59e
F test/whereF.test 926b65519608e3f2aa28720822b9154fb5c7b13519dd78194f434a511ab3dac5
F test/whereG.test b2a479f425f7d0a432df7e842e8484560908ef703fe0fd407888ff85e7097238
F test/whereH.test e4b07f7a3c2f5d31195cd33710054c78667573b2
@@ -1784,7 +1784,7 @@ F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2
F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
F test/win32longpath.test 4baffc3acb2e5188a5e3a895b2b543ed09e62f7c72d713c1feebf76222fe9976
F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
-F test/window1.test 9242d8083158d17b9b0cb8c7ecfc767987a1863c0076020b3ecb197df7d71886
+F test/window1.test 778ac2a5a037ab1378ffcc6f0444da8658630e576ab23cc0af3d649fd1332e55
F test/window2.tcl 492c125fa550cda1dd3555768a2303b3effbeceee215293adf8871efc25f1476
F test/window2.test e466a88bd626d66edc3d352d7d7e1d5531e0079b549ba44efb029d1fbff9fd3c
F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03
@@ -1805,13 +1805,13 @@ F test/windowerr.test a8b752402109c15aa1c5efe1b93ccb0ce1ef84fa964ae1cd6684dd0b3c
F test/windowfault.test 21919e601f20b976ea2a73aa401220c89ed0e8d203c4f69476ea55bce3726496
F test/windowpushd.test d8895d08870b7226f7693665bd292eb177e62ca06799184957b3ca7dc03067df
F test/with1.test 7bc5abfe4c80c0cef8a90f5a66d60b9982e8ccd7350c8eb70611323a3b8e07ba
-F test/with2.test f803743b2c746ecdd0b638783c7235654b947b0f1c4bb551ca10e1d813317153
+F test/with2.test a1df41b987198383b9b70bf5e5fda390582e46398653858dbc6ceb24253b28df
F test/with3.test ad32d13ad50661e6fa305f62a0717649c348792e7b658bf2644976227a9e0373
F test/with4.test 257be66c0c67fee1defbbac0f685c3465e2cad037f21ce65f23f86084f198205
F test/with5.test 6248213c41fab36290b5b73aa3f937309dfba337004d9d8434c3fabc8c7d4be8
F test/with6.test 661d7e416bef6c0a2556b2c9f0c8178a5b15932bed65246abed99723a8d4e7c0
F test/withM.test 693b61765f2b387b5e3e24a4536e2e82de15ff64
-F test/without_rowid1.test a1c144156d1d21eea7b2b0db62ad0aaed37d4e163eb5758ae6b6647cc0b4412f
+F test/without_rowid1.test df3de14f1cc422d2b0f9b79969b5ef8e51c86ed87834ab35fb5139403e7f5a03
F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
F test/without_rowid3.test 39ab0dd773eaa62e59b17093f875327630f54c4145458f6d2b053d68d4b2f67b
F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
@@ -1856,7 +1856,7 @@ F tool/merge-test.tcl de76b62f2de2a92d4c1ca4f976bce0aea6899e0229e250479b229b2a19
F tool/mkautoconfamal.sh f62353eb6c06ab264da027fd4507d09914433dbdcab9cb011cdc18016f1ab3b8
F tool/mkccode.tcl 86463e68ce9c15d3041610fedd285ce32a5cf7a58fc88b3202b8b76837650dbe x
F tool/mkctimec.tcl 5ef1891ed3d0e8143ff39bad7c01ed60c2817a2fb2d9a09487f7ccad2df621e4
-F tool/mkkeywordhash.c 08b6e4d7a482a7f37a9a0032e7ba968e26624a027b6b2e9ba589be6f5e3d8c2c
+F tool/mkkeywordhash.c 7b1ffdb0731938cfb52dbf57461ff9132cb350612d944530e2f6031a7f16bf69
F tool/mkmsvcmin.tcl 6ecab9fe22c2c8de4d82d4c46797bda3d2deac8e763885f5a38d0c44a895ab33
F tool/mkopcodec.tcl 33d20791e191df43209b77d37f0ff0904620b28465cca6990cf8d60da61a07ef
F tool/mkopcodeh.tcl 130b88697da6ec5b89b41844d955d08fb62c2552e889dec8c7bcecb28d8f50bd
@@ -1928,7 +1928,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P fe098a93340b8dac15752f1be4f681e2a591f7ae1a94b177f400ccd7ef638480
-R 77978b99526ec643e6ee046dad65d5ab
-U drh
-Z 7477ef1e574f4d90d4c36f8b8b9bf567
+P c7fdd775bb5efd22a486510a32a2f278c4d5cda95acd3085a0f0dfc2ef749d6f
+R 926578650b00455ed26e22948e8e656f
+U dan
+Z 9dd8b361e8a634b7edc2d6fc8fe882ba
diff --git a/manifest.uuid b/manifest.uuid
index dfb58b93f..a35b5dd3e 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-c7fdd775bb5efd22a486510a32a2f278c4d5cda95acd3085a0f0dfc2ef749d6f \ No newline at end of file
+2f7c946c5f25a858167f5193ca06e53310394c8cff15426ab8a1327a1ec835fd \ No newline at end of file
diff --git a/src/parse.y b/src/parse.y
index 08657f93b..54bed4389 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -1638,7 +1638,8 @@ cmd ::= ANALYZE nm(X) dbnm(Y). {sqlite3Analyze(pParse, &X, &Y);}
%endif
//////////////////////// ALTER TABLE table ... ////////////////////////////////
-%ifndef SQLITE_OMIT_ALTERTABLE
+%ifndef SQLITE_OMIT_ALTERTABLE
+%ifndef SQLITE_OMIT_VIRTUALTABLE
cmd ::= ALTER TABLE fullname(X) RENAME TO nm(Z). {
sqlite3AlterRenameTable(pParse,X,&Z);
}
@@ -1662,7 +1663,8 @@ cmd ::= ALTER TABLE fullname(X) RENAME kwcolumn_opt nm(Y) TO nm(Z). {
kwcolumn_opt ::= .
kwcolumn_opt ::= COLUMNKW.
-%endif SQLITE_OMIT_ALTERTABLE
+%endif SQLITE_OMIT_VIRTUALTABLE
+%endif SQLITE_OMIT_ALTERTABLE
//////////////////////// CREATE VIRTUAL TABLE ... /////////////////////////////
%ifndef SQLITE_OMIT_VIRTUALTABLE
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 21682fa11..f18035b16 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -579,6 +579,13 @@
#endif
/*
+** SQLITE_OMIT_VIRTUALTABLE implies SQLITE_OMIT_ALTERTABLE
+*/
+#if defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_ALTERTABLE)
+# define SQLITE_OMIT_ALTERTABLE
+#endif
+
+/*
** Return true (non-zero) if the input is an integer that is too large
** to fit in 32-bits. This macro is used inside of various testcase()
** macros to verify that we have tested SQLite for large-file support.
diff --git a/test/altercorrupt.test b/test/altercorrupt.test
index 5c50fa4a4..f24cb309a 100644
--- a/test/altercorrupt.test
+++ b/test/altercorrupt.test
@@ -14,6 +14,12 @@ set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix altercorrupt
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
database_may_be_corrupt
#--------------------------------------------------------------------------
diff --git a/test/alterqf.test b/test/alterqf.test
index ce00f3b59..6a8964186 100644
--- a/test/alterqf.test
+++ b/test/alterqf.test
@@ -17,6 +17,13 @@ set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix alterqf
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
+
sqlite3_test_control SQLITE_TESTCTRL_INTERNAL_FUNCTIONS db
do_execsql_test 1.0 {
diff --git a/test/analyze4.test b/test/analyze4.test
index e3b0d23f6..d4f1921e4 100644
--- a/test/analyze4.test
+++ b/test/analyze4.test
@@ -20,6 +20,12 @@
set testdir [file dirname $argv0]
source $testdir/tester.tcl
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
do_test analyze4-1.0 {
db eval {
CREATE TABLE t1(a,b);
diff --git a/test/auth3.test b/test/auth3.test
index 4377bcdc0..abc973433 100644
--- a/test/auth3.test
+++ b/test/auth3.test
@@ -115,18 +115,20 @@ do_test auth3-2.2 {
# an authorizer failure during an ALTER TABLE. The solution (I think) is
# to disable the authorizer during schema parsing.
#
-proc auth {code args} {
- if {$code=="SQLITE_READ" && [regexp {DoNotRead} $args]} {
- return SQLITE_DENY
+ifcapable altertable {
+ proc auth {code args} {
+ if {$code=="SQLITE_READ" && [regexp {DoNotRead} $args]} {
+ return SQLITE_DENY
+ }
+ return SQLITE_OK
}
- return SQLITE_OK
+ do_execsql_test auth3-3.0 {
+ CREATE TEMPORARY TABLE TempTable (
+ key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE,
+ value TEXT NOT NULL ON CONFLICT FAIL);
+ ALTER TABLE TempTable RENAME TO DoNotRead;
+ SELECT name FROM temp.sqlite_master;
+ } {DoNotRead sqlite_autoindex_DoNotRead_1}
}
-do_execsql_test auth3-3.0 {
- CREATE TEMPORARY TABLE TempTable (
- key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE,
- value TEXT NOT NULL ON CONFLICT FAIL);
- ALTER TABLE TempTable RENAME TO DoNotRead;
- SELECT name FROM temp.sqlite_master;
-} {DoNotRead sqlite_autoindex_DoNotRead_1}
finish_test
diff --git a/test/columncount.test b/test/columncount.test
index 669a35a72..d9956b40f 100644
--- a/test/columncount.test
+++ b/test/columncount.test
@@ -16,6 +16,12 @@ set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix columncount
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
proc do_ccsql_test {tn sql res} {
uplevel [list do_test $tn [subst -nocommands {
diff --git a/test/corruptL.test b/test/corruptL.test
index 5ade7010d..b7ff45d2e 100644
--- a/test/corruptL.test
+++ b/test/corruptL.test
@@ -1179,9 +1179,12 @@ do_catchsql_test 14.1 {
PRAGMA integrity_check;
} {1 {database disk image is malformed}}
-do_catchsql_test 14.2 {
- ALTER TABLE t1 RENAME TO alkjalkjdfiiiwuer987lkjwer82mx97sf98788s9789s;
-} {1 {database disk image is malformed}}
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable altertable {
+ do_catchsql_test 14.2 {
+ ALTER TABLE t1 RENAME TO alkjalkjdfiiiwuer987lkjwer82mx97sf98788s9789s;
+ } {1 {database disk image is malformed}}
+}
extra_schema_checks 1
#-------------------------------------------------------------------------
diff --git a/test/e_changes.test b/test/e_changes.test
index 9d49115b5..2eb77d313 100644
--- a/test/e_changes.test
+++ b/test/e_changes.test
@@ -123,7 +123,9 @@ do_changes_test 2.2 {
do_changes_test 2.3 { SELECT count(x) FROM t1 } {47 47}
do_changes_test 2.4 { DROP TABLE t1 } 47
do_changes_test 2.5 { CREATE TABLE t1(x) } 47
-do_changes_test 2.6 { ALTER TABLE t1 ADD COLUMN b } 47
+ifcapable altertable {
+ do_changes_test 2.6 { ALTER TABLE t1 ADD COLUMN b } 47
+}
#--------------------------------------------------------------------------
diff --git a/test/e_totalchanges.test b/test/e_totalchanges.test
index d1666acfa..bb5cfba8a 100644
--- a/test/e_totalchanges.test
+++ b/test/e_totalchanges.test
@@ -94,24 +94,26 @@ do_tc_test 1.2.2 {
#--------------------------------------------------------------------------
# EVIDENCE-OF: R-61766-15253 Executing any other type of SQL statement
# does not affect the value returned by sqlite3_total_changes().
-do_tc_test 2.1 {
- INSERT INTO t1 VALUES(1, 2), (3, 4);
- INSERT INTO t2 VALUES(1, 2), (3, 4);
-} {15}
-do_tc_test 2.2 {
- SELECT count(*) FROM t1;
-} {2 15}
-do_tc_test 2.3 {
- CREATE TABLE t4(a, b);
- ALTER TABLE t4 ADD COLUMN c;
- CREATE INDEX i4 ON t4(c);
- ALTER TABLE t4 RENAME TO t5;
- ANALYZE;
- BEGIN;
- DROP TABLE t2;
- ROLLBACK;
- VACUUM;
-} {15}
+ifcapable altertable {
+ do_tc_test 2.1 {
+ INSERT INTO t1 VALUES(1, 2), (3, 4);
+ INSERT INTO t2 VALUES(1, 2), (3, 4);
+ } {15}
+ do_tc_test 2.2 {
+ SELECT count(*) FROM t1;
+ } {2 15}
+ do_tc_test 2.3 {
+ CREATE TABLE t4(a, b);
+ ALTER TABLE t4 ADD COLUMN c;
+ CREATE INDEX i4 ON t4(c);
+ ALTER TABLE t4 RENAME TO t5;
+ ANALYZE;
+ BEGIN;
+ DROP TABLE t2;
+ ROLLBACK;
+ VACUUM;
+ } {15}
+}
#--------------------------------------------------------------------------
diff --git a/test/func.test b/test/func.test
index 38c003773..ca1027f50 100644
--- a/test/func.test
+++ b/test/func.test
@@ -1459,12 +1459,15 @@ do_execsql_test func-33.10 {
do_catchsql_test func-33.11 {
INSERT INTO t33a VALUES(1,2);
} {1 {unsafe use of testdirectonly()}}
+
+ifcapable altertable {
do_execsql_test func-33.20 {
ALTER TABLE t33a RENAME COLUMN a TO aaa;
SELECT sql FROM sqlite_master WHERE name='r1';
} {{CREATE TRIGGER r1 AFTER INSERT ON t33a BEGIN
INSERT INTO t33b(x,y) VALUES(testdirectonly(new.aaa),new.b);
END}}
+}
# 2020-01-09 Yongheng fuzzer find
# The bug is in the register-validity debug logic, not in the SQLite core
diff --git a/test/gencol1.test b/test/gencol1.test
index 0d7261543..ee0ebc53f 100644
--- a/test/gencol1.test
+++ b/test/gencol1.test
@@ -587,20 +587,22 @@ do_execsql_test gencol1-20.2 {
# 2021-07-30 forum https://sqlite.org/forum/forumpost/ff3ffe09251c105b?t=h
#
+ifcapable vtab {
reset_db
-do_execsql_test gencol1-21.1 {
- CREATE TABLE t1(
- a integer primary key,
- b int generated always as (a+5),
- c text GENERATED ALWAYS as (printf('%08x',a)),
- d Generated
- Always
- AS ('xyzzy'),
- e int Always default(5)
- );
- INSERT INTO t1(a) VALUES(5);
- SELECT name, type FROM pragma_table_xinfo('t1');
-} {a INTEGER b INT c TEXT d {} e INT}
+ do_execsql_test gencol1-21.1 {
+ CREATE TABLE t1(
+ a integer primary key,
+ b int generated always as (a+5),
+ c text GENERATED ALWAYS as (printf('%08x',a)),
+ d Generated
+ Always
+ AS ('xyzzy'),
+ e int Always default(5)
+ );
+ INSERT INTO t1(a) VALUES(5);
+ SELECT name, type FROM pragma_table_xinfo('t1');
+ } {a INTEGER b INT c TEXT d {} e INT}
+}
# 2021-09-07 forum https://sqlite.org/forum/forumpost/699b44b3ee
#
diff --git a/test/hook.test b/test/hook.test
index 1dba87f27..bb868df8b 100644
--- a/test/hook.test
+++ b/test/hook.test
@@ -677,30 +677,32 @@ do_preupdate_test 7.4.2.3 {
DELETE main t5 1 1 a 1
}
-do_execsql_test 7.5.1.0 {
- CREATE TABLE t7(a, b);
- INSERT INTO t7 VALUES('one', 'two');
- INSERT INTO t7 VALUES('three', 'four');
- ALTER TABLE t7 ADD COLUMN c DEFAULT NULL;
-}
-
-do_preupdate_test 7.5.1.1 {
- DELETE FROM t7 WHERE a = 'one'
-} {
- DELETE main t7 1 1 one two {}
-}
-
-do_preupdate_test 7.5.1.2 {
- UPDATE t7 SET b = 'five'
-} {
- UPDATE main t7 2 2 three four {} three five {}
-}
-
-do_execsql_test 7.5.2.0 {
- CREATE TABLE t8(a, b);
- INSERT INTO t8 VALUES('one', 'two');
- INSERT INTO t8 VALUES('three', 'four');
- ALTER TABLE t8 ADD COLUMN c DEFAULT 'xxx';
+ifcapable altertable {
+ do_execsql_test 7.5.1.0 {
+ CREATE TABLE t7(a, b);
+ INSERT INTO t7 VALUES('one', 'two');
+ INSERT INTO t7 VALUES('three', 'four');
+ ALTER TABLE t7 ADD COLUMN c DEFAULT NULL;
+ }
+
+ do_preupdate_test 7.5.1.1 {
+ DELETE FROM t7 WHERE a = 'one'
+ } {
+ DELETE main t7 1 1 one two {}
+ }
+
+ do_preupdate_test 7.5.1.2 {
+ UPDATE t7 SET b = 'five'
+ } {
+ UPDATE main t7 2 2 three four {} three five {}
+ }
+
+ do_execsql_test 7.5.2.0 {
+ CREATE TABLE t8(a, b);
+ INSERT INTO t8 VALUES('one', 'two');
+ INSERT INTO t8 VALUES('three', 'four');
+ ALTER TABLE t8 ADD COLUMN c DEFAULT 'xxx';
+ }
}
if 0 {
@@ -848,48 +850,53 @@ do_preupdate_test 7.6.4 {
}
# No preupdate callbacks for modifying sqlite_master.
-do_preupdate_test 8.1 { CREATE TABLE x1(x, y); } { }
-do_preupdate_test 8.2 { ALTER TABLE x1 ADD COLUMN z } { }
-do_preupdate_test 8.3 { ALTER TABLE x1 RENAME TO y1 } { }
-do_preupdate_test 8.4 { CREATE INDEX y1x ON y1(x) } { }
-do_preupdate_test 8.5 { CREATE VIEW v1 AS SELECT * FROM y1 } { }
-do_preupdate_test 8.6 { DROP TABLE y1 } { }
+ifcapable altertable {
+ do_preupdate_test 8.1 { CREATE TABLE x1(x, y); } { }
+ do_preupdate_test 8.2 { ALTER TABLE x1 ADD COLUMN z } { }
+ do_preupdate_test 8.3 { ALTER TABLE x1 RENAME TO y1 } { }
+ do_preupdate_test 8.4 { CREATE INDEX y1x ON y1(x) } { }
+ do_preupdate_test 8.5 { CREATE VIEW v1 AS SELECT * FROM y1 } { }
+ do_preupdate_test 8.6 { DROP TABLE y1 } { }
+}
#-------------------------------------------------------------------------
reset_db
db preupdate hook preupdate_hook
-do_execsql_test 9.0 {
- CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c);
- CREATE TABLE t2(a, b INTEGER PRIMARY KEY);
-}
-do_preupdate_test 9.1 {
- INSERT INTO t1 VALUES(456, NULL, NULL);
-} {
- INSERT main t1 456 456 0 456 {} {}
-}
-do_execsql_test 9.2 {
- ALTER TABLE t1 ADD COLUMN d;
-}
-do_preupdate_test 9.3 {
- INSERT INTO t1(a, b, c) VALUES(457, NULL, NULL);
-} {
- INSERT main t1 457 457 0 457 {} {} {}
-}
-do_preupdate_test 9.4 {
- DELETE FROM t1 WHERE a=456
-} {
- DELETE main t1 456 456 0 456 {} {} {}
+
+ifcapable altertable {
+ do_execsql_test 9.0 {
+ CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c);
+ CREATE TABLE t2(a, b INTEGER PRIMARY KEY);
+ }
+ do_preupdate_test 9.1 {
+ INSERT INTO t1 VALUES(456, NULL, NULL);
+ } {
+ INSERT main t1 456 456 0 456 {} {}
+ }
+ do_execsql_test 9.2 {
+ ALTER TABLE t1 ADD COLUMN d;
+ }
+ do_preupdate_test 9.3 {
+ INSERT INTO t1(a, b, c) VALUES(457, NULL, NULL);
+ } {
+ INSERT main t1 457 457 0 457 {} {} {}
+ }
+ do_preupdate_test 9.4 {
+ DELETE FROM t1 WHERE a=456
+ } {
+ DELETE main t1 456 456 0 456 {} {} {}
+ }
+ do_preupdate_test 9.5 {
+ INSERT INTO t2 DEFAULT VALUES;
+ } {
+ INSERT main t2 1 1 0 {} 1
+ }
+ do_preupdate_test 9.6 {
+ INSERT INTO t1 DEFAULT VALUES;
+ } {
+ INSERT main t1 458 458 0 458 {} {} {}
+ }
}
-do_preupdate_test 9.5 {
- INSERT INTO t2 DEFAULT VALUES;
-} {
- INSERT main t2 1 1 0 {} 1
-}
-do_preupdate_test 9.6 {
- INSERT INTO t1 DEFAULT VALUES;
-} {
- INSERT main t1 458 458 0 458 {} {} {}
-}
do_execsql_test 10.0 {
diff --git a/test/indexexpr1.test b/test/indexexpr1.test
index a31b87695..92dfc8689 100644
--- a/test/indexexpr1.test
+++ b/test/indexexpr1.test
@@ -75,18 +75,20 @@ do_execsql_test indexexpr1-150eqp {
ORDER BY +rowid;
} {/USING INDEX t1abx/}
-do_execsql_test indexexpr1-160 {
- ALTER TABLE t1 ADD COLUMN d;
- UPDATE t1 SET d=length(a);
- CREATE INDEX t1a2 ON t1(SUBSTR(a, 27, 3)) WHERE d>=29;
- SELECT rowid, b, c FROM t1
- WHERE substr(a,27,3)=='ord' AND d>=29;
-} {1 1 1}
-do_execsql_test indexexpr1-160eqp {
- EXPLAIN QUERY PLAN
- SELECT rowid, b, c FROM t1
- WHERE substr(a,27,3)=='ord' AND d>=29;
-} {/USING INDEX t1a2/}
+ifcapable altertable {
+ do_execsql_test indexexpr1-160 {
+ ALTER TABLE t1 ADD COLUMN d;
+ UPDATE t1 SET d=length(a);
+ CREATE INDEX t1a2 ON t1(SUBSTR(a, 27, 3)) WHERE d>=29;
+ SELECT rowid, b, c FROM t1
+ WHERE substr(a,27,3)=='ord' AND d>=29;
+ } {1 1 1}
+ do_execsql_test indexexpr1-160eqp {
+ EXPLAIN QUERY PLAN
+ SELECT rowid, b, c FROM t1
+ WHERE substr(a,27,3)=='ord' AND d>=29;
+ } {/USING INDEX t1a2/}
+}
# ORDER BY using an indexed expression
#
@@ -166,18 +168,20 @@ do_execsql_test indexexpr1-250eqp {
ORDER BY +id;
} {/USING INDEX t1abx/}
-do_execsql_test indexexpr1-260 {
- ALTER TABLE t1 ADD COLUMN d;
- UPDATE t1 SET d=length(a);
- CREATE INDEX t1a2 ON t1(SUBSTR(a, 27, 3)) WHERE d>=29;
- SELECT id, b, c FROM t1
- WHERE substr(a,27,3)=='ord' AND d>=29;
-} {1 1 1}
-do_execsql_test indexexpr1-260eqp {
- EXPLAIN QUERY PLAN
- SELECT id, b, c FROM t1
- WHERE substr(a,27,3)=='ord' AND d>=29;
-} {/USING INDEX t1a2/}
+ifcapable altertable {
+ do_execsql_test indexexpr1-260 {
+ ALTER TABLE t1 ADD COLUMN d;
+ UPDATE t1 SET d=length(a);
+ CREATE INDEX t1a2 ON t1(SUBSTR(a, 27, 3)) WHERE d>=29;
+ SELECT id, b, c FROM t1
+ WHERE substr(a,27,3)=='ord' AND d>=29;
+ } {1 1 1}
+ do_execsql_test indexexpr1-260eqp {
+ EXPLAIN QUERY PLAN
+ SELECT id, b, c FROM t1
+ WHERE substr(a,27,3)=='ord' AND d>=29;
+ } {/USING INDEX t1a2/}
+}
do_catchsql_test indexexpr1-300 {
diff --git a/test/istrue.test b/test/istrue.test
index 13eccabc2..f1ba63248 100644
--- a/test/istrue.test
+++ b/test/istrue.test
@@ -143,20 +143,22 @@ foreach {tn val} [list 1 NaN 2 -NaN 3 NaN0 4 -NaN0 5 Inf 6 -Inf] {
} {0}
}
-do_execsql_test istrue-700 {
- CREATE TABLE t7(
- a INTEGER PRIMARY KEY,
- b BOOLEAN DEFAULT false,
- c BOOLEAN DEFAULT true
- );
- INSERT INTO t7(a) VALUES(1);
- INSERT INTO t7(a,b,c) VALUES(2,true,false);
- ALTER TABLE t7 ADD COLUMN d BOOLEAN DEFAULT false;
- ALTER TABLE t7 ADD COLUMN e BOOLEAN DEFAULT true;
- INSERT INTO t7(a,b,c) VALUES(3,true,false);
- INSERT INTO t7 VALUES(4,false,true,true,false);
- SELECT *,'x' FROM t7 ORDER BY a;
-} {1 0 1 0 1 x 2 1 0 0 1 x 3 1 0 0 1 x 4 0 1 1 0 x}
+ifcapable altertable {
+ do_execsql_test istrue-700 {
+ CREATE TABLE t7(
+ a INTEGER PRIMARY KEY,
+ b BOOLEAN DEFAULT false,
+ c BOOLEAN DEFAULT true
+ );
+ INSERT INTO t7(a) VALUES(1);
+ INSERT INTO t7(a,b,c) VALUES(2,true,false);
+ ALTER TABLE t7 ADD COLUMN d BOOLEAN DEFAULT false;
+ ALTER TABLE t7 ADD COLUMN e BOOLEAN DEFAULT true;
+ INSERT INTO t7(a,b,c) VALUES(3,true,false);
+ INSERT INTO t7 VALUES(4,false,true,true,false);
+ SELECT *,'x' FROM t7 ORDER BY a;
+ } {1 0 1 0 1 x 2 1 0 0 1 x 3 1 0 0 1 x 4 0 1 1 0 x}
+}
do_execsql_test istrue-710 {
SELECT 0.5 IS TRUE COLLATE NOCASE;
diff --git a/test/pager1.test b/test/pager1.test
index a1e06d15c..7cb158c99 100644
--- a/test/pager1.test
+++ b/test/pager1.test
@@ -1940,20 +1940,22 @@ do_test pager1-18.4 {
} {1 {database disk image is malformed}}
db2 close
extra_schema_checks 0
-do_test pager1-18.5 {
- sqlite3 db ""
- sqlite3_db_config db DEFENSIVE 0
- execsql {
- CREATE TABLE t1(a, b);
- CREATE TABLE t2(a, b);
- PRAGMA writable_schema = 1;
- UPDATE sqlite_master SET rootpage=5 WHERE tbl_name = 't1';
- PRAGMA writable_schema = 0;
- ALTER TABLE t1 RENAME TO x1;
- }
- catchsql { SELECT * FROM x1 }
-} {1 {database disk image is malformed}}
-db close
+ifcapable altertable {
+ do_test pager1-18.5 {
+ sqlite3 db ""
+ sqlite3_db_config db DEFENSIVE 0
+ execsql {
+ CREATE TABLE t1(a, b);
+ CREATE TABLE t2(a, b);
+ PRAGMA writable_schema = 1;
+ UPDATE sqlite_master SET rootpage=5 WHERE tbl_name = 't1';
+ PRAGMA writable_schema = 0;
+ ALTER TABLE t1 RENAME TO x1;
+ }
+ catchsql { SELECT * FROM x1 }
+ } {1 {database disk image is malformed}}
+ db close
+}
extra_schema_checks 1
do_test pager1-18.6 {
diff --git a/test/pragma.test b/test/pragma.test
index c4b9d334a..ba61882d5 100644
--- a/test/pragma.test
+++ b/test/pragma.test
@@ -532,29 +532,31 @@ Page 6 is never used} {row 1 missing from index i2}}
# Verify that PRAGMA integrity_check catches UNIQUE and NOT NULL
# constraint violations.
#
-sqlite3_db_config db DEFENSIVE 0
-do_execsql_test pragma-3.20 {
- CREATE TABLE t1(a,b);
- CREATE INDEX t1a ON t1(a);
- INSERT INTO t1 VALUES(1,1),(2,2),(3,3),(2,4),(NULL,5),(NULL,6);
- PRAGMA writable_schema=ON;
- UPDATE sqlite_master SET sql='CREATE UNIQUE INDEX t1a ON t1(a)'
- WHERE name='t1a';
- UPDATE sqlite_master SET sql='CREATE TABLE t1(a NOT NULL,b)'
- WHERE name='t1';
- PRAGMA writable_schema=OFF;
- ALTER TABLE t1 RENAME TO t1x;
- PRAGMA integrity_check;
-} {{non-unique entry in index t1a} {NULL value in t1x.a} {non-unique entry in index t1a} {NULL value in t1x.a}}
-do_execsql_test pragma-3.21 {
- PRAGMA integrity_check(3);
-} {{non-unique entry in index t1a} {NULL value in t1x.a} {non-unique entry in index t1a}}
-do_execsql_test pragma-3.22 {
- PRAGMA integrity_check(2);
-} {{non-unique entry in index t1a} {NULL value in t1x.a}}
-do_execsql_test pragma-3.23 {
- PRAGMA integrity_check(1);
-} {{non-unique entry in index t1a}}
+ifcapable altertable {
+ sqlite3_db_config db DEFENSIVE 0
+ do_execsql_test pragma-3.20 {
+ CREATE TABLE t1(a,b);
+ CREATE INDEX t1a ON t1(a);
+ INSERT INTO t1 VALUES(1,1),(2,2),(3,3),(2,4),(NULL,5),(NULL,6);
+ PRAGMA writable_schema=ON;
+ UPDATE sqlite_master SET sql='CREATE UNIQUE INDEX t1a ON t1(a)'
+ WHERE name='t1a';
+ UPDATE sqlite_master SET sql='CREATE TABLE t1(a NOT NULL,b)'
+ WHERE name='t1';
+ PRAGMA writable_schema=OFF;
+ ALTER TABLE t1 RENAME TO t1x;
+ PRAGMA integrity_check;
+ } {{non-unique entry in index t1a} {NULL value in t1x.a} {non-unique entry in index t1a} {NULL value in t1x.a}}
+ do_execsql_test pragma-3.21 {
+ PRAGMA integrity_check(3);
+ } {{non-unique entry in index t1a} {NULL value in t1x.a} {non-unique entry in index t1a}}
+ do_execsql_test pragma-3.22 {
+ PRAGMA integrity_check(2);
+ } {{non-unique entry in index t1a} {NULL value in t1x.a}}
+ do_execsql_test pragma-3.23 {
+ PRAGMA integrity_check(1);
+ } {{non-unique entry in index t1a}}
+}
# PRAGMA integrity check (or more specifically the sqlite3BtreeCount()
# interface) used to leave index cursors in an inconsistent state
@@ -564,7 +566,7 @@ do_execsql_test pragma-3.23 {
# that problem has been fixed.
#
do_test pragma-3.30 {
- db close
+ catch { db close }
delete_file test.db
sqlite3 db test.db
db eval {
@@ -1957,14 +1959,16 @@ do_test 23.3 {
capture_pragma db2 out {PRAGMA index_list(t1)}
db2 eval {SELECT seq, name, "unique", origin, '|' FROM out ORDER BY seq}
} {0 i3 0 c | 1 i2 0 c | 2 i2x 0 c | 3 i1 0 c |}
-do_test 23.4 {
- db eval {
- ALTER TABLE t1 ADD COLUMN e;
- }
- db2 eval {
- PRAGMA table_info(t1);
- }
-} {/4 e {} 0 {} 0/}
+ifcapable altertable {
+ do_test 23.4 {
+ db eval {
+ ALTER TABLE t1 ADD COLUMN e;
+ }
+ db2 eval {
+ PRAGMA table_info(t1);
+ }
+ } {/4 e {} 0 {} 0/}
+}
do_test 23.5 {
db eval {
DROP TABLE t2;
diff --git a/test/quote.test b/test/quote.test
index 212885c05..9810a3ca0 100644
--- a/test/quote.test
+++ b/test/quote.test
@@ -141,43 +141,45 @@ do_execsql_test 2.5 {
# 2021-03-13
# ticket 1c24a659e6d7f3a1
-reset_db
-do_catchsql_test 3.0 {
- CREATE TABLE t1(a,b);
- CREATE INDEX x1 on t1("b");
- ALTER TABLE t1 DROP COLUMN b;
-} {1 {error in index x1 after drop column: no such column: b}}
-do_catchsql_test 3.1 {
- DROP TABLE t1;
- CREATE TABLE t1(a,"b");
- CREATE INDEX x1 on t1("b");
- ALTER TABLE t1 DROP COLUMN b;
-} {1 {error in index x1 after drop column: no such column: b}}
-do_catchsql_test 3.2 {
- DROP TABLE t1;
- CREATE TABLE t1(a,'b');
- CREATE INDEX x1 on t1("b");
- ALTER TABLE t1 DROP COLUMN b;
-} {1 {error in index x1 after drop column: no such column: b}}
-do_catchsql_test 3.3 {
- DROP TABLE t1;
- CREATE TABLE t1(a,"b");
- CREATE INDEX x1 on t1('b');
- ALTER TABLE t1 DROP COLUMN b;
-} {1 {error in index x1 after drop column: no such column: b}}
-do_catchsql_test 3.4 {
- DROP TABLE t1;
- CREATE TABLE t1(a, b, c);
- CREATE INDEX x1 ON t1("a"||"b");
- INSERT INTO t1 VALUES(1,2,3),(1,4,5);
- ALTER TABLE t1 DROP COLUMN b;
-} {1 {error in index x1 after drop column: no such column: b}}
-do_catchsql_test 3.5 {
- DROP TABLE t1;
- CREATE TABLE t1(a, b, c);
- CREATE INDEX x1 ON t1("a"||"x");
- INSERT INTO t1 VALUES(1,2,3),(1,4,5);
- ALTER TABLE t1 DROP COLUMN b;
-} {0 {}}
+ifcapable altertable {
+ reset_db
+ do_catchsql_test 3.0 {
+ CREATE TABLE t1(a,b);
+ CREATE INDEX x1 on t1("b");
+ ALTER TABLE t1 DROP COLUMN b;
+ } {1 {error in index x1 after drop column: no such column: b}}
+ do_catchsql_test 3.1 {
+ DROP TABLE t1;
+ CREATE TABLE t1(a,"b");
+ CREATE INDEX x1 on t1("b");
+ ALTER TABLE t1 DROP COLUMN b;
+ } {1 {error in index x1 after drop column: no such column: b}}
+ do_catchsql_test 3.2 {
+ DROP TABLE t1;
+ CREATE TABLE t1(a,'b');
+ CREATE INDEX x1 on t1("b");
+ ALTER TABLE t1 DROP COLUMN b;
+ } {1 {error in index x1 after drop column: no such column: b}}
+ do_catchsql_test 3.3 {
+ DROP TABLE t1;
+ CREATE TABLE t1(a,"b");
+ CREATE INDEX x1 on t1('b');
+ ALTER TABLE t1 DROP COLUMN b;
+ } {1 {error in index x1 after drop column: no such column: b}}
+ do_catchsql_test 3.4 {
+ DROP TABLE t1;
+ CREATE TABLE t1(a, b, c);
+ CREATE INDEX x1 ON t1("a"||"b");
+ INSERT INTO t1 VALUES(1,2,3),(1,4,5);
+ ALTER TABLE t1 DROP COLUMN b;
+ } {1 {error in index x1 after drop column: no such column: b}}
+ do_catchsql_test 3.5 {
+ DROP TABLE t1;
+ CREATE TABLE t1(a, b, c);
+ CREATE INDEX x1 ON t1("a"||"x");
+ INSERT INTO t1 VALUES(1,2,3),(1,4,5);
+ ALTER TABLE t1 DROP COLUMN b;
+ } {0 {}}
+}
finish_test
diff --git a/test/schema3.test b/test/schema3.test
index ba7d745eb..39d463233 100644
--- a/test/schema3.test
+++ b/test/schema3.test
@@ -16,6 +16,12 @@ source $testdir/tester.tcl
source $testdir/malloc_common.tcl
source $testdir/lock_common.tcl
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
# This block tests that if one client modifies the database schema, a
# second client updates its internal cache of the database schema before
# executing any queries. Specifically, it does not return a "no such column"
diff --git a/test/skipscan2.test b/test/skipscan2.test
index 47b2b3fff..aa870d456 100644
--- a/test/skipscan2.test
+++ b/test/skipscan2.test
@@ -157,7 +157,6 @@ do_execsql_test skipscan2-2.1 {
CREATE INDEX peoplew_idx1 ON peoplew(role, height);
INSERT INTO peoplew(name,role,height)
SELECT name, role, height FROM people;
- ALTER TABLE people RENAME TO old_people;
SELECT name FROM peoplew WHERE height>=180 ORDER BY +name;
} {David Jack Patrick Quiana Xavier}
do_execsql_test skipscan2-2.2 {
diff --git a/test/sorterref.test b/test/sorterref.test
index 28445c6e7..adf1cf53b 100644
--- a/test/sorterref.test
+++ b/test/sorterref.test
@@ -14,6 +14,12 @@ set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix sorterref
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
do_execsql_test 1.0 {
CREATE TABLE t1(a, b, c);
INSERT INTO t1 VALUES(1, 2, 3);
diff --git a/test/strict1.test b/test/strict1.test
index 5e10af889..606136abe 100644
--- a/test/strict1.test
+++ b/test/strict1.test
@@ -46,8 +46,12 @@ do_execsql_test strict1-2.0 {
d TEXT,
e REAL
) STRICT;
- SELECT strict FROM pragma_table_list('t1');
-} {1}
+} {}
+ifcapable vtab {
+ do_execsql_test strict1-2.0a {
+ SELECT strict FROM pragma_table_list('t1');
+ } {1}
+}
do_catchsql_test strict1-2.1 {
INSERT INTO t1(a) VALUES('xyz');
} {1 {cannot store TEXT value in INT column t1.a}}
diff --git a/test/tkt-8454a207b9.test b/test/tkt-8454a207b9.test
index 88a8614f8..20e142057 100644
--- a/test/tkt-8454a207b9.test
+++ b/test/tkt-8454a207b9.test
@@ -18,6 +18,12 @@
set testdir [file dirname $argv0]
source $testdir/tester.tcl
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
do_test tkt-8454a207b9.1 {
db eval {
CREATE TABLE t1(a);
diff --git a/test/tkt-f67b41381a.test b/test/tkt-f67b41381a.test
index 1ddec988c..43e5cc7db 100644
--- a/test/tkt-f67b41381a.test
+++ b/test/tkt-f67b41381a.test
@@ -15,6 +15,11 @@ set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix tkt-f67b41381a
+ifcapable !altertable {
+ finish_test
+ return
+}
+
do_execsql_test 1.0 {
CREATE TABLE t1(a);
INSERT INTO t1 VALUES(1);
diff --git a/test/update.test b/test/update.test
index dd96124b4..7be360726 100644
--- a/test/update.test
+++ b/test/update.test
@@ -619,16 +619,18 @@ do_test update-14.4 {
# Ticket [https://www.sqlite.org/src/tktview/43107840f1c02] on 2014-10-29
# An assertion fault on UPDATE
#
-do_execsql_test update-15.1 {
- CREATE TABLE t15(a INTEGER PRIMARY KEY, b);
- INSERT INTO t15(a,b) VALUES(10,'abc'),(20,'def'),(30,'ghi');
- ALTER TABLE t15 ADD COLUMN c;
- CREATE INDEX t15c ON t15(c);
- INSERT INTO t15(a,b)
- VALUES(5,'zyx'),(15,'wvu'),(25,'tsr'),(35,'qpo');
- UPDATE t15 SET c=printf("y%d",a) WHERE c IS NULL;
- SELECT a,b,c,'|' FROM t15 ORDER BY a;
-} {5 zyx y5 | 10 abc y10 | 15 wvu y15 | 20 def y20 | 25 tsr y25 | 30 ghi y30 | 35 qpo y35 |}
+ifcapable altertable {
+ do_execsql_test update-15.1 {
+ CREATE TABLE t15(a INTEGER PRIMARY KEY, b);
+ INSERT INTO t15(a,b) VALUES(10,'abc'),(20,'def'),(30,'ghi');
+ ALTER TABLE t15 ADD COLUMN c;
+ CREATE INDEX t15c ON t15(c);
+ INSERT INTO t15(a,b)
+ VALUES(5,'zyx'),(15,'wvu'),(25,'tsr'),(35,'qpo');
+ UPDATE t15 SET c=printf("y%d",a) WHERE c IS NULL;
+ SELECT a,b,c,'|' FROM t15 ORDER BY a;
+ } {5 zyx y5 | 10 abc y10 | 15 wvu y15 | 20 def y20 | 25 tsr y25 | 30 ghi y30 | 35 qpo y35 |}
+}
# Unreleased bug in UPDATE caused by the UPSERT changes.
# Found by OSSFuzz as soon as the UPSERT changes landed on trunk.
diff --git a/test/view.test b/test/view.test
index 68bfcad64..85202d7d0 100644
--- a/test/view.test
+++ b/test/view.test
@@ -55,9 +55,11 @@ do_test view-1.1.110 {
SELECT * FROM v1temp ORDER BY a;
}
} {0 {1 2 4 5 7 8 1 2 4 5 7 8}}
-do_execsql_test view-1.1.120 {
- SELECT name, type FROM pragma_table_list('v1');
-} {v1 view}
+ifcapable vtab {
+ do_execsql_test view-1.1.120 {
+ SELECT name, type FROM pragma_table_list('v1');
+ } {v1 view}
+}
do_test view-1.2 {
catchsql {
ROLLBACK;
diff --git a/test/whereE.test b/test/whereE.test
index 31086b249..cd9f81d53 100644
--- a/test/whereE.test
+++ b/test/whereE.test
@@ -18,6 +18,12 @@ set testdir [file dirname $argv0]
source $testdir/tester.tcl
set ::testprefix whereE
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+
do_execsql_test 1.1 {
CREATE TABLE t1(a,b);
INSERT INTO t1 VALUES(1,10), (2,20), (3,30), (2,22), (3, 33);
diff --git a/test/window1.test b/test/window1.test
index 8db23c55a..f595d40e2 100644
--- a/test/window1.test
+++ b/test/window1.test
@@ -1267,13 +1267,15 @@ do_catchsql_test 31.3 {
} {1 {frame ending offset must be a non-negative integer}}
# 2019-11-16 chromium issue 1025467
-db close
-sqlite3 db :memory:
-do_catchsql_test 32.10 {
- CREATE VIEW a AS SELECT NULL INTERSECT SELECT NULL ORDER BY s() OVER R;
- CREATE TABLE a0 AS SELECT 0;
- ALTER TABLE a0 RENAME TO S;
-} {1 {error in view a: 1st ORDER BY term does not match any column in the result set}}
+ifcapable altertable {
+ db close
+ sqlite3 db :memory:
+ do_catchsql_test 32.10 {
+ CREATE VIEW a AS SELECT NULL INTERSECT SELECT NULL ORDER BY s() OVER R;
+ CREATE TABLE a0 AS SELECT 0;
+ ALTER TABLE a0 RENAME TO S;
+ } {1 {error in view a: 1st ORDER BY term does not match any column in the result set}}
+}
reset_db
do_execsql_test 33.1 {
diff --git a/test/with2.test b/test/with2.test
index 93be6a6a1..660df52b7 100644
--- a/test/with2.test
+++ b/test/with2.test
@@ -552,64 +552,68 @@ do_execsql_test 10.1 {
# 2021-05-21
# Forum post https://sqlite.org/forum/forumpost/aa4a7a3980
#
+ifcapable altertable {
reset_db
-do_execsql_test 11.1 {
- CREATE TABLE t1(a);
- CREATE VIEW v2(c) AS
- WITH x AS (
- WITH y AS (
- WITH z AS(SELECT * FROM t1)
- SELECT * FROM v2
- ) SELECT a
- ) SELECT * from t1;
- ALTER TABLE t1 RENAME COLUMN a TO b;
- SELECT sql FROM sqlite_schema WHERE name='t1';
-} {{CREATE TABLE t1(b)}}
-do_catchsql_test 11.2 {
- INSERT INTO t1 VALUES(55);
- SELECT * FROM v2;
-} {0 55}
-do_catchsql_test 11.3 {
- DROP VIEW v2;
- CREATE VIEW v2(c) AS
- WITH x AS (
- WITH y AS (
- WITH z AS(SELECT * FROM t1)
- SELECT * FROM v2
- ) SELECT a
- ) SELECT * from t1, x;
- SELECT * FROM v2;
-} {1 {no such column: a}}
-do_catchsql_test 11.4 {
- DROP VIEW v2;
- CREATE VIEW v2(c) AS
- WITH x AS (
- WITH y AS (
- WITH z AS(SELECT * FROM t1)
- SELECT * FROM v2
- ) SELECT *
- ) SELECT * from t1, x;
- SELECT * FROM v2;
-} {1 {no tables specified}}
-do_catchsql_test 11.5 {
- WITH x AS (
- WITH y AS (
- WITH z AS(SELECT * FROM t1)
- SELECT * FROM no_such_table
- ) SELECT a
- ) SELECT * from t1;
-} {0 55}
+ do_execsql_test 11.1 {
+ CREATE TABLE t1(a);
+ CREATE VIEW v2(c) AS
+ WITH x AS (
+ WITH y AS (
+ WITH z AS(SELECT * FROM t1)
+ SELECT * FROM v2
+ ) SELECT a
+ ) SELECT * from t1;
+ ALTER TABLE t1 RENAME COLUMN a TO b;
+ SELECT sql FROM sqlite_schema WHERE name='t1';
+ } {{CREATE TABLE t1(b)}}
+ do_catchsql_test 11.2 {
+ INSERT INTO t1 VALUES(55);
+ SELECT * FROM v2;
+ } {0 55}
+ do_catchsql_test 11.3 {
+ DROP VIEW v2;
+ CREATE VIEW v2(c) AS
+ WITH x AS (
+ WITH y AS (
+ WITH z AS(SELECT * FROM t1)
+ SELECT * FROM v2
+ ) SELECT a
+ ) SELECT * from t1, x;
+ SELECT * FROM v2;
+ } {1 {no such column: a}}
+ do_catchsql_test 11.4 {
+ DROP VIEW v2;
+ CREATE VIEW v2(c) AS
+ WITH x AS (
+ WITH y AS (
+ WITH z AS(SELECT * FROM t1)
+ SELECT * FROM v2
+ ) SELECT *
+ ) SELECT * from t1, x;
+ SELECT * FROM v2;
+ } {1 {no tables specified}}
+ do_catchsql_test 11.5 {
+ WITH x AS (
+ WITH y AS (
+ WITH z AS(SELECT * FROM t1)
+ SELECT * FROM no_such_table
+ ) SELECT a
+ ) SELECT * from t1;
+ } {0 55}
+}
# 2021-05-23 dbsqlfuzz 6b7a144674e215f06ddfeb9042c873d9ee956ac0 */
reset_db
-do_execsql_test 12.1 {
- CREATE TABLE t1(a);
- INSERT INTO t1 VALUES(1),('hello'),(4.25),(NULL),(x'3c626c6f623e');
- CREATE VIEW v2(c) AS WITH x AS (WITH y AS (WITH z AS(SELECT * FROM t1) SELECT * FROM v2) SELECT a) SELECT * from t1;
- CREATE VIEW v3(c) AS WITH x AS (WITH y AS (WITH z AS(SELECT * FROM v2) SELECT * FROM v3) SELECT a) SELECT * from t1;
- ALTER TABLE t1 RENAME TO t1x;
- SELECT quote(c) FROM v3;
-} {1 'hello' 4.25 NULL X'3C626C6F623E'}
+ifcapable altertable {
+ do_execsql_test 12.1 {
+ CREATE TABLE t1(a);
+ INSERT INTO t1 VALUES(1),('hello'),(4.25),(NULL),(x'3c626c6f623e');
+ CREATE VIEW v2(c) AS WITH x AS (WITH y AS (WITH z AS(SELECT * FROM t1) SELECT * FROM v2) SELECT a) SELECT * from t1;
+ CREATE VIEW v3(c) AS WITH x AS (WITH y AS (WITH z AS(SELECT * FROM v2) SELECT * FROM v3) SELECT a) SELECT * from t1;
+ ALTER TABLE t1 RENAME TO t1x;
+ SELECT quote(c) FROM v3;
+ } {1 'hello' 4.25 NULL X'3C626C6F623E'}
+}
# 2021-08-11 https://sqlite.org/forum/forumpost/d496c3d29bc93736
reset_db
diff --git a/test/without_rowid1.test b/test/without_rowid1.test
index 1dd7e10dd..c71239268 100644
--- a/test/without_rowid1.test
+++ b/test/without_rowid1.test
@@ -458,15 +458,17 @@ do_execsql_test 13.10 {
# 2021-05-13 https://sqlite.org/forum/forumpost/6c8960f545
reset_db
-do_execsql_test 14.1 {
- CREATE TABLE t1(a INT PRIMARY KEY) WITHOUT ROWID;
- INSERT INTO t1(a) VALUES(10);
- ALTER TABLE t1 ADD COLUMN b INT;
- SELECT * FROM t1 WHERE a=20 OR (a=10 AND b=10);
-} {}
-do_execsql_test 14.2 {
- CREATE TABLE dual AS SELECT 'X' AS dummy;
- EXPLAIN QUERY PLAN SELECT * FROM dual, t1 WHERE a=10 AND b=10;
-} {~/b=/}
+ifcapable altertable {
+ do_execsql_test 14.1 {
+ CREATE TABLE t1(a INT PRIMARY KEY) WITHOUT ROWID;
+ INSERT INTO t1(a) VALUES(10);
+ ALTER TABLE t1 ADD COLUMN b INT;
+ SELECT * FROM t1 WHERE a=20 OR (a=10 AND b=10);
+ } {}
+ do_execsql_test 14.2 {
+ CREATE TABLE dual AS SELECT 'X' AS dummy;
+ EXPLAIN QUERY PLAN SELECT * FROM dual, t1 WHERE a=10 AND b=10;
+ } {~/b=/}
+}
finish_test
diff --git a/tool/mkkeywordhash.c b/tool/mkkeywordhash.c
index bbb0ccf29..a330ef0c8 100644
--- a/tool/mkkeywordhash.c
+++ b/tool/mkkeywordhash.c
@@ -52,7 +52,7 @@ struct Keyword {
/*
** Define masks used to determine which keywords are allowed
*/
-#ifdef SQLITE_OMIT_ALTERTABLE
+#if defined(SQLITE_OMIT_ALTERTABLE) || defined(SQLITE_OMIT_VIRTUALTABLE)
# define ALTER 0
#else
# define ALTER 0x00000001