Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for ticket #65: If an integer value is too big to be represented as a 32-bit integer, then treat it as a string. (CVS 611) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ad9624798edbd6d0c4652fed3d74fe87 |
User & Date: | drh 2002-06-09 01:16:01.000 |
Context
2002-06-09
| ||
01:55 | Added tests for the new IN operator optimizer and fixed a bug that the new tests found. This completes the implementation of enhancement #63. (CVS 612) (check-in: 2a710e1817 user: drh tags: trunk) | |
01:16 | Fix for ticket #65: If an integer value is too big to be represented as a 32-bit integer, then treat it as a string. (CVS 611) (check-in: ad9624798e user: drh tags: trunk) | |
2002-06-08
| ||
23:25 | Add optimizations for the IN operator in WHERE clauses. This is a partial implementation of enhancement #63. Still need to add test cases. (CVS 610) (check-in: 8481e841eb 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.70 2002/06/09 01:16:01 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** Construct a new expression node and return a pointer to it. Memory ** for this node is obtained from sqliteMalloc(). The calling function |
︙ | ︙ | |||
820 821 822 823 824 825 826 | sqliteVdbeAddOp(v, OP_Column, pExpr->iTable, pExpr->iColumn); }else{ sqliteVdbeAddOp(v, OP_Recno, pExpr->iTable, 0); } break; } case TK_INTEGER: { | > > > > > > > > > | > | 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 | sqliteVdbeAddOp(v, OP_Column, pExpr->iTable, pExpr->iColumn); }else{ sqliteVdbeAddOp(v, OP_Recno, pExpr->iTable, 0); } break; } case TK_INTEGER: { int iVal = atoi(pExpr->token.z); char zBuf[30]; sprintf(zBuf,"%d",iVal); if( strlen(zBuf)!=pExpr->token.n || strncmp(pExpr->token.z,zBuf,pExpr->token.n)!=0 ){ /* If the integer value cannot be represented exactly in 32 bits, ** then code it as a string instead. */ sqliteVdbeAddOp(v, OP_String, 0, 0); }else{ sqliteVdbeAddOp(v, OP_Integer, iVal, 0); } sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n); break; } case TK_FLOAT: { sqliteVdbeAddOp(v, OP_String, 0, 0); assert( pExpr->token.z ); sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n); |
︙ | ︙ |
Changes to test/misc1.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for miscellanous features that were # left out of other test files. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for miscellanous features that were # left out of other test files. # # $Id: misc1.test,v 1.8 2002/06/09 01:16:01 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Test the creation and use of tables that have a large number # of columns. # |
︙ | ︙ | |||
234 235 236 237 238 239 240 | } {1 {no tables specified}} do_test misc1-8.2 { catchsql { SELECT t1.*; } } {1 {no such table: t1}} | > > > > > | > > > > > > > > > > > > > > > | 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | } {1 {no tables specified}} do_test misc1-8.2 { catchsql { SELECT t1.*; } } {1 {no such table: t1}} execsql { DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; DROP TABLE t4; } # If an integer is too big to be represented as a 32-bit machine integer, # then treat it as a string. # do_test misc1-9.1 { catchsql { CREATE TABLE t1(a unique not null, b unique not null); INSERT INTO t1 VALUES('a',12345678901234567890); INSERT INTO t1 VALUES('b',12345678911234567890); INSERT INTO t1 VALUES('c',12345678921234567890); SELECT * FROM t1; } } {0 {a 12345678901234567890 b 12345678911234567890 c 12345678921234567890}} finish_test |