Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a segfault that can occur when the LHS of a LIKE operator has an undefined collating sequence. Ticket [1258875e07553]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a82e6b4585b9ddba581204976cd5ea87 |
User & Date: | drh 2010-01-21 23:11:25.000 |
References
2010-01-21
| ||
23:13 | • Fixed ticket [1258875e07]: Undefined collating sequence on LIKE causes segfault plus 3 other changes (artifact: 69302bfe88 user: drh) | |
Context
2010-01-22
| ||
15:48 | Fix two similar problems in fts3 that meant that an OOM error could cause a memory leak. (check-in: 701ef64b3d user: dan tags: trunk) | |
2010-01-21
| ||
23:11 | Fix a segfault that can occur when the LHS of a LIKE operator has an undefined collating sequence. Ticket [1258875e07553]. (check-in: a82e6b4585 user: drh tags: trunk) | |
01:53 | Redesign the string to numeric value caster so that it is more likely to work on unusual floating point hardware. (check-in: 8bb1104c6f user: drh tags: trunk) | |
Changes
Changes to src/where.c.
︙ | ︙ | |||
649 650 651 652 653 654 655 | if( pLeft->op!=TK_COLUMN || sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT ){ /* IMP: R-02065-49465 The left-hand side of the LIKE or GLOB operator must ** be the name of an indexed column with TEXT affinity. */ return 0; } assert( pLeft->iColumn!=(-1) ); /* Because IPK never has AFF_TEXT */ pColl = sqlite3ExprCollSeq(pParse, pLeft); | | | 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 | if( pLeft->op!=TK_COLUMN || sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT ){ /* IMP: R-02065-49465 The left-hand side of the LIKE or GLOB operator must ** be the name of an indexed column with TEXT affinity. */ return 0; } assert( pLeft->iColumn!=(-1) ); /* Because IPK never has AFF_TEXT */ pColl = sqlite3ExprCollSeq(pParse, pLeft); if( pColl==0 ) return 0; /* Happens when LHS has an undefined collation */ if( (pColl->type!=SQLITE_COLL_BINARY || *pnoCase) && (pColl->type!=SQLITE_COLL_NOCASE || !*pnoCase) ){ /* IMP: R-09003-32046 For the GLOB operator, the column must use the ** default BINARY collating sequence. ** IMP: R-41408-28306 For the LIKE operator, if case_sensitive_like mode ** is enabled then the column must use the default BINARY collating ** sequence, or if case_sensitive_like mode is disabled then the column |
︙ | ︙ |