Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improved error messages when column integers in an ORDER BY clause are out of range. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | ticket-71e333e7 |
Files: | files | file ages | folders |
SHA1: |
bd960d937f8d6521c8ec4b7bd8a77a49 |
User & Date: | drh 2012-12-07 23:23:53.894 |
Context
2012-12-08
| ||
00:52 | Recognize TK_COLLATE operators that have been transformed into TK_REGISTER. Skip both TK_COLLATE and TK_AS operators when looking for the top of an expression. (check-in: f66c1db296 user: drh tags: ticket-71e333e7) | |
2012-12-07
| ||
23:23 | Improved error messages when column integers in an ORDER BY clause are out of range. (check-in: bd960d937f user: drh tags: ticket-71e333e7) | |
23:10 | For an ORDER BY on a compound SELECT, take the collating sequence from the left-most term of the compound. (check-in: 8e724b383d user: drh tags: ticket-71e333e7) | |
Changes
Changes to src/resolve.c.
︙ | ︙ | |||
952 953 954 955 956 957 958 | pItem->iOrderByCol = (u16)iCol; continue; } if( sqlite3ExprIsInteger(sqlite3ExprSkipCollate(pE), &iCol) ){ /* The ORDER BY term is an integer constant. Again, set the column ** number so that sqlite3ResolveOrderGroupBy() will convert the ** order-by term to a copy of the result-set expression */ | | | 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 | pItem->iOrderByCol = (u16)iCol; continue; } if( sqlite3ExprIsInteger(sqlite3ExprSkipCollate(pE), &iCol) ){ /* The ORDER BY term is an integer constant. Again, set the column ** number so that sqlite3ResolveOrderGroupBy() will convert the ** order-by term to a copy of the result-set expression */ if( iCol<1 || iCol>0xffff ){ resolveOutOfRangeError(pParse, zType, i+1, nResult); return 1; } pItem->iOrderByCol = (u16)iCol; continue; } |
︙ | ︙ |
Changes to test/tkt2822.test.
︙ | ︙ | |||
269 270 271 272 273 274 275 | CREATE TABLE t7(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14, a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25); } catchsql { SELECT * FROM t7 ORDER BY 0; } } {1 {1st ORDER BY term out of range - should be between 1 and 25}} | | > > > > > > > > > > | 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | CREATE TABLE t7(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14, a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25); } catchsql { SELECT * FROM t7 ORDER BY 0; } } {1 {1st ORDER BY term out of range - should be between 1 and 25}} do_test tkt2822-7.2.1 { catchsql { SELECT * FROM t7 ORDER BY 1, 0; } } {1 {2nd ORDER BY term out of range - should be between 1 and 25}} do_test tkt2822-7.2.2 { catchsql { SELECT * FROM t7 ORDER BY 1, 26; } } {1 {2nd ORDER BY term out of range - should be between 1 and 25}} do_test tkt2822-7.2.3 { catchsql { SELECT * FROM t7 ORDER BY 1, 65536; } } {1 {2nd ORDER BY term out of range - should be between 1 and 25}} do_test tkt2822-7.3 { catchsql { SELECT * FROM t7 ORDER BY 1, 2, 0; } } {1 {3rd ORDER BY term out of range - should be between 1 and 25}} |
︙ | ︙ |