-C Change\slemon\sto\suse\s<stdarg.h>\sinstead\sof\s<varargs.h>\sbecause\sGCC\sno\slonger\nsupports\svarargs.h.\s\sTickets\s#288\sand\s#280.\s\sIronically,\slemon\soriginally\nused\svarargs.h\sbecause\sstdarg.h\swas\snot\ssupported\sby\sthe\scompiler\sI\swas\nusing\sin\s1989\s(which\swas\sgcc\sif\sI\srecall\scorrectly.)\s(CVS\s905)
-D 2003-04-15T01:49:49
+C Do\snot\srecord\sthe\sinserted\srowid\son\swhen\sdoing\san\sINSERT\swithin\sa\strigger.\nTicket\s#290.\s(CVS\s906)
+D 2003-04-15T14:01:43
F Makefile.in df3a4db41a7450468b5fe934d9dd8f723b631249
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F src/update.c b368369f1fbe6d7f56a53e5ffad3b75dae9e3e1a
F src/util.c 8953c612a036e30f24c1c1f5a1498176173daa37
F src/vacuum.c ac65e9578506a0cdf70ece2668e5b22f4895477c
-F src/vdbe.c cf9ef07b1fce5a340d8926a493f9313208f1773f
+F src/vdbe.c 0fa25d177b02523dbdcb48395053ed5cc21829ee
F src/vdbe.h 985c24f312d10f9ef8f9a8b8ea62fcdf68e82f21
F src/where.c e5733f7d5e9cc4ed3590dc3401f779e7b7bb8127
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
F test/printf.test a29b8afa24edb4411adfe473b12ac32c84098fce
F test/quick.test c527bdb899b12a8cd8ceecce45f72922099f4095
F test/quote.test 08f23385c685d3dc7914ec760d492cacea7f6e3d
-F test/rowid.test 4c55943300cddf73dd0f88d40a268cab14c83274
+F test/rowid.test 82bd07c959eb56ce14feb85cac591750af714ddf
F test/select1.test 0d708cec567104653ec9aa49fecf3444a2e7d150
F test/select2.test aceea74fd895b9d007512f72499db589735bd8e4
F test/select3.test 445a1a3dde4e2fd32541b311f55da5e2f8079d76
F www/sqlite.tcl ae3dcfb077e53833b59d4fcc94d8a12c50a44098
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P e76787f877c456abdc8bc88bfefc50eaeed68744
-R 2082ff273f79da67ec128510ffa08236
+P 7902e4778ec86e25ad949ae7a6d55b63ac0e85f3
+R dd4a1ed15ab6eb4c2551ae58dad32820
U drh
-Z 21cc95134a25d7c9da7271d70e2e3747
+Z 207b6a42d8bab1444378577acd311c3c
-7902e4778ec86e25ad949ae7a6d55b63ac0e85f3
\ No newline at end of file
+96a717661a3b7108fe0cacb588d81fd8e91eb640
\ No newline at end of file
** in this file for details. If in doubt, do not deviate from existing
** commenting and indentation practices when changing or adding code.
**
-** $Id: vdbe.c,v 1.213 2003/04/15 01:19:49 drh Exp $
+** $Id: vdbe.c,v 1.214 2003/04/15 14:01:43 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
** be an integer. The stack is popped twice by this instruction.
**
** If P2==1 then the row change count is incremented. If P2==0 the
-** row change count is unmodified.
+** row change count is unmodified. The rowid is stored for subsequent
+** return by the sqlite_last_insert_rowid() function if P2 is 1.
*/
/* Opcode: PutStrKey P1 * *
**
nKey = sizeof(int);
iKey = intToKey(aStack[nos].i);
zKey = (char*)&iKey;
- db->lastRowid = aStack[nos].i;
- if( pOp->p2 ) db->nChange++;
+ if( pOp->p2 ){
+ db->nChange++;
+ db->lastRowid = aStack[nos].i;
+ }
if( pC->nextRowidValid && aStack[nos].i>=pC->nextRowid ){
pC->nextRowidValid = 0;
}
# focus of this file is testing the magic ROWID column that is
# found on all tables.
#
-# $Id: rowid.test,v 1.8 2002/02/19 22:42:06 drh Exp $
+# $Id: rowid.test,v 1.9 2003/04/15 14:01:44 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
}
} {2 66 3 111}
+# Make sure AFTER triggers that do INSERTs do not change the last_insert_rowid.
+# Ticket #290
+#
+do_test rowid-8.1 {
+ execsql {
+ CREATE TABLE t3(a integer primary key);
+ CREATE TABLE t4(x);
+ INSERT INTO t4 VALUES(1);
+ CREATE TRIGGER r3 AFTER INSERT on t3 FOR EACH ROW BEGIN
+ INSERT INTO t4 VALUES(NEW.a+10);
+ END;
+ SELECT * FROM t3;
+ }
+} {}
+do_test rowid-8.2 {
+ execsql {
+ SELECT rowid, * FROM t4;
+ }
+} {1 1}
+do_test rowid-8.3 {
+ execsql {
+ INSERT INTO t3 VALUES(123);
+ SELECT last_insert_rowid();
+ }
+} {123}
+do_test rowid-8.4 {
+ execsql {
+ SELECT * FROM t3;
+ }
+} {123}
+do_test rowid-8.5 {
+ execsql {
+ SELECT rowid, * FROM t4;
+ }
+} {1 1 2 133}
+do_test rowid-8.6 {
+ execsql {
+ INSERT INTO t3 VALUES(NULL);
+ SELECT last_insert_rowid();
+ }
+} {124}
+do_test rowid-8.7 {
+ execsql {
+ SELECT * FROM t3;
+ }
+} {123 124}
+do_test rowid-8.8 {
+ execsql {
+ SELECT rowid, * FROM t4;
+ }
+} {1 1 2 133 3 {}}
+
+
finish_test