diff --git a/manifest b/manifest index 512b6fb64f..decd367029 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C Change\san\s#if\sinto\san\s#ifdef. -D 2010-03-30T11:57:01 +C Do\snot\scrash\swhen\scompiling\san\s"INSERT\sINTO\stbl\sDEFAULT\sVALUES"\swhen\stbl\shas\seither\sBEFORE\sor\sINSTEAD\sOF\striggers\sattached\sto\sit.\sTicket\s[f3162063fd]. +D 2010-03-30T12:40:33 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -129,7 +126,7 @@ F src/global.c 5a9c1e3c93213ca574786ac1caa976ce8f709105 F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 -F src/insert.c 76d6b44a9f9050134fd81205f4b792cbdac7c925 +F src/insert.c 3a9567687f6b84ab9a41448e3d2ce20424f4743c F src/journal.c b0ea6b70b532961118ab70301c00a33089f9315c F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e @@ -722,7 +719,7 @@ F test/trigger8.test 30cb0530bd7c4728055420e3f739aa00412eafa4 F test/trigger9.test 5b0789f1c5c4600961f8e68511b825b87be53e31 F test/triggerA.test 0718ad2d9bfef27c7af00e636df79bee6b988da7 F test/triggerB.test 56780c031b454abac2340dbb3b71ac5c56c3d7fe -F test/triggerC.test 4083c64d80854d271bad211268a08985f3d61cbd +F test/triggerC.test cac41fe31adc1abb9fa08532762fc2b4f662ab03 F test/triggerD.test c6add3817351451e419f6ff9e9a259b02b6e2de7 F test/types.test 9a825ec8eea4e965d7113b74c76a78bb5240f2ac F test/types2.test 3555aacf8ed8dc883356e59efc314707e6247a84 @@ -797,14 +794,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 0092b36c7bbd04bf3826de7805e8a14739390f31 -R e6830afd696f92886f4e15da36e8a21e -U drh -Z 40be774e9b474c9229e7a0a284180d51 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFLsecQoxKgR168RlERArHaAJ9qx0xDw9sULVJZASqsXe/+aloLGQCeOPwi -veew0hRT3qVYZBfj+VUdiAo= -=Cote ------END PGP SIGNATURE----- +P 371bab5d6534860ce908e52129c64a49946be33a +R 3994aaba17557add292404e3cf90a6c0 +U dan +Z ebc48098411fcbe12e5a9df180be6bde diff --git a/manifest.uuid b/manifest.uuid index a4bbe9c9ef..1f5cffa211 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -371bab5d6534860ce908e52129c64a49946be33a \ No newline at end of file +ca359a3e8048bd11605c41c4b48134c0343e543b \ No newline at end of file diff --git a/src/insert.c b/src/insert.c index 5379762069..05964f849f 100644 --- a/src/insert.c +++ b/src/insert.c @@ -846,7 +846,7 @@ void sqlite3Insert( if( pColumn->a[j].idx==i ) break; } } - if( pColumn && j>=pColumn->nId ){ + if( (!useTempTable && !pList) || (pColumn && j>=pColumn->nId) ){ sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, regCols+i+1); }else if( useTempTable ){ sqlite3VdbeAddOp3(v, OP_Column, srcTab, j, regCols+i+1); diff --git a/test/triggerC.test b/test/triggerC.test index c1967bedb6..879594c2c8 100644 --- a/test/triggerC.test +++ b/test/triggerC.test @@ -855,5 +855,67 @@ do_test triggerC-10.3 { } } {5 2 3 35 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 22 34 35 36 37 38 39 40} +#------------------------------------------------------------------------- +# Test that bug [371bab5d65] has been fixed. BEFORE INSERT and INSTEAD OF +# INSERT triggers with the DEFAULT VALUES INSERT syntax. +# +do_test triggerC-11.0 { + catchsql { DROP TABLE log } + execsql { CREATE TABLE log(a, b) } +} {} + +foreach {testno tbl defaults} { + 1 "CREATE TABLE t1(a, b)" {{} {}} + 2 "CREATE TABLE t1(a DEFAULT 1, b DEFAULT 'abc')" {1 abc} + 3 "CREATE TABLE t1(a, b DEFAULT 4.5)" {{} 4.5} +} { + do_test triggerC-11.$testno.1 { + catchsql { DROP TABLE t1 } + execsql { DELETE FROM log } + execsql $tbl + execsql { + CREATE TRIGGER tt1 BEFORE INSERT ON t1 BEGIN + INSERT INTO log VALUES(new.a, new.b); + END; + INSERT INTO t1 DEFAULT VALUES; + SELECT * FROM log; + } + } $defaults + + do_test triggerC-11.$testno.2 { + execsql { DELETE FROM log } + execsql { + CREATE TRIGGER tt2 AFTER INSERT ON t1 BEGIN + INSERT INTO log VALUES(new.a, new.b); + END; + INSERT INTO t1 DEFAULT VALUES; + SELECT * FROM log; + } + } [concat $defaults $defaults] + + do_test triggerC-11.$testno.3 { + execsql { DROP TRIGGER tt1 } + execsql { DELETE FROM log } + execsql { + INSERT INTO t1 DEFAULT VALUES; + SELECT * FROM log; + } + } $defaults +} +do_test triggerC-11.4 { + catchsql { DROP TABLE t2 } + execsql { + DELETE FROM log; + CREATE TABLE t2(a, b); + CREATE VIEW v2 AS SELECT * FROM t2; + CREATE TRIGGER tv2 INSTEAD OF INSERT ON v2 BEGIN + INSERT INTO log VALUES(new.a, new.b); + END; + INSERT INTO v2 DEFAULT VALUES; + SELECT a, b, a IS NULL, b IS NULL FROM log; + } +} {{} {} 1 1} + + finish_test