Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure the query optimizer for aggregate queries knows that expressions (x='a') and (x='A') are different. Ticket [fa7bf5ec94801e7e] |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e43da426e66e6b63d5ed9610a6308aba |
User & Date: | drh 2011-10-13 15:35:52.354 |
Context
2011-10-13
| ||
16:02 | Enable large-file support for fopen() and friends in the command-line shell. Ticket [92af7da36b6fbd] (check-in: eeeba4f0d2 user: drh tags: trunk) | |
15:35 | Make sure the query optimizer for aggregate queries knows that expressions (x='a') and (x='A') are different. Ticket [fa7bf5ec94801e7e] (check-in: e43da426e6 user: drh tags: trunk) | |
14:41 | Make sure the page_count and quick_check pragmas work properly even when their names are capitalized. Fixes a problem reported on the mailing list. (check-in: 150592b4b4 user: drh tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
3449 3450 3451 3452 3453 3454 3455 | if( pA->iTable!=pB->iTable || pA->iColumn!=pB->iColumn ) return 2; if( ExprHasProperty(pA, EP_IntValue) ){ if( !ExprHasProperty(pB, EP_IntValue) || pA->u.iValue!=pB->u.iValue ){ return 2; } }else if( pA->op!=TK_COLUMN && pA->u.zToken ){ if( ExprHasProperty(pB, EP_IntValue) || NEVER(pB->u.zToken==0) ) return 2; | | | 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 | if( pA->iTable!=pB->iTable || pA->iColumn!=pB->iColumn ) return 2; if( ExprHasProperty(pA, EP_IntValue) ){ if( !ExprHasProperty(pB, EP_IntValue) || pA->u.iValue!=pB->u.iValue ){ return 2; } }else if( pA->op!=TK_COLUMN && pA->u.zToken ){ if( ExprHasProperty(pB, EP_IntValue) || NEVER(pB->u.zToken==0) ) return 2; if( strcmp(pA->u.zToken,pB->u.zToken)!=0 ){ return 2; } } if( (pA->flags & EP_ExpCollate)!=(pB->flags & EP_ExpCollate) ) return 1; if( (pA->flags & EP_ExpCollate)!=0 && pA->pColl!=pB->pColl ) return 2; return 0; } |
︙ | ︙ |
Added test/tkt-fa7bf5ec.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # 2011 October 13 # # 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. Specifically, # it tests that ticket [fa7bf5ec94801e7e2030e41eefe5d9dd96eaacfd] has # been resolved. # # The problem described by this ticket was that the sqlite3ExprCompare() # function was saying that expressions (x='a') and (x='A') were identical # because it was using sqlite3StrICmp() instead of strcmp() to compare string # literals. That was causing the query optimizer for aggregate queries to # believe that both count() operations were identical, and thus only # computing the first count() and making a copy of the result for the # second count(). # set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt-fa7bf5ec-1 { execsql { CREATE TABLE t1(x); INSERT INTO t1 VALUES ('a'); INSERT INTO t1 VALUES ('A'); INSERT INTO t1 VALUES ('A'); SELECT count(CASE WHEN x='a' THEN 1 END), count(CASE WHEN x='A' THEN 1 END) FROM t1; } } {1 2} finish_test |