Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Remove no-longer-used P4_REAL type for VdbeOp, which has been replaced by P4_NUM. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
960d38f214936b2cc8904ed781ae5b6c |
User & Date: | peterreid 2013-07-06 04:15:37.994 |
Context
2013-07-06
| ||
22:43 | Multiplying NaN*Inf returns NaN, as Inf*NaN already did. Add related test cases. check-in: 04dad0b7c9 user: peterreid tags: trunk | |
04:15 | Remove no-longer-used P4_REAL type for VdbeOp, which has been replaced by P4_NUM. check-in: 960d38f214 user: peterreid tags: trunk | |
03:59 | Display sqlite4_nums correctly when explaining query plans. check-in: 40b76362c9 user: peterreid tags: trunk | |
Changes
Changes to src/vdbe.h.
︙ | ︙ | |||
49 50 51 52 53 54 55 | int p2; /* Second parameter (often the jump destination) */ int p3; /* The third parameter */ union { /* fourth parameter */ int i; /* Integer value if p4type==P4_INT32 */ void *p; /* Generic pointer */ char *z; /* Pointer to data for string (char array) types */ i64 *pI64; /* Used when p4type is P4_INT64 */ | | < | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | int p2; /* Second parameter (often the jump destination) */ int p3; /* The third parameter */ union { /* fourth parameter */ int i; /* Integer value if p4type==P4_INT32 */ void *p; /* Generic pointer */ char *z; /* Pointer to data for string (char array) types */ i64 *pI64; /* Used when p4type is P4_INT64 */ sqlite4_num *pNum; /* Used when p4type is P4_NUM */ FuncDef *pFunc; /* Used when p4type is P4_FUNCDEF */ VdbeFunc *pVdbeFunc; /* Used when p4type is P4_VDBEFUNC */ CollSeq *pColl; /* Used when p4type is P4_COLLSEQ */ Mem *pMem; /* Used when p4type is P4_MEM */ VTable *pVtab; /* Used when p4type is P4_VTAB */ KeyInfo *pKeyInfo; /* Used when p4type is P4_KEYINFO */ int *ai; /* Used when p4type is P4_INTARRAY */ SubProgram *pProgram; /* Used when p4type is P4_SUBPROGRAM */ Fts5Info *pFtsInfo; /* Used when p4type is P4_FTS5INDEXINFO */ int (*xAdvance)(VdbeCursor*); } p4; #ifdef SQLITE4_DEBUG char *zComment; /* Comment to improve readability */ #endif #ifdef VDBE_PROFILE int cnt; /* Number of times this instruction was executed */ u64 cycles; /* Total time spent executing this instruction */ |
︙ | ︙ | |||
112 113 114 115 116 117 118 | #define P4_FUNCDEF (-5) /* P4 is a pointer to a FuncDef structure */ #define P4_KEYINFO (-6) /* P4 is a pointer to a KeyInfo structure */ #define P4_VDBEFUNC (-7) /* P4 is a pointer to a VdbeFunc structure */ #define P4_MEM (-8) /* P4 is a pointer to a Mem* structure */ #define P4_TRANSIENT 0 /* P4 is a pointer to a transient string */ #define P4_VTAB (-10) /* P4 is a pointer to an sqlite4_vtab structure */ #define P4_MPRINTF (-11) /* P4 is a string obtained from sqlite4_mprintf() */ | | < | 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | #define P4_FUNCDEF (-5) /* P4 is a pointer to a FuncDef structure */ #define P4_KEYINFO (-6) /* P4 is a pointer to a KeyInfo structure */ #define P4_VDBEFUNC (-7) /* P4 is a pointer to a VdbeFunc structure */ #define P4_MEM (-8) /* P4 is a pointer to a Mem* structure */ #define P4_TRANSIENT 0 /* P4 is a pointer to a transient string */ #define P4_VTAB (-10) /* P4 is a pointer to an sqlite4_vtab structure */ #define P4_MPRINTF (-11) /* P4 is a string obtained from sqlite4_mprintf() */ #define P4_NUM (-12) /* P4 is a pointer to an sqlite4_num structure */ #define P4_INT64 (-13) /* P4 is a 64-bit signed integer */ #define P4_INT32 (-14) /* P4 is a 32-bit signed integer */ #define P4_INTARRAY (-15) /* P4 is a vector of 32-bit integers */ #define P4_SUBPROGRAM (-18) /* P4 is a pointer to a SubProgram structure */ #define P4_ADVANCE (-19) /* P4 is a pointer to BtreeNext() or BtreePrev() */ #define P4_FTS5INFO (-20) /* P4 points to an Fts5Info structure */ /* When adding a P4 argument using P4_KEYINFO, a copy of the KeyInfo structure ** is made. That copy is freed when the Vdbe is finalized. But if the ** argument is P4_KEYINFO_HANDOFF, the passed in pointer is used. It still ** gets freed when the Vdbe is finalized so it still should be obtained ** from a single sqliteMalloc(). But no copy is made and the calling ** function should *not* try to free the KeyInfo. |
︙ | ︙ |
Changes to src/vdbeaux.c.
︙ | ︙ | |||
580 581 582 583 584 585 586 | /* ** Delete a P4 value if necessary. */ static void freeP4(sqlite4 *db, int p4type, void *p4){ if( p4 ){ assert( db ); switch( p4type ){ | < | 580 581 582 583 584 585 586 587 588 589 590 591 592 593 | /* ** Delete a P4 value if necessary. */ static void freeP4(sqlite4 *db, int p4type, void *p4){ if( p4 ){ assert( db ); switch( p4type ){ case P4_NUM: case P4_INT64: case P4_DYNAMIC: case P4_KEYINFO: case P4_INTARRAY: case P4_KEYINFO_HANDOFF: { sqlite4DbFree(db, p4); |
︙ | ︙ | |||
892 893 894 895 896 897 898 | sqlite4_snprintf(zTemp, nTemp, "%lld", *pOp->p4.pI64); break; } case P4_INT32: { sqlite4_snprintf(zTemp, nTemp, "%d", pOp->p4.i); break; } | < < < < | 891 892 893 894 895 896 897 898 899 900 901 902 903 904 | sqlite4_snprintf(zTemp, nTemp, "%lld", *pOp->p4.pI64); break; } case P4_INT32: { sqlite4_snprintf(zTemp, nTemp, "%d", pOp->p4.i); break; } case P4_NUM: { sqlite4_num_to_text(*pOp->p4.pNum, zTemp, 0); break; } case P4_MEM: { Mem *pMem = pOp->p4.pMem; if( pMem->flags & MEM_Str ){ |
︙ | ︙ |