Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a bug in the CAST operator associated with the column cache. (CVS 5866) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1b6a5140446da896f69fddc8d1ea0768 |
User & Date: | drh 2008-11-06 15:33:04.000 |
Context
2008-11-07
| ||
00:06 | Add documentation to make it clear that short reads from xRead in the VFS must be zero-filled. (CVS 5867) (check-in: fb311d6f40 user: drh tags: trunk) | |
2008-11-06
| ||
15:33 | Fix a bug in the CAST operator associated with the column cache. (CVS 5866) (check-in: 1b6a514044 user: drh tags: trunk) | |
2008-11-05
| ||
17:41 | Fix memory allocation problems when string length exceeds limits. (CVS 5865) (check-in: b568e32520 user: drh tags: trunk) | |
Changes
Changes to src/expr.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 routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions 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 routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** ** $Id: expr.c,v 1.401 2008/11/06 15:33:04 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** Return the 'affinity' of the expression pExpr if any. ** |
︙ | ︙ | |||
1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 | assert( to_op==OP_ToInt || aff!=SQLITE_AFF_INTEGER ); assert( to_op==OP_ToReal || aff!=SQLITE_AFF_REAL ); testcase( to_op==OP_ToText ); testcase( to_op==OP_ToBlob ); testcase( to_op==OP_ToNumeric ); testcase( to_op==OP_ToInt ); testcase( to_op==OP_ToReal ); sqlite3VdbeAddOp1(v, to_op, inReg); testcase( usedAsColumnCache(pParse, inReg, inReg) ); sqlite3ExprCacheAffinityChange(pParse, inReg, 1); break; } #endif /* SQLITE_OMIT_CAST */ case TK_LT: | > > > > | 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 | assert( to_op==OP_ToInt || aff!=SQLITE_AFF_INTEGER ); assert( to_op==OP_ToReal || aff!=SQLITE_AFF_REAL ); testcase( to_op==OP_ToText ); testcase( to_op==OP_ToBlob ); testcase( to_op==OP_ToNumeric ); testcase( to_op==OP_ToInt ); testcase( to_op==OP_ToReal ); if( inReg!=target ){ sqlite3VdbeAddOp2(v, OP_SCopy, inReg, target); inReg = target; } sqlite3VdbeAddOp1(v, to_op, inReg); testcase( usedAsColumnCache(pParse, inReg, inReg) ); sqlite3ExprCacheAffinityChange(pParse, inReg, 1); break; } #endif /* SQLITE_OMIT_CAST */ case TK_LT: |
︙ | ︙ |
Changes to test/cast.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2005 June 25 # # 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 CAST operator. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2005 June 25 # # 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 CAST operator. # # $Id: cast.test,v 1.10 2008/11/06 15:33:04 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Only run these tests if the build includes the CAST operator ifcapable !cast { finish_test |
︙ | ︙ | |||
315 316 317 318 319 320 321 322 | do_test cast-3.32.2 { sqlite3_column_int $::STMT 0 } {12345} do_test cast-3.32.3 { sqlite3_finalize $::STMT } {SQLITE_OK} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > | 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | do_test cast-3.32.2 { sqlite3_column_int $::STMT 0 } {12345} do_test cast-3.32.3 { sqlite3_finalize $::STMT } {SQLITE_OK} do_test cast-4.1 { db eval { CREATE TABLE t1(a); INSERT INTO t1 VALUES('abc'); SELECT a, CAST(a AS integer) FROM t1; } } {abc 0} do_test cast-4.2 { db eval { SELECT CAST(a AS integer), a FROM t1; } } {0 abc} do_test cast-4.3 { db eval { SELECT a, CAST(a AS integer), a FROM t1; } } {abc 0 abc} do_test cast-4.4 { db eval { SELECT CAST(a AS integer), a, CAST(a AS real), a FROM t1; } } {0 abc 0.0 abc} finish_test |