]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Correctly handle empty function argument lists on table-valued functions.
authordrh <drh@noemail.net>
Thu, 20 Aug 2015 20:13:37 +0000 (20:13 +0000)
committerdrh <drh@noemail.net>
Thu, 20 Aug 2015 20:13:37 +0000 (20:13 +0000)
FossilOrigin-Name: a7acc7878b8bb8e27a0da67b2dbb7bd51df4859b

manifest
manifest.uuid
src/build.c
src/resolve.c
test/tabfunc01.test

index 3adf504c433ccfe664336254d87707257eb61bde..dddec336ba1c6838043a1520ba3b026fe4105873 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\ssupport\sfor\stable-valued\sfunctions\sin\sthe\sFROM\sclause\simplemented\sas\nvirtual\stables.
-D 2015-08-20T19:55:58.980
+C Correctly\shandle\sempty\sfunction\sargument\slists\son\stable-valued\sfunctions.
+D 2015-08-20T20:13:37.543
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 4f663b6b4954b9b1eb0e6f08387688a93b57542d
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -281,7 +281,7 @@ F src/btmutex.c 45a968cc85afed9b5e6cf55bf1f42f8d18107f79
 F src/btree.c f48b3ef91676c06a90a8832987ecef6b94c931ee
 F src/btree.h 969adc948e89e449220ff0ff724c94bb2a52e9f1
 F src/btreeInt.h 8177c9ab90d772d6d2c6c517e05bed774b7c92c0
-F src/build.c 16051071cd855c23e47b087b49ac99c65b1d8c39
+F src/build.c 2a2fd9547c06a71d0e83484acc22f1485f0e731b
 F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
 F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f
 F src/ctime.c 5a0b735dc95604766f5dac73973658eef782ee8b
@@ -334,7 +334,7 @@ F src/pragma.h 631a91c8b0e6ca8f051a1d8a4a0da4150e04620a
 F src/prepare.c 82e5db1013846a819f198336fed72c44c974e7b1
 F src/printf.c 2bc439ff20a4aad0e0ad50a37a67b5eae7d20edc
 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
-F src/resolve.c bbb4874decae6e60eee0395a31205d3b55cd2c00
+F src/resolve.c 1103be495dddaae9378626a484d5d350fcb9d5fa
 F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
 F src/select.c c46de38c1b66355f02a839bb72eb13f277e6d19c
 F src/shell.c b1f91e60918df3a68efad1e3a11696b9a7e23d23
@@ -1031,7 +1031,7 @@ F test/superlock.test 1cde669f68d2dd37d6c9bd35eee1d95491ae3fc2
 F test/sync.test a34cd43e98b7fb84eabbf38f7ed8f7349b3f3d85
 F test/syscall.test d2fdaad713f103ac611fe7ef9b724c7b69f8149c
 F test/sysfault.test fa776e60bf46bdd3ae69f0b73e46ee3977a58ae6
-F test/tabfunc01.test 61d185dde74aa2ff70085d33bc5f9a0ce8d6a318
+F test/tabfunc01.test ae7f4e5b67edbb423e63efeee37d672bb61d5a07
 F test/table.test 33bf0d1fd07f304582695184b8e6feb017303816
 F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126
 F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930
@@ -1376,8 +1376,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P fd13dd950d99fd1996860f7a5f220fdc89180194 3efc79427ef4686142d074cfe5b2f0a33af19b2e
-R ed28318b8329f2834aba92a570f623d2
-T +closed 3efc79427ef4686142d074cfe5b2f0a33af19b2e
+P 9b718b06b156163ae34115b6c5f6d163a7ee7cc3
+R 2b816e99c82340667135ddd4e70a16fb
 U drh
-Z 557e316b28e61ca6cba28c2e6c7085e1
+Z d3ffbc216692d7d7c440600b0a1b96fc
index 194a0d685fcdfc064e426d154ff32de2d3350843..54608e6e144670784efdcde61123d422eb7888e9 100644 (file)
@@ -1 +1 @@
-9b718b06b156163ae34115b6c5f6d163a7ee7cc3
\ No newline at end of file
+a7acc7878b8bb8e27a0da67b2dbb7bd51df4859b
\ No newline at end of file
index 96dc03a8251c418ca09060b43d9af7321d7bf93c..6a5b50b0dba8bd8f90f5fadc33f9a4fed0df3cb8 100644 (file)
@@ -3802,7 +3802,7 @@ void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pIndexedBy){
 ** table-valued-function.
 */
 void sqlite3SrcListFuncArgs(Parse *pParse, SrcList *p, ExprList *pList){
-  if( p && ALWAYS(p->nSrc>0) ){
+  if( p && ALWAYS(p->nSrc>0) && pList ){
     struct SrcList_item *pItem = &p->a[p->nSrc-1];
     assert( pItem->fg.notIndexed==0 );
     assert( pItem->fg.isIndexedBy==0 );
index 72d5f319c1991c32b50166c3b45eeb47c002632a..9799a136b9f3d56ec40e9d7917fae44dd2546586 100644 (file)
@@ -1451,9 +1451,11 @@ int sqlite3ResolveExprListNames(
   NameContext *pNC,       /* Namespace to resolve expressions in. */
   ExprList *pList         /* The expression list to be analyzed. */
 ){
-  int i;
-  for(i=0; i<pList->nExpr; i++){
-    if( sqlite3ResolveExprNames(pNC, pList->a[i].pExpr) ) return WRC_Abort;
+  if( pList ){
+    int i;
+    for(i=0; i<pList->nExpr; i++){
+      if( sqlite3ResolveExprNames(pNC, pList->a[i].pExpr) ) return WRC_Abort;
+    }
   }
   return WRC_Continue;
 }
index 8897893197b56b9f711d563ea270faf82e523c2b..b3711baea02cbcb2fb29a19ce39dafbd7c3212ca 100644 (file)
@@ -61,4 +61,9 @@ do_execsql_test tabfunc01-2.1 {
   SELECT *, '|' FROM t1, generate_series(1,x) ORDER BY 1, 2
 } {2 1 | 2 2 | 3 1 | 3 2 | 3 3 |}
 
+do_execsql_test tabfunc01-2.2 {
+  SELECT * FROM generate_series() LIMIT 5;
+} {0 1 2 3 4}
+
+
 finish_test