]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with VACUUM and __hidden__ columns.
authordan <dan@noemail.net>
Thu, 19 Nov 2015 18:09:05 +0000 (18:09 +0000)
committerdan <dan@noemail.net>
Thu, 19 Nov 2015 18:09:05 +0000 (18:09 +0000)
FossilOrigin-Name: 13995756ad8b80568aa2f74387788a8cab1123ef

manifest
manifest.uuid
src/insert.c
test/hidden.test

index 6941675b3dff1294e3703765d3984bf9665c54e5..4c993920d864f3d77078c6c48bb4189170fff67b 100644 (file)
--- 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
index 17f91d54c7a594b16c43f5e5cbe2cb2493bb9441..6e20668ab2feb83ff264a6a602ba654dd056aa77 100644 (file)
@@ -1 +1 @@
-28df5dc4a9569f388af2ee0d1f016afbea132277
\ No newline at end of file
+13995756ad8b80568aa2f74387788a8cab1123ef
\ No newline at end of file
index 4b8ed2210632137cefe5f5613b5bee2bbfd860c6..52769e9c4f35aa9cc6db46f942e5317a47f30da2 100644 (file)
@@ -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
index 9914a6ed10892b93d49ad3210577ed918074d5d1..1db2cad12ed0eb47b2b42b217a8ff2cc6dccd9f7 100644 (file)
@@ -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