Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem with processing CTEs that use a WINDOW clause. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
ca564d4b5b19fe56842a04f31bb61352 |
User & Date: | dan 2019-09-16 05:34:08.899 |
Context
2019-09-16
| ||
14:42 | Documentation updates for the SQLITE_DIRECTONLY flag. (check-in: 5beb6dc9bc user: drh tags: trunk) | |
12:35 | Merge all recent trunk enhancements into the reuse-schema branch. (check-in: 27eb223690 user: drh tags: reuse-schema) | |
12:23 | Merge recent trunk enhancements into the wal2 branch. (check-in: da8bc97412 user: drh tags: wal2) | |
12:17 | Merge recent trunk enhancements into the begin-concurrent-pnu branch. (check-in: 54930b7e0a user: drh tags: begin-concurrent-pnu) | |
12:08 | Merge recent trunk enhancements into the begin-concurrent branch. (check-in: 93b9ef3f47 user: drh tags: begin-concurrent) | |
12:02 | Merge the latest changes from trunk into the apple-osx branch. (check-in: a95191deab user: drh tags: apple-osx) | |
05:34 | Fix a problem with processing CTEs that use a WINDOW clause. (check-in: ca564d4b5b user: dan tags: trunk) | |
2019-09-14
| ||
16:44 | Add the --no-rowids option to the ".recover" command. (check-in: 01d71b947a user: dan tags: trunk) | |
Changes
Changes to src/window.c.
︙ | ︙ | |||
2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 | */ Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){ Window *pNew = 0; if( ALWAYS(p) ){ pNew = sqlite3DbMallocZero(db, sizeof(Window)); if( pNew ){ pNew->zName = sqlite3DbStrDup(db, p->zName); pNew->pFilter = sqlite3ExprDup(db, p->pFilter, 0); pNew->pFunc = p->pFunc; pNew->pPartition = sqlite3ExprListDup(db, p->pPartition, 0); pNew->pOrderBy = sqlite3ExprListDup(db, p->pOrderBy, 0); pNew->eFrmType = p->eFrmType; pNew->eEnd = p->eEnd; pNew->eStart = p->eStart; pNew->eExclude = p->eExclude; pNew->regResult = p->regResult; pNew->pStart = sqlite3ExprDup(db, p->pStart, 0); pNew->pEnd = sqlite3ExprDup(db, p->pEnd, 0); pNew->pOwner = pOwner; } } return pNew; } /* ** Return a copy of the linked list of Window objects passed as the | > > | 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 | */ Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){ Window *pNew = 0; if( ALWAYS(p) ){ pNew = sqlite3DbMallocZero(db, sizeof(Window)); if( pNew ){ pNew->zName = sqlite3DbStrDup(db, p->zName); pNew->zBase = sqlite3DbStrDup(db, p->zBase); pNew->pFilter = sqlite3ExprDup(db, p->pFilter, 0); pNew->pFunc = p->pFunc; pNew->pPartition = sqlite3ExprListDup(db, p->pPartition, 0); pNew->pOrderBy = sqlite3ExprListDup(db, p->pOrderBy, 0); pNew->eFrmType = p->eFrmType; pNew->eEnd = p->eEnd; pNew->eStart = p->eStart; pNew->eExclude = p->eExclude; pNew->regResult = p->regResult; pNew->pStart = sqlite3ExprDup(db, p->pStart, 0); pNew->pEnd = sqlite3ExprDup(db, p->pEnd, 0); pNew->pOwner = pOwner; pNew->bImplicitFrame = p->bImplicitFrame; } } return pNew; } /* ** Return a copy of the linked list of Window objects passed as the |
︙ | ︙ |
Changes to test/windowB.test.
︙ | ︙ | |||
197 198 199 200 201 202 203 204 205 | } { {{}} {{"a":{"a":1,"e":9}}} {{"a":{"a":1,"e":9}}} {{"c":{"c":3,"e":9}}} } } finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | } { {{}} {{"a":{"a":1,"e":9}}} {{"a":{"a":1,"e":9}}} {{"c":{"c":3,"e":9}}} } } #------------------------------------------------------------------------- reset_db do_execsql_test 4.0 { CREATE TABLE x(a); INSERT INTO x VALUES(1); INSERT INTO x VALUES(2); } do_execsql_test 4.1 { WITH y AS ( SELECT Row_Number() OVER (win) FROM x WINDOW win AS (PARTITION BY a) ) SELECT * FROM y; } { 1 1 } do_catchsql_test 4.2 { WITH y AS ( SELECT Row_Number() OVER (win) FROM x WINDOW win AS (PARTITION BY fake_column)) SELECT * FROM y; } {1 {no such column: fake_column}} do_catchsql_test 4.3 { SELECT 1 WINDOW win AS (PARTITION BY fake_column); } {0 1} finish_test |