Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Ensure that an ALWAYS() in the rename logic really is always true, even for faulty inputs. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
54410f0e7710542d5159d0449898598d |
User & Date: | drh 2019-12-04 15:08:58 |
Context
2019-12-04
| ||
19:45 | Window functions are never constant. check-in: 35f0b5a8 user: drh tags: trunk | |
15:08 | Ensure that an ALWAYS() in the rename logic really is always true, even for faulty inputs. check-in: 54410f0e user: drh tags: trunk | |
14:26 | Fix an assert() failure that could occur in ALTER TABLE code when the schema contains a view that uses a CTE. check-in: 75b04a4b user: dan tags: trunk | |
Changes
Changes to src/alter.c.
753 754 755 756 757 758 759 760 761 762 763 764 765 766 |
/* ** Walker callback used by sqlite3RenameExprUnmap(). */ static int renameUnmapSelectCb(Walker *pWalker, Select *p){ Parse *pParse = pWalker->pParse; int i; if( ALWAYS(p->pEList) ){ ExprList *pList = p->pEList; for(i=0; i<pList->nExpr; i++){ if( pList->a[i].zName ){ sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zName); } } |
> |
753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 |
/*
** Walker callback used by sqlite3RenameExprUnmap().
*/
static int renameUnmapSelectCb(Walker *pWalker, Select *p){
Parse *pParse = pWalker->pParse;
int i;
if( pParse->nErr ) return WRC_Abort;
if( ALWAYS(p->pEList) ){
ExprList *pList = p->pEList;
for(i=0; i<pList->nExpr; i++){
if( pList->a[i].zName ){
sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zName);
}
}
|
Changes to test/altertab3.test.
461 462 463 464 465 466 467 468 469 |
" {} do_catchsql_test 19.$tn.2 { ALTER TABLE a RENAME TO g; } $res } finish_test |
> > | > > > > > > > |
461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 |
" {} do_catchsql_test 19.$tn.2 { ALTER TABLE a RENAME TO g; } $res } # Verify that the "if( pParse->nErr ) return WRC_Abort" at the top of the # renameUnmapSelectCb() routine in alter.c (2019-12-04) is really required. # sqlite3 db :memory: do_catchsql_test 20.10 { CREATE TABLE s(a, b, c); CREATE INDEX k ON s( (WITH s AS( SELECT * ) VALUES(2) ) IN () ); ALTER TABLE s RENAME a TO a2; } {1 {error in index k: no tables specified}} finish_test |