-C The\scallback\son\ssqlite3_trace()\sis\sinvoked\sthe\sfirst\stime\ssqlite3_step()\nis\scalled\safter\ssqlite3_prepare()\sor\ssqlite3_reset().\s\sTicket\s#900.\s(CVS\s1960)
-D 2004-09-15T13:38:11
+C The\sINSERT\scode\sgenerator\sdoes\sa\sbetter\sjob\sof\sdetecting\sif\sthe\stable\nbeing\swritten\sinto\sis\sused\sin\sthe\sSELECT\son\sthe\sright-hand\sside.\nticket\s#901.\s(CVS\s1961)
+D 2004-09-17T17:23:15
F Makefile.in 9cdfc3af2647055085969968ca2394f24c3c6166
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F src/func.c 1fbc5256639586573fd0e70814d6dcd8bc10afc1
F src/hash.c a97721a55440b7bea31ffe471bb2f6b4123cddd5
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
-F src/insert.c bfd21070c28dd94e58ae918260a6985d2b5e4477
+F src/insert.c 1f2d34d6762279e5e63dfb4a60772d30a5525b00
F src/legacy.c d58ea507bce885298a2c8c3cbb0f4bff5d47830b
F src/main.c 82a952ef3e5f7bacaa1b20060d0588f8767a6774
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
F test/in.test b92a2df9162e1cbd33c6449a29a05e6955b1741a
F test/index.test 31ed90af028d1ec9a3a8a4f0d7021717ba05dd16
F test/insert.test ebbab63db4ad69395a058514bccb3cdb0a029d48
-F test/insert2.test ea5d4f8dcbc68d8ad85eaa5f03d9812757610f90
+F test/insert2.test 614a29d3ed7dd0d8644a059c6d8ce742c63a734a
F test/interrupt.test 9142ce4448605127640eda5e283952f75f67ed91
F test/intpkey.test c8efd06db62b8b27216558ef439cc867d113cfec
F test/ioerr.test 7d087bfd1a1a53442940e000df936e0df0c5b886
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P c1f1320be5ce0b6e52491577078ba2b939882fbd
-R aecc6b7d054a0a0bc5b475a58b060454
+P 0cc2f40e6afa157ead45140c4e28a9a33c469b73
+R 4638fdb57c25dfafa54254201f37cbfd
U drh
-Z 08c3c5131edf3b7397865edadac24eb1
+Z 58d52698abacf48a5d5a56e83ebdab52
-0cc2f40e6afa157ead45140c4e28a9a33c469b73
\ No newline at end of file
+709bb22d6ddbd713029059180aaf77ac483b5bb8
\ No newline at end of file
** This file contains C code routines that are called by the parser
** to handle INSERT statements in SQLite.
**
-** $Id: insert.c,v 1.116 2004/09/06 17:24:13 drh Exp $
+** $Id: insert.c,v 1.117 2004/09/17 17:23:15 drh Exp $
*/
#include "sqliteInt.h"
if( row_triggers_exist ){
useTempTable = 1;
}else{
- int addr = sqlite3VdbeFindOp(v, 0, OP_OpenRead, pTab->tnum);
+ int addr = 0;
useTempTable = 0;
- if( addr>0 ){
- VdbeOp *pOp = sqlite3VdbeGetOp(v, addr-2);
+ while( useTempTable==0 ){
+ VdbeOp *pOp;
+ addr = sqlite3VdbeFindOp(v, addr, OP_OpenRead, pTab->tnum);
+ if( addr==0 ) break;
+ pOp = sqlite3VdbeGetOp(v, addr-2);
if( pOp->opcode==OP_Integer && pOp->p1==pTab->iDb ){
useTempTable = 1;
}
# focus of this file is testing the INSERT statement that takes is
# result from a SELECT.
#
-# $Id: insert2.test,v 1.11 2004/06/21 06:50:29 danielk1977 Exp $
+# $Id: insert2.test,v 1.12 2004/09/17 17:23:15 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
} {159}
integrity_check insert2-3.9
+# Ticket #901
+#
+do_test insert2-4.1 {
+ execsql {
+ CREATE TABLE Dependencies(depId integer primary key,
+ class integer, name str, flag str);
+ CREATE TEMPORARY TABLE DepCheck(troveId INT, depNum INT,
+ flagCount INT, isProvides BOOL, class INTEGER, name STRING,
+ flag STRING);
+ INSERT INTO DepCheck
+ VALUES(-1, 0, 1, 0, 2, 'libc.so.6', 'GLIBC_2.0');
+ INSERT INTO Dependencies
+ SELECT DISTINCT
+ NULL,
+ DepCheck.class,
+ DepCheck.name,
+ DepCheck.flag
+ FROM DepCheck LEFT OUTER JOIN Dependencies ON
+ DepCheck.class == Dependencies.class AND
+ DepCheck.name == Dependencies.name AND
+ DepCheck.flag == Dependencies.flag
+ WHERE
+ Dependencies.depId is NULL;
+ };
+} {}
+
finish_test