Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for ticket #35: Ignore any ORDER BY clause on a subquery in a FROM clause. (CVS 557) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1b0ee944c9af10078aba628e85d79f86 |
User & Date: | drh 2002-05-08 21:46:15.000 |
Context
2002-05-10
| ||
05:44 | Attempt to detect when two or more threads try to use the same database at the same time and return an SQLITE_MISUSE error. Also return this error if an attempt is made to use a closed database. (CVS 558) (check-in: a05fabd2df user: drh tags: trunk) | |
2002-05-08
| ||
21:46 | Fix for ticket #35: Ignore any ORDER BY clause on a subquery in a FROM clause. (CVS 557) (check-in: 1b0ee944c9 user: drh tags: trunk) | |
21:30 | Fix for ticket #34: VIEWs ignore their ORDER BY clause. (CVS 556) (check-in: 5f22d21571 user: drh tags: trunk) | |
Changes
Changes to src/parse.y.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** This file contains SQLite's grammar for SQL. Process this file ** using the lemon parser generator to generate C code that runs ** the parser. Lemon will also generate a header file containing ** numeric codes for all of the tokens. ** | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ** ************************************************************************* ** This file contains SQLite's grammar for SQL. Process this file ** using the lemon parser generator to generate C code that runs ** the parser. Lemon will also generate a header file containing ** numeric codes for all of the tokens. ** ** @(#) $Id: parse.y,v 1.63 2002/05/08 21:46:15 drh Exp $ */ %token_prefix TK_ %token_type {Token} %default_type {Token} %extra_argument {Parse *pParse} %syntax_error { sqliteSetString(&pParse->zErrMsg,"syntax error",0); |
︙ | ︙ | |||
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | seltablist(A) ::= stl_prefix(X) ids(Y) as ids(Z). { A = sqliteIdListAppend(X,&Y); sqliteIdListAddAlias(A,&Z); } seltablist(A) ::= stl_prefix(X) LP select(S) RP. { A = sqliteIdListAppend(X,0); A->a[A->nId-1].pSelect = S; } seltablist(A) ::= stl_prefix(X) LP select(S) RP as ids(Z). { A = sqliteIdListAppend(X,0); A->a[A->nId-1].pSelect = S; sqliteIdListAddAlias(A,&Z); } %type orderby_opt {ExprList*} %destructor orderby_opt {sqliteExprListDelete($$);} %type sortlist {ExprList*} %destructor sortlist {sqliteExprListDelete($$);} | > > > > > > > > | 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | seltablist(A) ::= stl_prefix(X) ids(Y) as ids(Z). { A = sqliteIdListAppend(X,&Y); sqliteIdListAddAlias(A,&Z); } seltablist(A) ::= stl_prefix(X) LP select(S) RP. { A = sqliteIdListAppend(X,0); A->a[A->nId-1].pSelect = S; if( S->pOrderBy ){ sqliteExprListDelete(S->pOrderBy); S->pOrderBy = 0; } } seltablist(A) ::= stl_prefix(X) LP select(S) RP as ids(Z). { A = sqliteIdListAppend(X,0); A->a[A->nId-1].pSelect = S; if( S->pOrderBy ){ sqliteExprListDelete(S->pOrderBy); S->pOrderBy = 0; } sqliteIdListAddAlias(A,&Z); } %type orderby_opt {ExprList*} %destructor orderby_opt {sqliteExprListDelete($$);} %type sortlist {ExprList*} %destructor sortlist {sqliteExprListDelete($$);} |
︙ | ︙ |
Changes to test/select1.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2001 September 15 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2001 September 15 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # # $Id: select1.test,v 1.25 2002/05/08 21:46:16 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Try to select on a non-existant table. # do_test select1-1.1 { |
︙ | ︙ | |||
661 662 663 664 665 666 667 | } } {1 2} do_test select1-12.7 { execsql { SELECT * FROM t3 WHERE a=(SELECT 2); } } {} | > > > > > | > > > > > > > > > > | 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 | } } {1 2} do_test select1-12.7 { execsql { SELECT * FROM t3 WHERE a=(SELECT 2); } } {} do_test select1-12.8 { execsql2 { SELECT x FROM ( SELECT a,b FROM t3 UNION SELECT a AS 'x', b AS 'y' FROM t4 ORDER BY a,b ) ORDER BY x; } } {x 1 x 3} do_test select1-12.9 { execsql2 { SELECT z.x FROM ( SELECT a,b FROM t3 UNION SELECT a AS 'x', b AS 'y' FROM t4 ORDER BY a,b ) AS 'z' ORDER BY x; } } {z.x 1 z.x 3} finish_test |