Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Correctly deal with an unknown collating sequence on an indexed DISTINCT query. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a0b6e2fed3e95cf78ed0515c6e4da751 |
User & Date: | drh 2015-04-15 05:31:02.899 |
Context
2015-04-15
| ||
05:38 | Fix a faulty assert() in the sqlite3StrAccumAppend() routine. (check-in: 998cfdb8dc user: drh tags: trunk) | |
05:31 | Correctly deal with an unknown collating sequence on an indexed DISTINCT query. (check-in: a0b6e2fed3 user: drh tags: trunk) | |
05:20 | When adding the implied "LIMIT 1" to the end of a scalar subquery, make sure that subquery is not a VALUES-only query as such queries cannot deal with LIMIT clauses. (check-in: 7c27310bdf user: drh tags: trunk) | |
Changes
Changes to src/where.c.
︙ | ︙ | |||
1528 1529 1530 1531 1532 1533 1534 | for(i=0; i<pList->nExpr; i++){ Expr *p = sqlite3ExprSkipCollate(pList->a[i].pExpr); if( p->op==TK_COLUMN && p->iColumn==pIdx->aiColumn[iCol] && p->iTable==iBase ){ CollSeq *pColl = sqlite3ExprCollSeq(pParse, pList->a[i].pExpr); | | | 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 | for(i=0; i<pList->nExpr; i++){ Expr *p = sqlite3ExprSkipCollate(pList->a[i].pExpr); if( p->op==TK_COLUMN && p->iColumn==pIdx->aiColumn[iCol] && p->iTable==iBase ){ CollSeq *pColl = sqlite3ExprCollSeq(pParse, pList->a[i].pExpr); if( pColl && 0==sqlite3StrICmp(pColl->zName, zColl) ){ return i; } } } return -1; } |
︙ | ︙ |
Changes to test/collate3.test.
︙ | ︙ | |||
28 29 30 31 32 33 34 | # # These tests ensure that when a user executes a statement with an # unknown collation sequence an error is returned. # do_test collate3-1.0 { execsql { | | > > > > > | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | # # These tests ensure that when a user executes a statement with an # unknown collation sequence an error is returned. # do_test collate3-1.0 { execsql { CREATE TABLE collate3t1(c1 UNIQUE); } } {} do_test collate3-1.1 { catchsql { SELECT * FROM collate3t1 ORDER BY 1 collate garbage; } } {1 {no such collation sequence: garbage}} do_test collate3-1.1.2 { catchsql { SELECT DISTINCT c1 COLLATE garbage FROM collate3t1; } } {1 {no such collation sequence: garbage}} do_test collate3-1.2 { catchsql { CREATE TABLE collate3t2(c1 collate garbage); } } {1 {no such collation sequence: garbage}} do_test collate3-1.3 { |
︙ | ︙ |