Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Properly dequote column names in tables constructed by an aggregate SELECT. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
7e0d3e9cb071873564b7916c022aba5c |
User & Date: | drh 2017-08-14 01:33:07.818 |
Context
2017-08-14
| ||
14:53 | Sometimes a TK_COLUMN Expr node can have Expr.pTab==0 if it is a reference to an expression column in an index on an expression. Fix for ticket [aa98619ad08ddcab]. (check-in: d0da791ba0 user: drh tags: trunk) | |
06:55 | Update this branch with latest trunk changes. (check-in: bc2498d60f user: dan tags: server-process-edition) | |
01:33 | Properly dequote column names in tables constructed by an aggregate SELECT. (check-in: 7e0d3e9cb0 user: drh tags: trunk) | |
2017-08-12
| ||
18:31 | Add new test file fts5vocab2.test. (check-in: 02174842c3 user: dan tags: trunk) | |
Changes
Changes to src/select.c.
︙ | ︙ | |||
1706 1707 1708 1709 1710 1711 1712 | /* If the column contains an "AS <name>" phrase, use <name> as the name */ }else{ Expr *pColExpr = sqlite3ExprSkipCollate(pEList->a[i].pExpr); while( pColExpr->op==TK_DOT ){ pColExpr = pColExpr->pRight; assert( pColExpr!=0 ); } | > | > | 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 | /* If the column contains an "AS <name>" phrase, use <name> as the name */ }else{ Expr *pColExpr = sqlite3ExprSkipCollate(pEList->a[i].pExpr); while( pColExpr->op==TK_DOT ){ pColExpr = pColExpr->pRight; assert( pColExpr!=0 ); } if( (pColExpr->op==TK_COLUMN || pColExpr->op==TK_AGG_COLUMN) && pColExpr->pTab!=0 ){ /* For columns use the column name name */ int iCol = pColExpr->iColumn; Table *pTab = pColExpr->pTab; if( iCol<0 ) iCol = pTab->iPKey; zName = iCol>=0 ? pTab->aCol[iCol].zName : "rowid"; }else if( pColExpr->op==TK_ID ){ assert( !ExprHasProperty(pColExpr, EP_IntValue) ); |
︙ | ︙ |
Changes to test/colname.test.
︙ | ︙ | |||
373 374 375 376 377 378 379 380 381 382 | } {a 1 n 3} do_test colname-9.211 { execsql2 {SELECT t1.a AS n, v3.a FROM t1 JOIN v3} } {n 1 a 3} do_test colname-9.210 { execsql2 {SELECT t1.a, v3.a AS n FROM t1 JOIN v3} } {a 1 n 3} finish_test | > > > > > > > > > > > > > > > > > | 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 | } {a 1 n 3} do_test colname-9.211 { execsql2 {SELECT t1.a AS n, v3.a FROM t1 JOIN v3} } {n 1 a 3} do_test colname-9.210 { execsql2 {SELECT t1.a, v3.a AS n FROM t1 JOIN v3} } {a 1 n 3} # Make sure the quotation marks get removed from the column names # when constructing a new table from an aggregate SELECT. # Email from Juergen Palm on 2017-07-11. # do_execsql_test colname-10.100 { DROP TABLE IF EXISTS t1; CREATE TABLE t1("with space" TEXT); DROP TABLE IF EXISTS t2; CREATE TABLE t2 AS SELECT "with space" FROM t1; PRAGMA table_info(t2); } {0 {with space} TEXT 0 {} 0} do_execsql_test colname-10.110 { DROP TABLE IF EXISTS t3; CREATE TABLE t3 AS SELECT "with space" FROM t1 GROUP BY 1; PRAGMA table_info(t3); } {0 {with space} TEXT 0 {} 0} finish_test |