]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix for ticket #75: Autoincrement INTEGER PRIMARY KEY fields on an INSERT
authordrh <drh@noemail.net>
Wed, 19 Jun 2002 20:32:43 +0000 (20:32 +0000)
committerdrh <drh@noemail.net>
Wed, 19 Jun 2002 20:32:43 +0000 (20:32 +0000)
even if the data is coming from a SELECT statement. (CVS 630)

FossilOrigin-Name: d599f75b659809a6e5eee09b0e9e6e90bde5af1e

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

index ab9548f448b968c27202d1e140483a1501e8f27c..1afeb5d6c4218ccf4395c0c4db2a7db1fd2888b7 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Version\s2.5.1\s(CVS\s629)
-D 2002-06-19T14:27:23
+C Fix\sfor\sticket\s#75:\sAutoincrement\sINTEGER\sPRIMARY\sKEY\sfields\son\san\sINSERT\neven\sif\sthe\sdata\sis\scoming\sfrom\sa\sSELECT\sstatement.\s(CVS\s630)
+D 2002-06-19T20:32:44
 F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
 F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495
 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
@@ -27,7 +27,7 @@ F src/expr.c ec0689af4e355356df47dc1514ff17523d2f9c71
 F src/func.c b8d0fd3011f53ea0e46b6bab857612eb36b5d1ea
 F src/hash.c 6a6236b89c8c060c65dabd300a1c8ce7c10edb72
 F src/hash.h cd0433998bc1a3759d244e1637fe5a3c13b53bf8
-F src/insert.c 3a90bb98cd246f88cc26c44f24d5b47760bc5cba
+F src/insert.c 4bb40ed9dbaba4516fc2abbcff3f08d5687b073c
 F src/main.c 07f56387147f00e69eea7cea369071452bc4706f
 F src/md5.c 0ae1f3e2cac92d06fc6246d1b4b8f61a2fe66d3b
 F src/os.c 9cc40c5384baba4a85e160e67807645ca98ba3cc
@@ -69,7 +69,7 @@ F test/in.test c09312672e3f0709fa02c8e2e9cd8fb4bd6269aa
 F test/index.test c8a471243bbf878974b99baf5badd59407237cf3
 F test/insert.test 58d44c19b3557f67f4aeb5110ed9ef02038c3684
 F test/insert2.test eb8481878a7f52ccb4e3346f87550f5afdd77f76
-F test/intpkey.test 31b5f28b2c44273e6695cf36ab2e4133aee7753c
+F test/intpkey.test 69a6a9b41e541f27a2ffcd20264fb35adc3c2680
 F test/ioerr.test 57d9bffaca18b34f9e976f786eadc2591d6efc6a
 F test/join.test ea6a4097e4fcebbb16eac7ec819569e759336a74
 F test/limit.test 96b33e108e134b5cc674a660064229d15fa278b9
@@ -137,7 +137,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f
 F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P f09e19b43ef61073713cf32282c90ea666229eba
-R e3b8c707333c1ebbf7616bf0a643f3ed
+P 5e8a3131aba25e22f3e25b9b1c051019381f11d1
+R 524db4044083fd865802aa3a7659d610
 U drh
-Z 8383f6bd0a1652a6736946631d343146
+Z 7f1cd27c410e1c7fc4e1a09a08e84965
index f6292414ebcf7381f7f271f86690c129fa62d0b9..6692c7a677dc8c353ad3726b6d4dd31a07f00bc0 100644 (file)
@@ -1 +1 @@
-5e8a3131aba25e22f3e25b9b1c051019381f11d1
\ No newline at end of file
+d599f75b659809a6e5eee09b0e9e6e90bde5af1e
\ No newline at end of file
index 73ed0563a8ffd0ce4287433f7fc51bdb35f787db..ee5b31f92d9b2b4be0c6a47991ded12516711225 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains C code routines that are called by the parser
 ** to handle INSERT statements in SQLite.
 **
-** $Id: insert.c,v 1.61 2002/06/11 02:25:42 danielk1977 Exp $
+** $Id: insert.c,v 1.62 2002/06/19 20:32:44 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -292,14 +292,13 @@ void sqliteInsert(
         sqliteVdbeAddOp(v, OP_Column, srcTab, keyColumn);
       }else{
         sqliteExprCode(pParse, pList->a[keyColumn].pExpr);
-
-        /* If the PRIMARY KEY expression is NULL, then use OP_NewRecno
-        ** to generate a unique primary key value.
-        */
-        sqliteVdbeAddOp(v, OP_NotNull, -1, sqliteVdbeCurrentAddr(v)+3);
-        sqliteVdbeAddOp(v, OP_Pop, 1, 0);
-        sqliteVdbeAddOp(v, OP_NewRecno, base, 0);
       }
+      /* If the PRIMARY KEY expression is NULL, then use OP_NewRecno
+      ** to generate a unique primary key value.
+      */
+      sqliteVdbeAddOp(v, OP_NotNull, -1, sqliteVdbeCurrentAddr(v)+3);
+      sqliteVdbeAddOp(v, OP_Pop, 1, 0);
+      sqliteVdbeAddOp(v, OP_NewRecno, base, 0);
       sqliteVdbeAddOp(v, OP_MustBeInt, 0, 0);
     }else{
       sqliteVdbeAddOp(v, OP_NewRecno, base, 0);
index cc76ece714f82fbb4b31459af7a5bd85f635ccf5..033cc2a60c35dc3b4acd7c6fae3618ec51b054b1 100644 (file)
@@ -13,7 +13,7 @@
 # This file implements tests for the special processing associated
 # with INTEGER PRIMARY KEY columns.
 #
-# $Id: intpkey.test,v 1.9 2002/03/31 18:29:03 drh Exp $
+# $Id: intpkey.test,v 1.10 2002/06/19 20:32:45 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -455,5 +455,11 @@ do_test intpkey-10.2 {
     SELECT * from t2 WHERE x=2;
   }
 } {2 2 3}
+do_test intpkey-10.3 {
+  execsql {
+    INSERT INTO t2 SELECT NULL, z, y FROM t2;
+    SELECT * FROM t2;
+  }
+} {1 1 2 2 2 3 3 2 1 4 3 2}
 
 finish_test