Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem with ORDER BY and compound SELECT queries. (CVS 3995) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
af76928fc5891f9a222ac0c39f8b443a |
User & Date: | danielk1977 2007-05-14 16:50:49.000 |
Context
2007-05-15
| ||
00:09 | Make sure the parser aborts quickly following a syntax error. (CVS 3996) (check-in: d07cdd3c09 user: drh tags: trunk) | |
2007-05-14
| ||
16:50 | Fix a problem with ORDER BY and compound SELECT queries. (CVS 3995) (check-in: af76928fc5 user: danielk1977 tags: trunk) | |
15:49 | Fix a bug in "flattening" optimization. Occured if the parent of the flattened sub-query is also the parent of a sub-query that uses a compound op (i.e. UNION, INTERSECT etc.). (CVS 3994) (check-in: 1c33829c9e user: danielk1977 tags: trunk) | |
Changes
Changes to src/select.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle SELECT statements in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle SELECT statements in SQLite. ** ** $Id: select.c,v 1.348 2007/05/14 16:50:49 danielk1977 Exp $ */ #include "sqliteInt.h" /* ** Delete all the content of a Select structure but do not deallocate ** the select structure itself. |
︙ | ︙ | |||
1996 1997 1998 1999 2000 2001 2002 | *apColl = aCopy[pExpr->iColumn]; } *pSortOrder = pOTerm->sortOrder; } assert( p->pRightmost==p ); assert( p->addrOpenEphm[2]>=0 ); addr = p->addrOpenEphm[2]; | | | 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 | *apColl = aCopy[pExpr->iColumn]; } *pSortOrder = pOTerm->sortOrder; } assert( p->pRightmost==p ); assert( p->addrOpenEphm[2]>=0 ); addr = p->addrOpenEphm[2]; sqlite3VdbeChangeP2(v, addr, p->pOrderBy->nExpr+2); pKeyInfo->nField = nOrderByExpr; sqlite3VdbeChangeP3(v, addr, (char*)pKeyInfo, P3_KEYINFO_HANDOFF); pKeyInfo = 0; generateSortTail(pParse, p, v, p->pEList->nExpr, eDest, iParm); } sqliteFree(pKeyInfo); |
︙ | ︙ |
Changes to test/fuzz.test.
︙ | ︙ | |||
15 16 17 18 19 20 21 | # # The tests in this file are really about testing fuzzily generated # SQL parse-trees. The majority of the fuzzily generated SQL is # valid as far as the parser is concerned. # # The most complicated trees are for SELECT statements. # | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # # The tests in this file are really about testing fuzzily generated # SQL parse-trees. The majority of the fuzzily generated SQL is # valid as far as the parser is concerned. # # The most complicated trees are for SELECT statements. # # $Id: fuzz.test,v 1.10 2007/05/14 16:50:49 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # set ::REPEATS 20 set ::REPEATS 5000 |
︙ | ︙ | |||
481 482 483 484 485 486 487 488 489 490 491 492 493 494 | do_test fuzz-1.12.2 { # Clean up after the previous query. execsql { DROP TABLE abc; } } {} #---------------------------------------------------------------- # Test some fuzzily generated expressions. # do_fuzzy_test fuzz-2 -template { SELECT [Expr] } do_test fuzz-3.1 { execsql { | > > > > > > > > > > > | 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 | do_test fuzz-1.12.2 { # Clean up after the previous query. execsql { DROP TABLE abc; } } {} do_test fuzz-1.13 { # The problem here was that when there were more expressions in # the ORDER BY list than the result-set list. The temporary b-tree # used for sorting was being misconfigured in this case. # execsql { SELECT 'abcd' UNION SELECT 'efgh' ORDER BY 1 ASC, 1 ASC; } } {abcd efgh} #---------------------------------------------------------------- # Test some fuzzily generated expressions. # do_fuzzy_test fuzz-2 -template { SELECT [Expr] } do_test fuzz-3.1 { execsql { |
︙ | ︙ |