Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Do not allow recursive CTEs that use aggregate queries in the recursive part. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
6d2999afbc25b9c238e4028f637c10ea |
User & Date: | drh 2015-07-05 22:15:10.026 |
Context
2015-07-06
| ||
20:27 | Speed up seek operations on fts5 b-tree structures. (check-in: 7b7da1eb43 user: dan tags: trunk) | |
18:54 | Enhance separate pcache1 to allocate a block of pages from heap on startup, if possible, for a 5.2% performance improvement. (check-in: aa7341c873 user: drh tags: pcache-bulk-local) | |
2015-07-05
| ||
22:15 | Do not allow recursive CTEs that use aggregate queries in the recursive part. (check-in: 6d2999afbc user: drh tags: trunk) | |
2015-07-04
| ||
18:44 | Optimize seek operations on fts5 b-trees. (check-in: 8cf02090ce user: dan tags: trunk) | |
Changes
Changes to src/select.c.
︙ | ︙ | |||
2066 2067 2068 2069 2070 2071 2072 | VdbeCoverage(v); } sqlite3VdbeResolveLabel(v, addrCont); /* Execute the recursive SELECT taking the single row in Current as ** the value for the recursive-table. Store the results in the Queue. */ | > > > | | | | > | 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 | VdbeCoverage(v); } sqlite3VdbeResolveLabel(v, addrCont); /* Execute the recursive SELECT taking the single row in Current as ** the value for the recursive-table. Store the results in the Queue. */ if( p->selFlags & SF_Aggregate ){ sqlite3ErrorMsg(pParse, "recursive aggregate queries not supported"); }else{ p->pPrior = 0; sqlite3Select(pParse, p, &destQueue); assert( p->pPrior==0 ); p->pPrior = pSetup; } /* Keep running the loop until the Queue is empty */ sqlite3VdbeAddOp2(v, OP_Goto, 0, addrTop); sqlite3VdbeResolveLabel(v, addrBreak); end_of_recursive_query: sqlite3ExprListDelete(pParse->db, p->pOrderBy); |
︙ | ︙ |
Changes to test/with1.test.
︙ | ︙ | |||
853 854 855 856 857 858 859 860 861 | # do_catchsql_test 15.1 { WITH RECURSIVE d(x) AS (VALUES(1) UNION ALL SELECT rowid+1 FROM d WHERE rowid<10) SELECT x FROM d; } {1 {no such column: rowid}} finish_test | > > > > > > > | 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 | # do_catchsql_test 15.1 { WITH RECURSIVE d(x) AS (VALUES(1) UNION ALL SELECT rowid+1 FROM d WHERE rowid<10) SELECT x FROM d; } {1 {no such column: rowid}} # 2015-07-05: Do not allow aggregate recursive queries # do_catchsql_test 16.1 { WITH RECURSIVE i(x) AS (VALUES(1) UNION SELECT count(*) FROM i) SELECT * FROM i; } {1 {recursive aggregate queries not supported}} finish_test |