]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When a subquery is an argument to an SQLITE_SUBTYPE function, then set
authordrh <>
Mon, 18 May 2026 19:46:38 +0000 (19:46 +0000)
committerdrh <>
Mon, 18 May 2026 19:46:38 +0000 (19:46 +0000)
the EP_SubtArg flag on the result-set expressions of that subquery.

FossilOrigin-Name: d496e9320393d3c249a30499bd5c7278c9282a77416b5bbef3da175714d9284c

manifest
manifest.uuid
src/resolve.c

index 59f3bc2ba47184757f9d7aa170bd3c19d9d7f5f1..e4f3e1c841ad8ec5a891a59a28c0bb8b1ae66c3c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\swindow-function\svariant\sof\sthe\sjson_group_object()\sfunction\sso\nthat\sit\scorrectly\shandles\sNULL\sentries.
-D 2026-05-18T17:58:30.395
+C When\sa\ssubquery\sis\san\sargument\sto\san\sSQLITE_SUBTYPE\sfunction,\sthen\sset\nthe\sEP_SubtArg\sflag\son\sthe\sresult-set\sexpressions\sof\sthat\ssubquery.
+D 2026-05-18T19:46:38.096
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -733,7 +733,7 @@ F src/pragma.c 789ef67117b74b5be0a2db6681f7f0c55e6913791b9da309aefd280de2c8a74d
 F src/prepare.c f6a6e28a281bd1d1da12f47d370a81af46159b40f73bf7fa0b276b664f9c8b7d
 F src/printf.c 50be92de0725e88c8b38978775ab46f9b42d74e21f65045c3423503173eb0566
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
-F src/resolve.c 8885c42e0b107c980b29ce255caa9b7546f516dc7aacd4bad6b95e1ceeccc7f9
+F src/resolve.c f5a780a7b604d43b78bca290cace7479bca0c7d8ef9ce855830d9498b975baec
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c 4c05cde130f26991b7411d8c6809e0630625e18078742c963a047b4b9cc01d49
 F src/shell.c.in cbb7ae029cea6d8789924d9009574081b4f3c0619ce736ed36e8c7564ef13547
@@ -2198,9 +2198,9 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 4c105d79010939bdb8cb0461c3926f80815d4f0213bc0206be76015218cb8125
-Q +ac3a958b0ab7766544bb406aa990668d2235ab26fb68c75ded3f71273d97b18c
-R cc0d8b204df572249cae1981c2082bd2
+P d29d9512a72972778c374524a3cd5d52a1377bf7fb7ff34028135146d75909b8
+Q +d75c08c8416bde3f510a135ea07cc217ba6183eacda6ba895bccbf57efe9284f
+R 100b0ccf0ca81a48f692a8bee15b4618
 U drh
-Z 25b56ebe2a290b89b29a55da76ed8b59
+Z e382613ac0259297c85031865bf6e8ca
 # Remove this line to create a well-formed Fossil manifest.
index ed3892c1054042bc7af117fc82517f6bb274fc4c..bc4bc16d1389ad61aacd28670db126a1c77f49a9 100644 (file)
@@ -1 +1 @@
-d29d9512a72972778c374524a3cd5d52a1377bf7fb7ff34028135146d75909b8
+d496e9320393d3c249a30499bd5c7278c9282a77416b5bbef3da175714d9284c
index d9c745421e0856810bd106c51ff8a3e488774ff7..439825f451455d104c23366c29aaf1675b189e46 100644 (file)
@@ -943,6 +943,26 @@ static int exprProbability(Expr *p){
   return (int)(r*134217728.0);
 }
 
+/*
+** Set the EP_SubtArg property on every expression inside of
+** pList.  If any subexpression is actually a subquery, then
+** also set the EP_SubtArg property on the first result-set
+** column of that subquery.
+*/
+static SQLITE_NOINLINE void resolveSetExprSubtypeArg(ExprList *pList){
+  int nn, ii;
+  nn = pList ? pList->nExpr : 0;
+  for(ii=0; ii<nn; ii++){
+    Expr *pExpr = pList->a[ii].pExpr;
+    ExprSetProperty(pExpr, EP_SubtArg);
+    if( pExpr->op==TK_SELECT ){
+      assert( ExprUseXSelect(pExpr) );
+      assert( pExpr->x.pSelect!=0 );
+      resolveSetExprSubtypeArg(pExpr->x.pSelect->pEList);
+    }
+  }
+}
+
 /*
 ** This routine is callback for sqlite3WalkExpr().
 **
@@ -1187,10 +1207,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
         if( (pDef->funcFlags & SQLITE_SUBTYPE) 
          || ExprHasProperty(pExpr, EP_SubtArg) 
         ){
-          int ii;
-          for(ii=0; ii<n; ii++){
-            ExprSetProperty(pList->a[ii].pExpr, EP_SubtArg);
-          }
+          resolveSetExprSubtypeArg(pList);
         }
 
         if( pDef->funcFlags & (SQLITE_FUNC_CONSTANT|SQLITE_FUNC_SLOCHNG) ){