Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix up a couple of little things in the vdbe. select1.test passes now. (CVS 1351) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9ba0df4d7792dccb67782113751c0e58 |
User & Date: | danielk1977 2004-05-11 04:54:49 |
Context
2004-05-11
| ||
06:17 | Minor changes to the vdbe so that more tests pass. (CVS 1352) check-in: 16078fe0 user: danielk1977 tags: trunk | |
04:54 | Fix up a couple of little things in the vdbe. select1.test passes now. (CVS 1351) check-in: 9ba0df4d user: danielk1977 tags: trunk | |
03:11 | Internal symbols MEM_Dyn and MEM_AggCtx were defined as the same bit pattern. Change MEM_AggCtx to 0x1000. (CVS 1350) check-in: 2fffd133 user: danielk1977 tags: trunk | |
Changes
Changes to src/vdbe.c.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 .... 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 .... 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 .... 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 |
** ** Various scripts scan this source file in order to generate HTML ** documentation, headers files, or other derived files. The formatting ** of the code in this file is, therefore, important. See other comments ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** ** $Id: vdbe.c,v 1.276 2004/05/11 02:10:07 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> #include "vdbeInt.h" /* ................................................................................ if( rc==SQLITE_OK ){ rc = sqlite3BtreeBeginTrans(pCx->pBt); } if( rc==SQLITE_OK ){ /* If a transient index is required, create it by calling ** sqlite3BtreeCreateTable() with the BTREE_ZERODATA flag before ** opening it. If a transient table is required, just use the ** automatically created table with root-page 1. */ if( pOp->p2 ){ int pgno; rc = sqlite3BtreeCreateTable(pCx->pBt, &pgno, BTREE_ZERODATA); if( rc==SQLITE_OK ){ assert( pgno==MASTER_ROOT+1 ); rc = sqlite3BtreeCursor(pCx->pBt, pgno, 1, 0, 0, &pCx->pCursor); } }else{ rc = sqlite3BtreeCursor(pCx->pBt, MASTER_ROOT, 1, 0, 0, &pCx->pCursor); } } break; } /* Opcode: OpenPseudo P1 * * ** ................................................................................ Stringify(pNos); nKey = pNos->n; zKey = pNos->z; }else{ assert( pNos->flags & MEM_Int ); /* If the table is an INTKEY table, set nKey to the value of ** the integer key, and zKey to NULL. */ if( pC->intKey ){ nKey = intToKey(pNos->i); assert( keyToInt(nKey)==pNos->i ); zKey = 0; }else{ /* TODO: can this happen? zKey is not correctly byte-ordered here! */ assert(!"TODO"); nKey = sizeof(i64); zKey = (char*)&iKey; } iKey = pNos->i; if( pOp->p2 & OPFLAG_NCHANGE ) db->nChange++; if( pOp->p2 & OPFLAG_LASTROWID ) db->lastRowid = pNos->i; if( pOp->p2 & OPFLAG_CSCHANGE ) db->csChange++; if( pC->nextRowidValid && pTos->i>=pC->nextRowid ){ pC->nextRowidValid = 0; } ................................................................................ }else if( (pC = &p->aCsr[i])->pCursor!=0 ){ sqlite3VdbeCursorMoveto(pC); zRec = 0; pCrsr = pC->pCursor; if( pC->nullRow ){ payloadSize = 0; }else if( pC->keyAsData ){ /* TODO: sqlite3BtreeKeySize(pCrsr, &payloadSize); */ }else{ sqlite3BtreeDataSize(pCrsr, &payloadSize); } }else if( pC->pseudoTable ){ payloadSize = pC->nData; zRec = pC->pData; assert( payloadSize==0 || zRec!=0 ); |
| | > | > > > < < < < > > | > |
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 .... 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 .... 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 .... 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 |
** ** Various scripts scan this source file in order to generate HTML ** documentation, headers files, or other derived files. The formatting ** of the code in this file is, therefore, important. See other comments ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** ** $Id: vdbe.c,v 1.277 2004/05/11 04:54:49 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> #include "vdbeInt.h" /* ................................................................................ if( rc==SQLITE_OK ){ rc = sqlite3BtreeBeginTrans(pCx->pBt); } if( rc==SQLITE_OK ){ /* If a transient index is required, create it by calling ** sqlite3BtreeCreateTable() with the BTREE_ZERODATA flag before ** opening it. If a transient table is required, just use the ** automatically created table with root-page 1 (an INTKEY table). */ if( pOp->p2 ){ int pgno; rc = sqlite3BtreeCreateTable(pCx->pBt, &pgno, BTREE_ZERODATA); if( rc==SQLITE_OK ){ assert( pgno==MASTER_ROOT+1 ); rc = sqlite3BtreeCursor(pCx->pBt, pgno, 1, 0, 0, &pCx->pCursor); } }else{ rc = sqlite3BtreeCursor(pCx->pBt, MASTER_ROOT, 1, 0, 0, &pCx->pCursor); pCx->intKey = 1; } } break; } /* Opcode: OpenPseudo P1 * * ** ................................................................................ Stringify(pNos); nKey = pNos->n; zKey = pNos->z; }else{ assert( pNos->flags & MEM_Int ); /* If the table is an INTKEY table, set nKey to the value of ** the integer key, and zKey to NULL. Otherwise, set nKey to ** sizeof(i64) and point zKey at iKey. iKey contains the integer ** key in the on-disk byte order. */ iKey = intToKey(pNos->i); if( pC->intKey ){ nKey = intToKey(pNos->i); zKey = 0; }else{ nKey = sizeof(i64); zKey = (char*)&iKey; } if( pOp->p2 & OPFLAG_NCHANGE ) db->nChange++; if( pOp->p2 & OPFLAG_LASTROWID ) db->lastRowid = pNos->i; if( pOp->p2 & OPFLAG_CSCHANGE ) db->csChange++; if( pC->nextRowidValid && pTos->i>=pC->nextRowid ){ pC->nextRowidValid = 0; } ................................................................................ }else if( (pC = &p->aCsr[i])->pCursor!=0 ){ sqlite3VdbeCursorMoveto(pC); zRec = 0; pCrsr = pC->pCursor; if( pC->nullRow ){ payloadSize = 0; }else if( pC->keyAsData ){ assert( !pC->intKey ); u64 pl64; sqlite3BtreeKeySize(pCrsr, &pl64); payloadSize = pl64; }else{ sqlite3BtreeDataSize(pCrsr, &payloadSize); } }else if( pC->pseudoTable ){ payloadSize = pC->nData; zRec = pC->pData; assert( payloadSize==0 || zRec!=0 ); |