]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Added the last_insert_rowid() SQL function. (CVS 521)
authordrh <drh@noemail.net>
Sat, 6 Apr 2002 14:10:47 +0000 (14:10 +0000)
committerdrh <drh@noemail.net>
Sat, 6 Apr 2002 14:10:47 +0000 (14:10 +0000)
FossilOrigin-Name: 6aca3f86bc08849e9d806fdd490f98e4daf71025

manifest
manifest.uuid
src/func.c
test/func.test
www/changes.tcl
www/lang.tcl

index c27960d495ab9bba3cd81b3602ed283559ffae7c..667d9cf8c7113bab1373d1cf5a11b4ff0622815c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Make\sthe\sFROM\sclause\son\sa\sSELECT\soptional.\s\sIf\somitted,\sthe\sresult\sof\nthe\sSELECT\sis\sa\ssingle\srow\sconsisting\sof\sthe\svalues\sin\sthe\sexpression\slist.\s(CVS\s520)
-D 2002-04-06T13:57:43
+C Added\sthe\slast_insert_rowid()\sSQL\sfunction.\s(CVS\s521)
+D 2002-04-06T14:10:47
 F Makefile.in 50f1b3351df109b5774771350d8c1b8d3640130d
 F Makefile.template 89e373b2dad0321df00400fa968dc14b61a03296
 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
@@ -25,7 +25,7 @@ F src/btree.h 8abeabfe6e0b1a990b64fa457592a6482f6674f3
 F src/build.c d01b81f41481e733e27ab2fa8e1bfcc64f24257d
 F src/delete.c 577da499162291c1855f0b304b211bffcf9da945
 F src/expr.c e7a1e22bc2ebcd789f0f8c0db544cf16ad664054
-F src/func.c 87516e7dc37190c24af77593931a5d09d797520a
+F src/func.c dca9df811298cd0beb3724d40cee348e884352b2
 F src/hash.c cc259475e358baaf299b00a2c7370f2b03dda892
 F src/hash.h dca065dda89d4575f3176e75e9a3dc0f4b4fb8b9
 F src/insert.c 903ff262c90586c99eafd43934517bc3aed5f77e
@@ -64,7 +64,7 @@ F test/conflict.test c794c6c8f6e59918107dbab2d201ae454bb47db8
 F test/copy.test b3cefcb520c64d7e7dfedbab06b4d4c31fa5b99a
 F test/delete.test c904a62129fe102b314a96111a8417f10249e4d8
 F test/expr.test 846795016b5993a7411f772eebe82ab67bd7230a
-F test/func.test 4359344586067e79abf4c710c4737d67ed3cf963
+F test/func.test d34e461f0acb0cf2978a4b3a3e098460f2ea8fbc
 F test/in.test c09312672e3f0709fa02c8e2e9cd8fb4bd6269aa
 F test/index.test c8a471243bbf878974b99baf5badd59407237cf3
 F test/insert.test c36d534a4ab58c2cd452a273e51b2b0dd1ede1f9
@@ -116,7 +116,7 @@ F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
 F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
 F www/arch.tcl 72a0c80e9054cc7025a50928d28d9c75c02c2b8b
 F www/c_interface.tcl 567cda531aac9d68a61ef02e26c6b202bd856db2
-F www/changes.tcl 765719e4e445b1c6b60d1d3cfeed65570cb9d877
+F www/changes.tcl 4083f03195f0ae36411e095a2d18e5fb4a3c40d9
 F www/conflict.tcl 81dd21f9a679e60aae049e9dd8ab53d59570cda2
 F www/crosscompile.tcl 3622ebbe518927a3854a12de51344673eb2dd060
 F www/download.tcl 29aa6679ca29621d10613f60ebbbda18f4b91c49
@@ -124,14 +124,14 @@ F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
 F www/faq.tcl fb1e92e2f604546694f83a36d969492f52fb685d
 F www/formatchng.tcl 2ce21ff30663fad6618198fe747ce675df577590
 F www/index.tcl 2a9653ebeeaba3aca3401f476ba0e0e4acb40929
-F www/lang.tcl 52a54be934dcbc6ec314c12bcdd4cf899ca54904
+F www/lang.tcl 75615f1acd8a428d93546ad9edfbf8f78ee1e2df
 F www/mingw.tcl f1c7c0a7f53387dd9bb4f8c7e8571b7561510ebc
 F www/opcode.tcl bdec8ef9f100dbd87bbef8976c54b88e43fd8ccc
 F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f
 F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
 F www/tclsqlite.tcl 829b393d1ab187fd7a5e978631b3429318885c49
 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P 932274187e045ce331177b1a640ed62da4a22d94
-R 3cad40d6183414669ab6e27b1970fbd2
+P 28ce42f7872e2660faa22e66b508db9b1f046af0
+R 0b5a813afe2cf2bdabedc7aeca66c0d3
 U drh
-Z b7a9666e501a84ef150d099ac582d5f8
+Z 679d6245f83771ba2f6bf195e2401218
index 14e46342c4fdbd59e4472a474f5da7a3f0a57047..af43dda9921e41b0caa094e20fa1e754bfad6a7b 100644 (file)
@@ -1 +1 @@
-28ce42f7872e2660faa22e66b508db9b1f046af0
\ No newline at end of file
+6aca3f86bc08849e9d806fdd490f98e4daf71025
\ No newline at end of file
index 8dbfc76a754b0794c7f143d4e1ec923fc68a8a20..c75a65beea01db88f312d9b6c0c164db3a6cd3f0 100644 (file)
@@ -16,7 +16,7 @@
 ** sqliteRegisterBuildinFunctions() found at the bottom of the file.
 ** All other code has file scope.
 **
-** $Id: func.c,v 1.14 2002/03/04 02:26:16 drh Exp $
+** $Id: func.c,v 1.15 2002/04/06 14:10:47 drh Exp $
 */
 #include <ctype.h>
 #include <math.h>
@@ -196,6 +196,15 @@ static void randomFunc(sqlite_func *context, int argc, const char **argv){
   sqlite_set_result_int(context, sqliteRandomInteger());
 }
 
+/*
+** Implementation of the last_insert_rowid() SQL function.  The return
+** value is the same as the sqlite_last_insert_rowid() API function.
+*/
+static void last_insert_rowid(sqlite_func *context, int arg, char **argv){
+  sqlite *db = sqlite_user_data(context);
+  sqlite_set_result_int(context, sqlite_last_insert_rowid(db));
+}
+
 /*
 ** An instance of the following structure holds the context of a
 ** sum() or avg() aggregate computation.
@@ -408,6 +417,8 @@ void sqliteRegisterBuildinFunctions(sqlite *db){
     sqlite_create_function(db, aFuncs[i].zName,
            aFuncs[i].nArg, aFuncs[i].xFunc, 0);
   }
+  sqlite_create_function(db, "last_insert_rowid", 0, 
+           last_insert_rowid, db);
   for(i=0; i<sizeof(aAggs)/sizeof(aAggs[0]); i++){
     sqlite_create_aggregate(db, aAggs[i].zName,
            aAggs[i].nArg, aAggs[i].xStep, aAggs[i].xFinalize, 0);
index f37f185a5bdd9047919df7a5f6e7ae492d817d0a..64888211b83a8374c43502fa1b1850dc2f8605e2 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing built-in functions.
 #
-# $Id: func.test,v 1.9 2002/03/02 17:04:09 drh Exp $
+# $Id: func.test,v 1.10 2002/04/06 14:10:47 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -230,5 +230,11 @@ do_test func-6.2 {
   execsql {SELECT coalesce(upper(a),'nil') FROM t2}
 } {1 nil 345 nil 67890}
 
+# Test the last_insert_rowid() function
+#
+do_test func-7.1 {
+  execsql {SELECT last_insert_rowid()}
+} [db last_insert_rowid]
+
 
 finish_test
index f835f861a1de3b50fd2381267eecd1d3714364e1..5f3f7a689c03520905b493a8e5dda763560a5f2d 100644 (file)
@@ -25,10 +25,11 @@ proc chng {date desc} {
   puts "<DD><P><UL>$desc</UL></P></DD>"
 }
 
-chng {2002 Apr 03 (2.4.7)} {
+chng {2002 Apr 06 (2.4.7)} {
 <li>Add the ability to put TABLE.* in the column list of a
     SELECT statement.</li>
 <li>Permit SELECT statements without a FROM clause.</li>
+<li>Added the <b>last_insert_rowid()</b> SQL function.</li>
 }
 
 chng {2002 Apr 02 (2.4.6)} {
index 542b9c1ea5cf702ed716d9f6d3a0f1a556fedb4d..be8a8200873422d524540300bdca090a866f4765 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Run this Tcl script to generate the sqlite.html file.
 #
-set rcsid {$Id: lang.tcl,v 1.30 2002/04/06 13:57:44 drh Exp $}
+set rcsid {$Id: lang.tcl,v 1.31 2002/04/06 14:10:48 drh Exp $}
 
 puts {<html>
 <head>
@@ -566,6 +566,13 @@ their result across all rows of the result set.</p>
 all arguments are NULL then NULL is returned.</td>
 </tr>
 
+<tr>
+<td valign="top" align="right">last_insert_rowid()</td>
+<td valign="top">Return the ROWID of the last row insert from this
+connection to the database.  This is the same value that would be returned
+from the <b>sqlite_last_insert_rowid()</b> API function.</td>
+</tr>
+
 <tr>
 <td valign="top" align="right">length(<i>X</i>)</td>
 <td valign="top">Return the string length of <i>X</i> in characters.