Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Handle "rowid<=X ORDER BY rowid DESC" where X is an integer. Fix for ticket #1092. (CVS 2307) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
506088796c846243e24c4cba6be4ce65 |
User & Date: | danielk1977 2005-02-02 01:10:45.000 |
Context
2005-02-02
| ||
01:13 | Fix a comment in sqlite3.h. No code changes. Ticket #1093. (CVS 2308) (check-in: d1ea2fb70b user: danielk1977 tags: trunk) | |
01:10 | Handle "rowid<=X ORDER BY rowid DESC" where X is an integer. Fix for ticket #1092. (CVS 2307) (check-in: 506088796c user: danielk1977 tags: trunk) | |
2005-02-01
| ||
17:05 | Version 3.1.1 (beta) (CVS 2306) (check-in: 2e1c71c468 user: drh tags: trunk) | |
Changes
Changes to src/where.c.
︙ | ︙ | |||
12 13 14 15 16 17 18 | ** This module contains C code that generates VDBE code used to process ** the WHERE clause of SQL statements. This module is reponsible for ** generating the code that loops through a table looking for applicable ** rows. Indices are selected and used to speed the search when doing ** so is applicable. Because this module is responsible for selecting ** indices, you might also think of this module as the "query optimizer". ** | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ** This module contains C code that generates VDBE code used to process ** the WHERE clause of SQL statements. This module is reponsible for ** generating the code that loops through a table looking for applicable ** rows. Indices are selected and used to speed the search when doing ** so is applicable. Because this module is responsible for selecting ** indices, you might also think of this module as the "query optimizer". ** ** $Id: where.c,v 1.134 2005/02/02 01:10:45 danielk1977 Exp $ */ #include "sqliteInt.h" /* ** The query generator uses an array of instances of this structure to ** help it analyze the subexpressions of the WHERE clause. Each WHERE ** clause subexpression is separated from the others by an AND operator. |
︙ | ︙ | |||
1087 1088 1089 1090 1091 1092 1093 | k = iDirectGt[i]; assert( k<nExpr ); pTerm = &aExpr[k]; pX = pTerm->p; assert( pX!=0 ); assert( pTerm->idxLeft==iCur ); sqlite3ExprCode(pParse, pX->pRight); | | | 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 | k = iDirectGt[i]; assert( k<nExpr ); pTerm = &aExpr[k]; pX = pTerm->p; assert( pX!=0 ); assert( pTerm->idxLeft==iCur ); sqlite3ExprCode(pParse, pX->pRight); sqlite3VdbeAddOp(v, OP_ForceInt, pX->op==TK_LE || pX->op==TK_GT, brk); sqlite3VdbeAddOp(v, bRev ? OP_MoveLt : OP_MoveGe, iCur, brk); VdbeComment((v, "pk")); disableTerm(pLevel, &pTerm->p); }else{ sqlite3VdbeAddOp(v, bRev ? OP_Last : OP_Rewind, iCur, brk); } if( iDirectLt[i]>=0 ){ |
︙ | ︙ |
Changes to test/sort.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 CREATE TABLE 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 CREATE TABLE statement. # # $Id: sort.test,v 1.19 2005/02/02 01:10:45 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a bunch of data to sort against # do_test sort-1.0 { |
︙ | ︙ | |||
405 406 407 408 409 410 411 412 413 | } {2 3} do_test sort-9.7 { execsql { SELECT x FROM t6 WHERE y>'1' } } {3} } ;# endif bloblit finish_test | > > > > > > > > > > > > > > > > > > > > > > | 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 | } {2 3} do_test sort-9.7 { execsql { SELECT x FROM t6 WHERE y>'1' } } {3} } ;# endif bloblit # Ticket #1092 - ORDER BY on rowid fields. do_test sort-10.1 { execsql { CREATE TABLE t7(c INTEGER PRIMARY KEY); INSERT INTO t7 VALUES(1); INSERT INTO t7 VALUES(2); INSERT INTO t7 VALUES(3); INSERT INTO t7 VALUES(4); } } {} do_test sort-10.2 { execsql { SELECT c FROM t7 WHERE c<=3 ORDER BY c DESC; } } {3 2 1} do_test sort-10.3 { execsql { SELECT c FROM t7 WHERE c<3 ORDER BY c DESC; } } {2 1} finish_test |