-C Include\spercentile()\sand\smerge()\sin\sthe\sfuzzcheck\stest\sutility.
-D 2024-08-31T19:24:17.689
+C Demonstration\sof\show\sordered-set\saggregates\smight\sbe\sparsed\sand\sintegrated\ninto\sthe\sexisting\sparse\stree,\sshould\swe\sdecide\sto\ssupport\sthem.
+D 2024-08-31T20:09:37.704
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
F src/pager.c b08600ebf0db90b6d1e9b8b6577c6fa3877cbe1a100bd0b2899e4c6e9adad4b3
F src/pager.h 4b1140d691860de0be1347474c51fee07d5420bd7f802d38cbab8ea4ab9f538a
-F src/parse.y 5972b7d00af4c8d96fdad781af1ea1d5d51fc3b907ad61bda60e49503274e5ed
+F src/parse.y 32969201e800aa9d8238a532f66ea1c6863c16a480f540cafec7e6c352c73e52
F src/pcache.c 588cc3c5ccaaadde689ed35ce5c5c891a1f7b1f4d1f56f6cf0143b74d8ee6484
F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
F src/pcache1.c 49516ad7718a3626f28f710fa7448ef1fce3c07fd169acbb4817341950264319
F src/sqlite.h.in f07bff4225a1244efd604a0ffef81ed69f29d3dbaed7e22f906f26229ba3ca9e
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
-F src/sqliteInt.h 889cd632f4386bbd8619b166abb7d25f1c8ce6514e90cb7f22f63bd530fc6107
+F src/sqliteInt.h 8eac0c901803fc1fca0faa0ad28492c3b5f38c436d2f594c03308d9b955dbecb
F src/sqliteLimit.h 6878ab64bdeb8c24a1d762d45635e34b96da21132179023338c93f820eee6728
F src/status.c cb11f8589a6912af2da3bb1ec509a94dd8ef27df4d4c1a97e0bcf2309ece972b
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
F tool/mkautoconfamal.sh cbdcf993fa83dccbef7fb77b39cdeb31ef9f77d9d88c9e343b58d35ca3898a6a
F tool/mkccode.tcl 86463e68ce9c15d3041610fedd285ce32a5cf7a58fc88b3202b8b76837650dbe x
F tool/mkctimec.tcl 48ca8eefa9e615cb9057ce6485b9c9ae5801381f24690d7d60b3b2dc8e6b7457 x
-F tool/mkkeywordhash.c b9faa0ae7e14e4dbbcd951cddd786bf46b8a65bb07b129ba8c0cfade723aaffd
+F tool/mkkeywordhash.c d2d7369faacb45e7ec089ccbc2fd48e2fcab3d62d3533648c4017d5df1abd37d
F tool/mkmsvcmin.tcl d76c45efda1cce2d4005bcea7b8a22bb752e3256009f331120fb4fecb14ebb7a
F tool/mkopcodec.tcl 33d20791e191df43209b77d37f0ff0904620b28465cca6990cf8d60da61a07ef
F tool/mkopcodeh.tcl 2b4e6967a670ef21bf53a164964c35c6163277d002a4c6f56fa231d68c88d023
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 3fe0a852978f3f1218e37a58f0d3b54016d4116a3301aa32efa7c4c12c767755
-R fe4924b06f0c2e628905b36a4804a9df
+P d1d0942a947803d45a1fd9068f3518cf412178b6b9bafcb82db44c52d5820c11
+R d8caee9c6c8e089bfb48a8d01fa2ad93
+T *branch * ordered-set-agg
+T *sym-ordered-set-agg *
+T -sym-trunk *
U drh
-Z f104fe8dff33191117d210e31173232d
+Z b43c798c432268071337348d4788bafe
# Remove this line to create a well-formed Fossil manifest.
-d1d0942a947803d45a1fd9068f3518cf412178b6b9bafcb82db44c52d5820c11
+ef9777890001ba0122d3add799795e118fd87243f42731ab84d4748b67605647
EACH END EXCLUSIVE EXPLAIN FAIL FOR
IGNORE IMMEDIATE INITIALLY INSTEAD LIKE_KW MATCH NO PLAN
QUERY KEY OF OFFSET PRAGMA RAISE RECURSIVE RELEASE REPLACE RESTRICT ROW ROWS
- ROLLBACK SAVEPOINT TEMP TRIGGER VACUUM VIEW VIRTUAL WITH WITHOUT
+ ROLLBACK SAVEPOINT TEMP TRIGGER VACUUM VIEW VIRTUAL WITH WITHIN WITHOUT
NULLS FIRST LAST
%ifdef SQLITE_OMIT_COMPOUND_SELECT
EXCEPT INTERSECT UNION
A = sqlite3ExprFunction(pParse, 0, &X, 0);
}
+%include {
+ /* Generate an expression node that represents an ordered-set aggregate function */
+ static Expr *sqlite3ExprAddOrderedsetFunction(
+ Parse *pParse, /* Parsing context */
+ Token *pFuncname, /* Name of the function */
+ int isDistinct, /* DISTINCT or ALL qualifier */
+ ExprList *pOrig, /* Arguments to the function */
+ Expr *pOrderby /* Expression in the ORDER BY clause */
+ ){
+ ExprList *p; /* Modified argument list */
+ Expr *pExpr; /* Final result */
+ p = sqlite3ExprListAppend(pParse, 0, pOrderby);
+ if( pOrig ){
+ int i;
+ for(i=0; i<pOrig->nExpr; i++){
+ p = sqlite3ExprListAppend(pParse, p, pOrig->a[i].pExpr);
+ pOrig->a[i].pExpr = 0;
+ }
+ sqlite3ExprListDelete(pParse->db, pOrig);
+ }
+ if( isDistinct==SF_Distinct ){
+ sqlite3ErrorMsg(pParse, "DISTINCT not allows on ordered-set aggregate %T()",
+ pFuncname);
+ }
+ pExpr = sqlite3ExprFunction(pParse, p, pFuncname, 0);
+ if( pExpr ) pExpr->iTable = 1;
+ return pExpr;
+ }
+}
+expr(A) ::= idj(X) LP distinct(D) exprlist(Y) RP WITHIN GROUP LP ORDER BY expr(E) RP. {
+ A = sqlite3ExprAddOrderedsetFunction(pParse, &X, D, Y, E);
+}
+
%ifndef SQLITE_OMIT_WINDOWFUNC
expr(A) ::= idj(X) LP distinct(D) exprlist(Y) RP filter_over(Z). {
A = sqlite3ExprFunction(pParse, Y, &X, D);
A = sqlite3ExprFunction(pParse, 0, &X, 0);
sqlite3WindowAttach(pParse, A, Z);
}
+expr(A) ::= idj(X) LP distinct(D) exprlist(Y) RP WITHIN GROUP LP ORDER BY expr(E) RP
+ filter_over(Z). {
+ A = sqlite3ExprAddOrderedsetFunction(pParse, &X, D, Y, E);
+ sqlite3WindowAttach(pParse, A, Z);
+}
+
%endif
term(A) ::= CTIME_KW(OP). {
** EP_Unlikely: 134217728 times likelihood
** TK_IN: ephemeral table holding RHS
** TK_SELECT_COLUMN: Number of columns on the LHS
- ** TK_SELECT: 1st register of result vector */
+ ** TK_SELECT: 1st register of result vector
+ ** TK_FUNCTION: Uses ordered-set aggregate syntax */
ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
** TK_VARIABLE: variable number (always >= 1).
** TK_SELECT_COLUMN: column of the result vector */
{ "WHERE", "TK_WHERE", ALWAYS, 10 },
{ "WINDOW", "TK_WINDOW", WINDOWFUNC, 3 },
{ "WITH", "TK_WITH", CTE, 4 },
+ { "WITHIN", "TK_WITHIN", ALWAYS, 1 },
{ "WITHOUT", "TK_WITHOUT", ALWAYS, 1 },
};