1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Merge fixes from trunk. Fix the tclsqlite.test script.

FossilOrigin-Name: d2b1fa55e8809ffc25a25f256349b8d08beadab5
This commit is contained in:
drh
2016-07-15 02:55:51 +00:00
7 changed files with 57 additions and 28 deletions

View File

@ -48,6 +48,8 @@ SQLITE_EXTENSION_INIT1
#include <ctype.h> #include <ctype.h>
#include <stdio.h> #include <stdio.h>
#ifndef SQLITE_OMIT_VIRTUALTABLE
/* /*
** A macro to hint to the compiler that a function should not be ** A macro to hint to the compiler that a function should not be
** inlined. ** inlined.
@ -834,6 +836,7 @@ static sqlite3_module CsvModuleFauxWrite = {
}; };
#endif /* SQLITE_TEST */ #endif /* SQLITE_TEST */
#endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
#ifdef _WIN32 #ifdef _WIN32
@ -849,6 +852,7 @@ int sqlite3_csv_init(
char **pzErrMsg, char **pzErrMsg,
const sqlite3_api_routines *pApi const sqlite3_api_routines *pApi
){ ){
#ifndef SQLITE_OMIT_VIRTUALTABLE
int rc; int rc;
SQLITE_EXTENSION_INIT2(pApi); SQLITE_EXTENSION_INIT2(pApi);
rc = sqlite3_create_module(db, "csv", &CsvModule, 0); rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
@ -858,4 +862,7 @@ int sqlite3_csv_init(
} }
#endif #endif
return rc; return rc;
#else
return SQLITE_OK;
#endif
} }

View File

@ -1,5 +1,5 @@
C Modify\sthe\sTcl\stest\scommand\s'sqlite3_bind_blob'\sto\smake\suse\sof\sthe\sTcl_GetByteArrayFromObj()\sAPI. C Merge\sfixes\sfrom\strunk.\s\sFix\sthe\stclsqlite.test\sscript.
D 2016-07-15T01:49:25.642 D 2016-07-15T02:55:51.860
F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
@ -207,7 +207,7 @@ F ext/misc/amatch.c 211108e201105e4bb0c076527b8cfd34330fc234
F ext/misc/carray.c 214c9e9d909ceaae3b2f5f917cc2204deca85cc6 F ext/misc/carray.c 214c9e9d909ceaae3b2f5f917cc2204deca85cc6
F ext/misc/closure.c 0d2a038df8fbae7f19de42e7c7d71f2e4dc88704 F ext/misc/closure.c 0d2a038df8fbae7f19de42e7c7d71f2e4dc88704
F ext/misc/compress.c 122faa92d25033d6c3f07c39231de074ab3d2e83 F ext/misc/compress.c 122faa92d25033d6c3f07c39231de074ab3d2e83
F ext/misc/csv.c b92692b057707f5b7bb91feaedde790b2e38304e F ext/misc/csv.c f51b0566ea15e24cce871037e30a4db99ea6cf77
F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2 F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2
F ext/misc/fileio.c d4171c815d6543a9edef8308aab2951413cd8d0f F ext/misc/fileio.c d4171c815d6543a9edef8308aab2951413cd8d0f
F ext/misc/fuzzer.c 7c64b8197bb77b7d64eff7cac7848870235d4c25 F ext/misc/fuzzer.c 7c64b8197bb77b7d64eff7cac7848870235d4c25
@ -320,7 +320,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
F src/alter.c 1bb0709b3048e24217b80ec6bd78a3e99a47c01b F src/alter.c cc28ab933ae615b22add0d609794ffb6596b42ea
F src/analyze.c 37fedc80ac966ce1745811746e68e4d8fa64c7fe F src/analyze.c 37fedc80ac966ce1745811746e68e4d8fa64c7fe
F src/attach.c 771153bd1f4ab0b97a44a13dde2c7e5e1efeba22 F src/attach.c 771153bd1f4ab0b97a44a13dde2c7e5e1efeba22
F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240 F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240
@ -475,8 +475,8 @@ F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783 F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783
F test/alter.test 2facdddf08d0d48e75dc6cc312cd2b030f4835dd F test/alter.test 2facdddf08d0d48e75dc6cc312cd2b030f4835dd
F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060 F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060
F test/alter3.test b3568d11c38c4599c92f24242eda34144d78dc10 F test/alter3.test 4d79934d812eaeacc6f22781a080f8cfe012fdc3
F test/alter4.test c461150723ac957f3b2214aa0b11552cd72023ec F test/alter4.test 0c33c542247ba5aee4f4a0133ac44bcf8f97e5e0
F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
F test/analyze.test 3eb35a4af972f98422e5dc0586501b17d103d321 F test/analyze.test 3eb35a4af972f98422e5dc0586501b17d103d321
@ -1120,7 +1120,7 @@ F test/tabfunc01.test 50a9fb379f9747fd0d40ea6d8fa3a101361bb537
F test/table.test b708f3e5fa2542fa51dfab21fc07b36ea445cb2f F test/table.test b708f3e5fa2542fa51dfab21fc07b36ea445cb2f
F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126 F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126
F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930 F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930
F test/tclsqlite.test cf0d0a3fd03d64892cec2d48aae9fb2f148680a5 F test/tclsqlite.test 1d73b9203b1ca8798d7d7310742b8d3febc0d56e
F test/tempdb.test bd92eba8f20e16a9136e434e20b280794de3cdb6 F test/tempdb.test bd92eba8f20e16a9136e434e20b280794de3cdb6
F test/tempdb2.test 4fc92055f2a3f7626c0f2eabbb637dc021b311d5 F test/tempdb2.test 4fc92055f2a3f7626c0f2eabbb637dc021b311d5
F test/tempfault.test 0c0d349c9a99bf5f374655742577f8712c647900 F test/tempfault.test 0c0d349c9a99bf5f374655742577f8712c647900
@ -1506,7 +1506,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 97ccf15fb7e5103c8317d06a1985ba9c88544a60 P e03c81895e52096ab055d8231841e9070602ca84 ec7180892ac737f0731cf61f2d095a5c1d18ad93
R 23f12c56d57425cd5e6978d10e653771 R 8bd18a5122e19b3b0675d3bc2674a51e
U mistachkin U drh
Z ce44a3acd6ed0a8254df88a4b23a0c52 Z 68d53222f802b7ae8fc8a7f808e2ed8d

View File

@ -1 +1 @@
e03c81895e52096ab055d8231841e9070602ca84 d2b1fa55e8809ffc25a25f256349b8d08beadab5

View File

@ -601,6 +601,7 @@ void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
Expr *pDflt; /* Default value for the new column */ Expr *pDflt; /* Default value for the new column */
sqlite3 *db; /* The database connection; */ sqlite3 *db; /* The database connection; */
Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */ Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */
int r1; /* Temporary registers */
db = pParse->db; db = pParse->db;
if( pParse->nErr || db->mallocFailed ) return; if( pParse->nErr || db->mallocFailed ) return;
@ -695,16 +696,18 @@ void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
db->flags = savedDbFlags; db->flags = savedDbFlags;
} }
/* If the default value of the new column is NULL, then the file /* Make sure the schema version is at least 3. But do not upgrade
** format to 2. If the default value of the new column is not NULL, ** from less than 3 to 4, as that will corrupt any preexisting DESC
** the file format be 3. Back when this feature was first added ** index.
** in 2006, we went to the trouble to upgrade the file format to the
** minimum support values. But 10-years on, we can assume that all
** extent versions of SQLite support file-format 4, so we always and
** unconditionally upgrade to 4.
*/ */
sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, r1 = sqlite3GetTempReg(pParse);
SQLITE_MAX_FILE_FORMAT); sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, r1, BTREE_FILE_FORMAT);
sqlite3VdbeUsesBtree(v, iDb);
sqlite3VdbeAddOp2(v, OP_AddImm, r1, -2);
sqlite3VdbeAddOp2(v, OP_IfPos, r1, sqlite3VdbeCurrentAddr(v)+2);
VdbeCoverage(v);
sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, 3);
sqlite3ReleaseTempReg(pParse, r1);
/* Reload the schema of the modified table. */ /* Reload the schema of the modified table. */
reloadTableSchema(pParse, pTab, pTab->zName); reloadTableSchema(pParse, pTab, pTab->zName);

View File

@ -184,7 +184,7 @@ do_test alter3-3.2 {
if {!$has_codec} { if {!$has_codec} {
do_test alter3-3.3 { do_test alter3-3.3 {
get_file_format get_file_format
} {4} } {3}
} }
ifcapable schema_version { ifcapable schema_version {
do_test alter3-3.4 { do_test alter3-3.4 {
@ -220,7 +220,7 @@ do_test alter3-4.2 {
if {!$has_codec} { if {!$has_codec} {
do_test alter3-4.3 { do_test alter3-4.3 {
get_file_format get_file_format
} {4} } {3}
} }
ifcapable schema_version { ifcapable schema_version {
do_test alter3-4.4 { do_test alter3-4.4 {
@ -270,7 +270,7 @@ ifcapable attach {
if {!$has_codec} { if {!$has_codec} {
do_test alter3-5.5 { do_test alter3-5.5 {
list [get_file_format test2.db] [get_file_format] list [get_file_format test2.db] [get_file_format]
} {4 4} } {3 3}
} }
do_test alter3-5.6 { do_test alter3-5.6 {
execsql { execsql {
@ -347,19 +347,19 @@ if {!$has_codec} {
ALTER TABLE abc ADD d DEFAULT NULL; ALTER TABLE abc ADD d DEFAULT NULL;
} }
get_file_format get_file_format
} {4} } {3}
do_test alter3-7.3 { do_test alter3-7.3 {
execsql { execsql {
ALTER TABLE abc ADD e DEFAULT 10; ALTER TABLE abc ADD e DEFAULT 10;
} }
get_file_format get_file_format
} {4} } {3}
do_test alter3-7.4 { do_test alter3-7.4 {
execsql { execsql {
ALTER TABLE abc ADD f DEFAULT NULL; ALTER TABLE abc ADD f DEFAULT NULL;
} }
get_file_format get_file_format
} {4} } {3}
do_test alter3-7.5 { do_test alter3-7.5 {
execsql { execsql {
VACUUM; VACUUM;

View File

@ -355,4 +355,23 @@ do_execsql_test alter4-9.3 {
SELECT typeof(c), c FROM t5; SELECT typeof(c), c FROM t5;
} {real 9.22337203685478e+18} } {real 9.22337203685478e+18}
# Confirm that doing an ALTER TABLE on a legacy format database
# does not corrupt DESC indexes.
#
# Ticket https://www.sqlite.org/src/tktview/f68bf68513a1c
#
do_test alter4-10.1 {
db close
sqlite3 db :memory:
db eval {
PRAGMA legacy_file_format=on;
CREATE TABLE t1(a,b,c);
CREATE INDEX t1a ON t1(a DESC);
INSERT INTO t1 VALUES(1,2,3);
INSERT INTO t1 VALUES(2,3,4);
ALTER TABLE t1 ADD COLUMN d;
PRAGMA integrity_check;
}
} {ok}
finish_test finish_test

View File

@ -34,7 +34,7 @@ do_test tcl-1.1 {
do_test tcl-1.2 { do_test tcl-1.2 {
set v [catch {db bogus} msg] set v [catch {db bogus} msg]
lappend v $msg lappend v $msg
} {1 {bad option "bogus": must be authorizer, backup, busy, cache, changes, close, collate, collation_needed, commit_hook, complete, copy, enable_load_extension, errorcode, eval, exists, function, incrblob, interrupt, last_insert_rowid, nullvalue, onecolumn, preupdate, profile, progress, rekey, restore, rollback_hook, status, timeout, total_changes, trace, transaction, unlock_notify, update_hook, version, or wal_hook}} } {1 {bad option "bogus": must be authorizer, backup, busy, cache, changes, close, collate, collation_needed, commit_hook, complete, copy, enable_load_extension, errorcode, eval, exists, function, incrblob, interrupt, last_insert_rowid, nullvalue, onecolumn, preupdate, profile, progress, rekey, restore, rollback_hook, status, timeout, total_changes, trace, trace_v2, transaction, unlock_notify, update_hook, version, or wal_hook}}
do_test tcl-1.2.1 { do_test tcl-1.2.1 {
set v [catch {db cache bogus} msg] set v [catch {db cache bogus} msg]
lappend v $msg lappend v $msg