From: dan Date: Thu, 19 Nov 2015 18:09:05 +0000 (+0000) Subject: Fix a problem with VACUUM and __hidden__ columns. X-Git-Tag: version-3.10.0~117 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aaea31439d595e2d64043da8c424d84b77fe9ca5;p=thirdparty%2Fsqlite.git Fix a problem with VACUUM and __hidden__ columns. FossilOrigin-Name: 13995756ad8b80568aa2f74387788a8cab1123ef --- diff --git a/manifest b/manifest index 6941675b3d..4c993920d8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C When\smanifesting\sa\sview\sas\spart\sof\san\sDELETE\sor\sUPDATE,\sbe\ssure\sto\sinclude\nthe\shidden\scolumns\sin\sthe\smanifestation. -D 2015-11-19T17:55:11.376 +C Fix\sa\sproblem\swith\sVACUUM\sand\s__hidden__\scolumns. +D 2015-11-19T18:09:05.518 F Makefile.in d828db6afa6c1fa060d01e33e4674408df1942a1 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc e928e68168df69b353300ac87c10105206653a03 @@ -300,7 +300,7 @@ F src/global.c 508e4087f7b41d688e4762dcf4d4fe28cfbc87f9 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 -F src/insert.c edb295a0b669e2dedba65cd546789770ae061277 +F src/insert.c e1d20ae8979e25519c2670233718676bedcfedc9 F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e F src/loadext.c 18586e45a215325f15096821e9c082035d4fb810 @@ -762,7 +762,7 @@ F test/fuzzer1.test d4c52aaf3ef923da293a2653cfab33d02f718a36 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98 F test/hexlit.test 1d312fa816dfd3650a3bb488093bc09a0c927f67 -F test/hidden.test df1540ad1017b49a0681ba3b01e0cde051dbeb58 +F test/hidden.test 23c1393a79e846d68fd902d72c85d5e5dcf98711 F test/hook.test 162d7cef7a2d2b04839fe14402934e6a1b79442f F test/icu.test 70df4faca133254c042d02ae342c0a141f2663f4 F test/ieee754.test 118b665a97a8df0e8f2fbdb07d113e596f4a6b53 @@ -1404,7 +1404,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 59bd0ec7d4327852ee8c0206b2c59d0a12484db8 -R 626878acc4dd3cd8e822d0d9711e48d6 -U drh -Z 65ef55c8781837190650d43297c4895a +P 28df5dc4a9569f388af2ee0d1f016afbea132277 +R 223c84fbd92f4a39a8e2bec8517a666e +U dan +Z 81a0a463975756dda288ce492d814635 diff --git a/manifest.uuid b/manifest.uuid index 17f91d54c7..6e20668ab2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -28df5dc4a9569f388af2ee0d1f016afbea132277 \ No newline at end of file +13995756ad8b80568aa2f74387788a8cab1123ef \ No newline at end of file diff --git a/src/insert.c b/src/insert.c index 4b8ed22106..52769e9c4f 100644 --- a/src/insert.c +++ b/src/insert.c @@ -1910,7 +1910,9 @@ static int xferOptimization( Column *pDestCol = &pDest->aCol[i]; Column *pSrcCol = &pSrc->aCol[i]; #ifdef SQLITE_ENABLE_HIDDEN_COLUMNS - if( (pDestCol->colFlags | pSrcCol->colFlags) & COLFLAG_HIDDEN ){ + if( (db->flags & SQLITE_Vacuum)==0 + && (pDestCol->colFlags | pSrcCol->colFlags) & COLFLAG_HIDDEN + ){ return 0; /* Neither table may have __hidden__ columns */ } #endif diff --git a/test/hidden.test b/test/hidden.test index 9914a6ed10..1db2cad12e 100644 --- a/test/hidden.test +++ b/test/hidden.test @@ -98,4 +98,56 @@ do_execsql_test 3.2.3 { SELECT __hidden__a FROM t5; } {{} {} {}} + +do_execsql_test 3.3.1 { + CREATE TABLE t5a(a, b, __hidden__c); + CREATE TABLE t6a(a, b, __hidden__c); + INSERT INTO t6a(a, b, __hidden__c) VALUES(1, 2, 3); + INSERT INTO t6a(a, b, __hidden__c) VALUES(4, 5, 6); + INSERT INTO t6a(a, b, __hidden__c) VALUES(7, 8, 9); +} + +do_execsql_test 3.3.2 { + INSERT INTO t5a SELECT * FROM t6a; + SELECT * FROM t5a; +} {1 2 4 5 7 8} + +do_execsql_test 3.3.3 { + SELECT __hidden__c FROM t5a; +} {{} {} {}} + +do_execsql_test 3.4.1 { + CREATE TABLE t5b(a, __hidden__b, c); + CREATE TABLE t6b(a, b, __hidden__c); + INSERT INTO t6b(a, b, __hidden__c) VALUES(1, 2, 3); + INSERT INTO t6b(a, b, __hidden__c) VALUES(4, 5, 6); + INSERT INTO t6b(a, b, __hidden__c) VALUES(7, 8, 9); +} + +do_execsql_test 3.4.2 { + INSERT INTO t5b SELECT * FROM t6b; + SELECT * FROM t5b; +} {1 2 4 5 7 8} + +do_execsql_test 3.4.3 { + SELECT __hidden__b FROM t5b; +} {{} {} {}} + +#------------------------------------------------------------------------- +# Test VACUUM +# +reset_db +do_execsql_test 4.1 { + CREATE TABLE t1(a, __hidden__b, c UNIQUE); + INSERT INTO t1(a, __hidden__b, c) VALUES(1, 2, 3); + INSERT INTO t1(a, __hidden__b, c) VALUES(4, 5, 6); + INSERT INTO t1(a, __hidden__b, c) VALUES(7, 8, 9); + DELETE FROM t1 WHERE __hidden__b = 5; + SELECT rowid, a, __hidden__b, c FROM t1; +} {1 1 2 3 3 7 8 9} +do_execsql_test 4.2 { + VACUUM; + SELECT rowid, a, __hidden__b, c FROM t1; +} {1 1 2 3 3 7 8 9} + finish_test