@@ -189,11 +189,11 @@
189 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
190 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
191 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
192 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.8.4"
193 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3008004
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2014-02-27 15:04:13 a6690400235705ecc0d1a60dacff6ad5fb1f944a"
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2014-03-04 04:12:56 3325ad5bdc2f81f63b556d6f4d0589d89b142b2b"
195 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
196 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
197 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
198 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version, sqlite3_sourceid
199 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -9334,12 +9334,15 @@
9334 9334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TRACE
9335 9335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char *sqlite3VdbeExpandSql(Vdbe*, const char*);
9336 9336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
9337 9337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9338 9338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(KeyInfo*,int,const void*,UnpackedRecord*);
9339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*);
9339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,const UnpackedRecord*,int);
9340 9340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(KeyInfo *, char *, int, char **);
9341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
9342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef int (*RecordCompare)(int,const void*,const UnpackedRecord*,int);
9343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE RecordCompare sqlite3VdbeFindCompare(UnpackedRecord*);
9341 9344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9342 9345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TRIGGER
9343 9346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeLinkSubProgram(Vdbe *, SubProgram *);
9344 9347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
9345 9348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -10950,23 +10953,23 @@
10950 10953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the OP_MakeRecord opcode of the VDBE and is disassembled by the
10951 10954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_Column opcode.
10952 10955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10953 10956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This structure holds a record that has already been disassembled
10954 10957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into its constituent fields.
10958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
10959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The r1 and r2 member variables are only used by the optimized comparison
10960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** functions vdbeRecordCompareInt() and vdbeRecordCompareString().
10955 10961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
10956 10962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct UnpackedRecord {
10957 10963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo; /* Collation and sort-order information */
10958 10964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 nField; /* Number of entries in apMem[] */
10959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 flags; /* Boolean settings. UNPACKED_... below */
10965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i8 default_rc; /* Comparison result if keys are equal */
10960 10966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *aMem; /* Values */
10967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int r1; /* Value to return if (lhs > rhs) */
10968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int r2; /* Value to return if (rhs < lhs) */
10961 10969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
10962 10970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
10964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Allowed values of UnpackedRecord.flags
10965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
10966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UNPACKED_INCRKEY 0x01 /* Make this key an epsilon larger */
10967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UNPACKED_PREFIX_MATCH 0x02 /* A prefix match is considered OK */
10968 10971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10969 10972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10970 10973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Each SQL index is represented in memory by an
10971 10974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** instance of the following structure.
10972 10975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -13840,11 +13843,11 @@
13840 13843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the following flags must be set to determine the memory management
13841 13844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** policy for Mem.z. The MEM_Term flag tells us whether or not the
13842 13845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string is \000 or \u0000 terminated
13843 13846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
13844 13847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Term 0x0200 /* String rep is nul terminated */
13845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define MEM_Dyn 0x0400 /* Need to call sqliteFree() on Mem.z */
13848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define MEM_Dyn 0x0400 /* Need to call Mem.xDel() on Mem.z */
13846 13849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Static 0x0800 /* Mem.z points to a static string */
13847 13850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Ephem 0x1000 /* Mem.z points to an ephemeral string */
13848 13851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Agg 0x2000 /* Mem.z points to an agg function context */
13849 13852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Zero 0x4000 /* Mem.i contains count of 0s appended to blob */
13850 13853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_OMIT_INCRBLOB
@@ -14023,11 +14026,11 @@
14023 14026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(unsigned char*, Mem*, u32);
14024 14027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*);
14025 14028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeDeleteAuxData(Vdbe*, int, int);
14026 14029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
14027 14030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *);
14028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(VdbeCursor*,UnpackedRecord*,int*);
14031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(VdbeCursor*,const UnpackedRecord*,int*);
14029 14032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3*, BtCursor *, i64 *);
14030 14033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*);
14031 14034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeExec(Vdbe*);
14032 14035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeList(Vdbe*);
14033 14036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe*);
@@ -14088,10 +14091,11 @@
14088 14091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define sqlite3VdbeLeave(X)
14089 14092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
14090 14093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
14091 14094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
14092 14095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemAboutToChange(Vdbe*,Mem*);
14096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeCheckMemInvariants(Mem*);
14093 14097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
14094 14098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
14095 14099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FOREIGN_KEY
14096 14100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeCheckFk(Vdbe *, int);
14097 14101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
@@ -21471,11 +21475,11 @@
21471 21475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pMem->n+(desiredEnc==SQLITE_UTF8?1:2))<=len );
21472 21476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21473 21477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(pMem);
21474 21478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags &= ~(MEM_Static|MEM_Dyn|MEM_Ephem);
21475 21479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = desiredEnc;
21476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags |= (MEM_Term|MEM_Dyn);
21480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags |= (MEM_Term);
21477 21481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->z = (char*)zOut;
21478 21482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->zMalloc = pMem->z;
21479 21483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21480 21484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
translate_out:
21481 21485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(TRANSLATE_TRACE) && defined(SQLITE_DEBUG)
@@ -21599,11 +21603,10 @@
21599 21603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(&m);
21600 21604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m.z = 0;
21601 21605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21602 21606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (m.flags & MEM_Term)!=0 || db->mallocFailed );
21603 21607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (m.flags & MEM_Str)!=0 || db->mallocFailed );
21604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (m.flags & MEM_Dyn)!=0 || db->mallocFailed );
21605 21608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( m.z || db->mallocFailed );
21606 21609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return m.z;
21607 21610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21608 21611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21609 21612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -55305,10 +55308,11 @@
55305 55308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 intKey, /* The table key */
55306 55309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int biasRight, /* If true, bias the search to the high end */
55307 55310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pRes /* Write search results here */
55308 55311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
55309 55312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
55313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ RecordCompare xRecordCompare;
55310 55314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55311 55315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorHoldsMutex(pCur) );
55312 55316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
55313 55317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRes );
55314 55318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pIdxKey==0)==(pCur->pKeyInfo==0) );
@@ -55325,10 +55329,20 @@
55325 55329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->atLast && pCur->info.nKey<intKey ){
55326 55330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = -1;
55327 55331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
55328 55332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55329 55333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
55335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pIdxKey ){
55336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xRecordCompare = sqlite3VdbeFindCompare(pIdxKey);
55337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pIdxKey->default_rc==1
55338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pIdxKey->default_rc==0
55339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pIdxKey->default_rc==-1
55340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
55341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
55342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xRecordCompare = 0; /* Not actually used. Avoids a compiler warning. */
55343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55330 55344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55331 55345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = moveToRoot(pCur);
55332 55346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
55333 55347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
55334 55348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -55410,18 +55424,18 @@
55410 55424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nCell<=pPage->max1bytePayload ){
55411 55425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This branch runs if the record-size field of the cell is a
55412 55426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** single byte varint and the record fits entirely on the main
55413 55427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** b-tree page. */
55414 55428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pCell+nCell+1==pPage->aDataEnd );
55415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = sqlite3VdbeRecordCompare(nCell, (void*)&pCell[1], pIdxKey);
55429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c = xRecordCompare(nCell, (void*)&pCell[1], pIdxKey, 0);
55416 55430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( !(pCell[1] & 0x80)
55417 55431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (nCell = ((nCell&0x7f)<<7) + pCell[1])<=pPage->maxLocal
55418 55432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
55419 55433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The record-size field is a 2 byte varint and the record
55420 55434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fits entirely on the main b-tree page. */
55421 55435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pCell+nCell+2==pPage->aDataEnd );
55422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = sqlite3VdbeRecordCompare(nCell, (void*)&pCell[2], pIdxKey);
55436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c = xRecordCompare(nCell, (void*)&pCell[2], pIdxKey, 0);
55423 55437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
55424 55438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The record flows over onto one or more overflow pages. In
55425 55439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this case the whole cell needs to be parsed, a buffer allocated
55426 55440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and accessPayload() used to retrieve the record into the
55427 55441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** buffer before VdbeRecordCompare() can be called. */
@@ -55438,11 +55452,11 @@
55438 55452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
55439 55453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
55440 55454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pCellKey);
55441 55455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto moveto_finish;
55442 55456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = sqlite3VdbeRecordCompare(nCell, pCellKey, pIdxKey);
55457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c = xRecordCompare(nCell, pCellKey, pIdxKey, 0);
55444 55458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pCellKey);
55445 55459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55446 55460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c<0 ){
55447 55461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lwr = idx+1;
55448 55462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c>0 ){
@@ -60001,10 +60015,46 @@
60001 60015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This file contains code use to manipulate "Mem" structure. A "Mem"
60002 60016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** stores a single value in the VDBE. Mem is an opaque structure visible
60003 60017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** only within the VDBE. Interface routines refer to a Mem using the
60004 60018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** name sqlite_value
60005 60019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
60021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
60022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
60023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Check invariants on a Mem object.
60024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
60025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine is intended for use inside of assert() statements, like
60026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this: assert( sqlite3VdbeCheckMemInvariants(pMem) );
60027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
60028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeCheckMemInvariants(Mem *p){
60029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The MEM_Dyn bit is set if and only if Mem.xDel is a non-NULL destructor
60030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** function for Mem.z
60031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
60032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (p->flags & MEM_Dyn)==0 || p->xDel!=0 );
60033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (p->flags & MEM_Dyn)!=0 || p->xDel==0 );
60034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
60035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If p holds a string or blob, the Mem.z must point to exactly
60036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** one of the following:
60037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
60038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (1) Memory in Mem.zMalloc and managed by the Mem object
60039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (2) Memory to be freed using Mem.xDel
60040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3) An ephermal string or blob
60041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (4) A static string or blob
60042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
60043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->flags & (MEM_Str|MEM_Blob)) && p->z!=0 ){
60044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(
60045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((p->z==p->zMalloc)? 1 : 0) +
60046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((p->flags&MEM_Dyn)!=0 ? 1 : 0) +
60047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((p->flags&MEM_Ephem)!=0 ? 1 : 0) +
60048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((p->flags&MEM_Static)!=0 ? 1 : 0) == 1
60049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
60050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
60051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
60052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
60053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
60054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
60055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
60006 60056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60007 60057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
60008 60058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If pMem is an object with a valid string representation, this routine
60009 60059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ensures the internal encoding for the string representation is
60010 60060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'desiredEnc', one of SQLITE_UTF8, SQLITE_UTF16LE or SQLITE_UTF16BE.
@@ -60051,16 +60101,11 @@
60051 60101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pMem->z into the new allocation. pMem must be either a string or
60052 60102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blob if bPreserve is true. If bPreserve is false, any prior content
60053 60103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in pMem->z is discarded.
60054 60104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60055 60105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
60056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( 1 >=
60057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((pMem->zMalloc && pMem->zMalloc==pMem->z) ? 1 : 0) +
60058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (((pMem->flags&MEM_Dyn)&&pMem->xDel) ? 1 : 0) +
60059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((pMem->flags&MEM_Ephem) ? 1 : 0) +
60060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((pMem->flags&MEM_Static) ? 1 : 0)
60061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
60106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(pMem) );
60062 60107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pMem->flags&MEM_RowSet)==0 );
60063 60108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60064 60109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the bPreserve flag is set to true, then the memory cell must already
60065 60110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contain a valid string or blob value. */
60066 60111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( bPreserve==0 || pMem->flags&(MEM_Blob|MEM_Str) );
@@ -60074,26 +60119,26 @@
60074 60119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
60075 60120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(pMem->db, pMem->zMalloc);
60076 60121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->zMalloc = sqlite3DbMallocRaw(pMem->db, n);
60077 60122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60078 60123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMem->zMalloc==0 ){
60079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemRelease(pMem);
60124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeMemRelease(pMem);
60080 60125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Null;
60081 60126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM;
60082 60127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60083 60128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60084 60129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60085 60130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMem->z && bPreserve && pMem->z!=pMem->zMalloc ){
60086 60131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pMem->zMalloc, pMem->z, pMem->n);
60087 60132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pMem->flags&MEM_Dyn)!=0 && pMem->xDel ){
60089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pMem->xDel!=SQLITE_DYNAMIC );
60133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pMem->flags&MEM_Dyn)!=0 ){
60134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pMem->xDel!=0 && pMem->xDel!=SQLITE_DYNAMIC );
60090 60135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->xDel((void *)(pMem->z));
60091 60136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60092 60137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60093 60138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->z = pMem->zMalloc;
60094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags &= ~(MEM_Ephem|MEM_Static);
60139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags &= ~(MEM_Dyn|MEM_Ephem|MEM_Static);
60095 60140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->xDel = 0;
60096 60141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
60097 60142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60098 60143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60099 60144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -60258,13 +60303,13 @@
60258 60303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db==0 || sqlite3_mutex_held(p->db->mutex) );
60259 60304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags&MEM_Agg ){
60260 60305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemFinalize(p, p->u.pDef);
60261 60306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->flags & MEM_Agg)==0 );
60262 60307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(p);
60263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( p->flags&MEM_Dyn && p->xDel ){
60308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( p->flags&MEM_Dyn ){
60264 60309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->flags&MEM_RowSet)==0 );
60265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->xDel!=SQLITE_DYNAMIC );
60310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->xDel!=SQLITE_DYNAMIC && p->xDel!=0 );
60266 60311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xDel((void *)p->z);
60267 60312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xDel = 0;
60268 60313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->flags&MEM_RowSet ){
60269 60314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RowSetClear(p->u.pRowSet);
60270 60315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->flags&MEM_Frame ){
@@ -60276,10 +60321,11 @@
60276 60321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Release any memory held by the Mem. This may leave the Mem in an
60277 60322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inconsistent state, for example with (Mem.z==0) and
60278 60323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (Mem.memType==MEM_Str).
60279 60324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60280 60325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p){
60326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(p) );
60281 60327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeMemRelease(p);
60282 60328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->zMalloc ){
60283 60329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(p->db, p->zMalloc);
60284 60330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zMalloc = 0;
60285 60331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -60613,10 +60659,11 @@
60613 60659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60614 60660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pFrom->flags & MEM_RowSet)==0 );
60615 60661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeMemRelease(pTo);
60616 60662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pTo, pFrom, MEMCELLSIZE);
60617 60663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTo->flags &= ~MEM_Dyn;
60664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTo->xDel = 0;
60618 60665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60619 60666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTo->flags&(MEM_Str|MEM_Blob) ){
60620 60667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==(pFrom->flags&MEM_Static) ){
60621 60668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTo->flags |= MEM_Ephem;
60622 60669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeMemMakeWriteable(pTo);
@@ -60738,123 +60785,10 @@
60738 60785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60739 60786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60740 60787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
60741 60788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60742 60789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
60744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Compare the values contained by the two memory cells, returning
60745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** negative, zero or positive if pMem1 is less than, equal to, or greater
60746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** than pMem2. Sorting order is NULL's first, followed by numbers (integers
60747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and reals) sorted numerically, followed by text ordered by the collating
60748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sequence pColl and finally blob's ordered by memcmp().
60749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
60750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Two NULL values are considered equal by this function.
60751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
60752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){
60753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc;
60754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int f1, f2;
60755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int combined_flags;
60756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- f1 = pMem1->flags;
60758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- f2 = pMem2->flags;
60759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- combined_flags = f1|f2;
60760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (combined_flags & MEM_RowSet)==0 );
60761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If one value is NULL, it is less than the other. If both values
60763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** are NULL, return 0.
60764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
60765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( combined_flags&MEM_Null ){
60766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return (f2&MEM_Null) - (f1&MEM_Null);
60767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If one value is a number and the other is not, the number is less.
60770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If both are numbers, compare as reals if one is a real, or as integers
60771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if both values are integers.
60772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
60773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( combined_flags&(MEM_Int|MEM_Real) ){
60774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- double r1, r2;
60775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f1 & f2 & MEM_Int)!=0 ){
60776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem1->u.i < pMem2->u.i ) return -1;
60777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem1->u.i > pMem2->u.i ) return 1;
60778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
60779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f1&MEM_Real)!=0 ){
60781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = pMem1->r;
60782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (f1&MEM_Int)!=0 ){
60783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = (double)pMem1->u.i;
60784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
60785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
60786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f2&MEM_Real)!=0 ){
60788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2 = pMem2->r;
60789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (f2&MEM_Int)!=0 ){
60790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2 = (double)pMem2->u.i;
60791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
60792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return -1;
60793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( r1<r2 ) return -1;
60795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( r1>r2 ) return 1;
60796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
60797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If one value is a string and the other is a blob, the string is less.
60800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If both are strings, compare using the collating functions.
60801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
60802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( combined_flags&MEM_Str ){
60803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f1 & MEM_Str)==0 ){
60804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
60805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f2 & MEM_Str)==0 ){
60807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return -1;
60808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pMem1->enc==pMem2->enc );
60811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pMem1->enc==SQLITE_UTF8 ||
60812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem1->enc==SQLITE_UTF16LE || pMem1->enc==SQLITE_UTF16BE );
60813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The collation sequence must be defined at this point, even if
60815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the user deletes the collation sequence after the vdbe program is
60816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** compiled (this was not always the case).
60817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
60818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !pColl || pColl->xCmp );
60819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pColl ){
60821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem1->enc==pColl->enc ){
60822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The strings are already in the correct encoding. Call the
60823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** comparison function directly */
60824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pColl->xCmp(pColl->pUser,pMem1->n,pMem1->z,pMem2->n,pMem2->z);
60825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
60826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const void *v1, *v2;
60827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n1, n2;
60828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Mem c1;
60829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Mem c2;
60830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(&c1, 0, sizeof(c1));
60831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(&c2, 0, sizeof(c2));
60832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemShallowCopy(&c1, pMem1, MEM_Ephem);
60833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemShallowCopy(&c2, pMem2, MEM_Ephem);
60834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v1 = sqlite3ValueText((sqlite3_value*)&c1, pColl->enc);
60835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n1 = v1==0 ? 0 : c1.n;
60836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v2 = sqlite3ValueText((sqlite3_value*)&c2, pColl->enc);
60837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n2 = v2==0 ? 0 : c2.n;
60838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = pColl->xCmp(pColl->pUser, n1, v1, n2, v2);
60839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemRelease(&c1);
60840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemRelease(&c2);
60841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
60842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If a NULL pointer was passed as the collate function, fall through
60845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to the blob case and use memcmp(). */
60846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Both values must be blobs. Compare using memcmp(). */
60849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = memcmp(pMem1->z, pMem2->z, (pMem1->n>pMem2->n)?pMem2->n:pMem1->n);
60850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==0 ){
60851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = pMem1->n - pMem2->n;
60852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
60854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
60855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
60856 60790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
60857 60791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Move data out of a btree key or data field and into a Mem structure.
60858 60792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The data or key is taken from the entry that pCur is currently pointing
60859 60793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to. offset and amt determine what portion of the data or key to retrieve.
60860 60794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** key is true to get the key or false to get data. The result is written
@@ -60892,11 +60826,11 @@
60892 60826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( offset+amt<=available ){
60893 60827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(pMem);
60894 60828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->z = &zData[offset];
60895 60829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Blob|MEM_Ephem;
60896 60830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( SQLITE_OK==(rc = sqlite3VdbeMemGrow(pMem, amt+2, 0)) ){
60897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags = MEM_Blob|MEM_Dyn|MEM_Term;
60831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags = MEM_Blob|MEM_Term;
60898 60832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = 0;
60899 60833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->memType = MEM_Blob;
60900 60834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( key ){
60901 60835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeKey(pCur, offset, amt, pMem->z);
60902 60836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -61010,11 +60944,10 @@
61010 60944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRec ){
61011 60945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->pKeyInfo = sqlite3KeyInfoOfIndex(p->pParse, pIdx);
61012 60946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRec->pKeyInfo ){
61013 60947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRec->pKeyInfo->nField+pRec->pKeyInfo->nXField==nCol );
61014 60948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRec->pKeyInfo->enc==ENC(db) );
61015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRec->flags = UNPACKED_PREFIX_MATCH;
61016 60949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem = (Mem *)((u8*)pRec + ROUND8(sizeof(UnpackedRecord)));
61017 60950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nCol; i++){
61018 60951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem[i].flags = MEM_Null;
61019 60952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem[i].memType = MEM_Null;
61020 60953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem[i].db = db;
@@ -62591,10 +62524,11 @@
62591 62524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62592 62525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
62593 62526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62594 62527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pEnd=&p[N]; p<pEnd; p++){
62595 62528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (&p[1])==pEnd || p[0].db==p[1].db );
62529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(p) );
62596 62530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62597 62531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This block is really an inlined version of sqlite3VdbeMemRelease()
62598 62532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that takes advantage of the fact that the memory cell value is
62599 62533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** being set to NULL after releasing any dynamic resources.
62600 62534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -62784,11 +62718,11 @@
62784 62718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62785 62719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pMem, 32, 0) ){ /* P4 */
62786 62720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db->mallocFailed );
62787 62721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
62788 62722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags = MEM_Dyn|MEM_Str|MEM_Term;
62723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags = MEM_Str|MEM_Term;
62790 62724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zP4 = displayP4(pOp, pMem->z, 32);
62791 62725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zP4!=pMem->z ){
62792 62726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetStr(pMem, zP4, -1, SQLITE_UTF8, 0);
62793 62727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
62794 62728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pMem->z!=0 );
@@ -62801,11 +62735,11 @@
62801 62735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->explain==1 ){
62802 62736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pMem, 4, 0) ){
62803 62737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db->mallocFailed );
62804 62738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
62805 62739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags = MEM_Dyn|MEM_Str|MEM_Term;
62740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags = MEM_Str|MEM_Term;
62807 62741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = 2;
62808 62742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(3, pMem->z, "%.2x", pOp->p5); /* P5 */
62809 62743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->memType = MEM_Str;
62810 62744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
62811 62745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
@@ -62813,11 +62747,11 @@
62813 62747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
62814 62748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pMem, 500, 0) ){
62815 62749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db->mallocFailed );
62816 62750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
62817 62751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags = MEM_Dyn|MEM_Str|MEM_Term;
62752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags = MEM_Str|MEM_Term;
62819 62753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = displayComment(pOp, zP4, pMem->z, 500);
62820 62754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->memType = MEM_Str;
62821 62755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
62822 62756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
62823 62757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Null; /* Comment */
@@ -64312,10 +64246,18 @@
64312 64246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64313 64247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* NULL or constants 0 or 1 */
64314 64248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
64315 64249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64316 64250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Input "x" is a sequence of unsigned characters that represent a
64252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** big-endian integer. Return the equivalent native integer
64253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ONE_BYTE_INT(x) ((i8)(x)[0])
64255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TWO_BYTE_INT(x) (256*(i8)((x)[0])|(x)[1])
64256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define THREE_BYTE_INT(x) (65536*(i8)((x)[0])|((x)[1]<<8)|(x)[2])
64257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define FOUR_BYTE_UINT(x) (((u32)(x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])
64258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64317 64259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
64318 64260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Deserialize the data blob pointed to by buf as serial type serial_type
64319 64261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and store the result in pMem. Return the number of bytes read.
64320 64262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
64321 64263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(
@@ -64323,46 +64265,40 @@
64323 64265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 serial_type, /* Serial type to deserialize */
64324 64266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pMem /* Memory cell to write value into */
64325 64267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
64326 64268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 x;
64327 64269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 y;
64328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
64329 64270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( serial_type ){
64330 64271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 10: /* Reserved for future use */
64331 64272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 11: /* Reserved for future use */
64332 64273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 0: { /* NULL */
64333 64274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Null;
64334 64275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
64335 64276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64336 64277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1: { /* 1-byte signed integer */
64337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->u.i = (signed char)buf[0];
64278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->u.i = ONE_BYTE_INT(buf);
64338 64279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
64339 64280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
64340 64281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64341 64282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 2: { /* 2-byte signed integer */
64342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i = 256*(signed char)buf[0] | buf[1];
64343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->u.i = (i64)i;
64283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->u.i = TWO_BYTE_INT(buf);
64344 64284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
64345 64285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 2;
64346 64286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64347 64287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 3: { /* 3-byte signed integer */
64348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i = 65536*(signed char)buf[0] | (buf[1]<<8) | buf[2];
64349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->u.i = (i64)i;
64288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->u.i = THREE_BYTE_INT(buf);
64350 64289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
64351 64290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 3;
64352 64291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64353 64292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 4: { /* 4-byte signed integer */
64354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- y = ((unsigned)buf[0]<<24) | (buf[1]<<16) | (buf[2]<<8) | buf[3];
64293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y = FOUR_BYTE_UINT(buf);
64355 64294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = (i64)*(int*)&y;
64356 64295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
64357 64296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 4;
64358 64297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64359 64298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 5: { /* 6-byte signed integer */
64360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- x = 256*(signed char)buf[0] + buf[1];
64361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- y = ((unsigned)buf[2]<<24) | (buf[3]<<16) | (buf[4]<<8) | buf[5];
64362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- x = (x<<32) | y;
64363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->u.i = *(i64*)&x;
64299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->u.i = FOUR_BYTE_UINT(buf+2) + (((i64)1)<<32)*TWO_BYTE_INT(buf);
64364 64300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
64365 64301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 6;
64366 64302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64367 64303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 6: /* 8-byte signed integer */
64368 64304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 7: { /* IEEE floating point */
@@ -64376,12 +64312,12 @@
64376 64312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const double r1 = 1.0;
64377 64313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 t2 = t1;
64378 64314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
swapMixedEndianFloat(t2);
64379 64315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sizeof(r1)==sizeof(t2) && memcmp(&r1, &t2, sizeof(r1))==0 );
64380 64316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
64381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- x = ((unsigned)buf[0]<<24) | (buf[1]<<16) | (buf[2]<<8) | buf[3];
64382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- y = ((unsigned)buf[4]<<24) | (buf[5]<<16) | (buf[6]<<8) | buf[7];
64317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x = FOUR_BYTE_UINT(buf);
64318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y = FOUR_BYTE_UINT(buf+4);
64383 64319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x = (x<<32) | y;
64384 64320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( serial_type==6 ){
64385 64321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = *(i64*)&x;
64386 64322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
64387 64323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -64473,11 +64409,11 @@
64473 64409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 idx; /* Offset in aKey[] to read from */
64474 64410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 u; /* Unsigned loop counter */
64475 64411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 szHdr;
64476 64412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pMem = p->aMem;
64477 64413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->flags = 0;
64414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->default_rc = 0;
64479 64415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
64480 64416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idx = getVarint32(aKey, szHdr);
64481 64417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
d = szHdr;
64482 64418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u = 0;
64483 64419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( idx<szHdr && u<p->nField && d<=nKey ){
@@ -64494,30 +64430,22 @@
64494 64430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64495 64431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( u<=pKeyInfo->nField + 1 );
64496 64432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nField = u;
64497 64433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64498 64434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_DEBUG
64499 64436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
64500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function compares the two table rows or index records
64501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** specified by {nKey1, pKey1} and pPKey2. It returns a negative, zero
64502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or positive integer if key1 is less than, equal to or
64503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** greater than key2. The {nKey1, pKey1} key must be a blob
64504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** created by th OP_MakeRecord opcode of the VDBE. The pPKey2
64505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** key must be a parsed key such as obtained from
64506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3VdbeParseRecord.
64507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
64508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Key1 and Key2 do not have to contain the same number of fields.
64509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The key with fewer fields is usually compares less than the
64510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** longer key. However if the UNPACKED_INCRKEY flags in pPKey2 is set
64511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and the common prefixes are equal, then key1 is less than key2.
64512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Or if the UNPACKED_MATCH_PREFIX flag is set and the prefixes are
64513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** equal, then the keys are considered to be equal and
64514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the parts beyond the common prefix are ignored.
64437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function compares two index or table record keys in the same way
64438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as the sqlite3VdbeRecordCompare() routine. Unlike VdbeRecordCompare(),
64439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this function deserializes and compares values using the
64440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3VdbeSerialGet() and sqlite3MemCompare() functions. It is used
64441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in assert() statements to ensure that the optimized code in
64442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3VdbeRecordCompare() returns results with these two primitives.
64515 64443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
64516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
64444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int vdbeRecordCompareDebug(
64517 64445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKey1, const void *pKey1, /* Left key */
64518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- UnpackedRecord *pPKey2 /* Right key */
64446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const UnpackedRecord *pPKey2 /* Right key */
64519 64447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
64520 64448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 d1; /* Offset into aKey[] of next data element */
64521 64449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 idx1; /* Offset into aKey[] of next header element */
64522 64450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 szHdr1; /* Number of bytes in header */
64523 64451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i = 0;
@@ -64587,28 +64515,558 @@
64587 64515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory leak and a need to call sqlite3VdbeMemRelease(&mem1).
64588 64516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
64589 64517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( mem1.zMalloc==0 );
64590 64518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64591 64519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* rc==0 here means that one of the keys ran out of fields and
64592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** all the fields up to that point were equal. If the UNPACKED_INCRKEY
64593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** flag is set, then break the tie by treating key2 as larger.
64594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the UPACKED_PREFIX_MATCH flag is set, then keys with common prefixes
64595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** are considered to be equal. Otherwise, the longer key is the
64596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** larger. As it happens, the pPKey2 will always be the longer
64597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if there is a difference.
64598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
64599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( rc==0 );
64600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pPKey2->flags & UNPACKED_INCRKEY ){
64601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = -1;
64602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pPKey2->flags & UNPACKED_PREFIX_MATCH ){
64603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Leave rc==0 */
64604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( idx1<szHdr1 ){
64605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = 1;
64606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
64607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
64608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
64609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
64520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** all the fields up to that point were equal. Return the the default_rc
64521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** value. */
64522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pPKey2->default_rc;
64523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
64525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Both *pMem1 and *pMem2 contain string values. Compare the two values
64528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** using the collation sequence pColl. As usual, return a negative , zero
64529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or positive value if *pMem1 is less than, equal to or greater than
64530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** *pMem2, respectively. Similar in spirit to "rc = (*pMem1) - (*pMem2);".
64531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int vdbeCompareMemString(
64533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const Mem *pMem1,
64534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const Mem *pMem2,
64535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const CollSeq *pColl
64536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
64537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pMem1->enc==pColl->enc ){
64538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The strings are already in the correct encoding. Call the
64539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** comparison function directly */
64540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pColl->xCmp(pColl->pUser,pMem1->n,pMem1->z,pMem2->n,pMem2->z);
64541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
64543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const void *v1, *v2;
64544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n1, n2;
64545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mem c1;
64546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mem c2;
64547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&c1, 0, sizeof(c1));
64548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&c2, 0, sizeof(c2));
64549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeMemShallowCopy(&c1, pMem1, MEM_Ephem);
64550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeMemShallowCopy(&c2, pMem2, MEM_Ephem);
64551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v1 = sqlite3ValueText((sqlite3_value*)&c1, pColl->enc);
64552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n1 = v1==0 ? 0 : c1.n;
64553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v2 = sqlite3ValueText((sqlite3_value*)&c2, pColl->enc);
64554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n2 = v2==0 ? 0 : c2.n;
64555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = pColl->xCmp(pColl->pUser, n1, v1, n2, v2);
64556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeMemRelease(&c1);
64557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeMemRelease(&c2);
64558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
64559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compare the values contained by the two memory cells, returning
64564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** negative, zero or positive if pMem1 is less than, equal to, or greater
64565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** than pMem2. Sorting order is NULL's first, followed by numbers (integers
64566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and reals) sorted numerically, followed by text ordered by the collating
64567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sequence pColl and finally blob's ordered by memcmp().
64568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
64569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Two NULL values are considered equal by this function.
64570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){
64572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
64573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int f1, f2;
64574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int combined_flags;
64575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f1 = pMem1->flags;
64577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f2 = pMem2->flags;
64578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ combined_flags = f1|f2;
64579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (combined_flags & MEM_RowSet)==0 );
64580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If one value is NULL, it is less than the other. If both values
64582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** are NULL, return 0.
64583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( combined_flags&MEM_Null ){
64585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (f2&MEM_Null) - (f1&MEM_Null);
64586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If one value is a number and the other is not, the number is less.
64589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If both are numbers, compare as reals if one is a real, or as integers
64590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if both values are integers.
64591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( combined_flags&(MEM_Int|MEM_Real) ){
64593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double r1, r2;
64594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f1 & f2 & MEM_Int)!=0 ){
64595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pMem1->u.i < pMem2->u.i ) return -1;
64596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pMem1->u.i > pMem2->u.i ) return 1;
64597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
64598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f1&MEM_Real)!=0 ){
64600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = pMem1->r;
64601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (f1&MEM_Int)!=0 ){
64602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = (double)pMem1->u.i;
64603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
64605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f2&MEM_Real)!=0 ){
64607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = pMem2->r;
64608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (f2&MEM_Int)!=0 ){
64609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = (double)pMem2->u.i;
64610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
64612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( r1<r2 ) return -1;
64614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( r1>r2 ) return 1;
64615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
64616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If one value is a string and the other is a blob, the string is less.
64619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If both are strings, compare using the collating functions.
64620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( combined_flags&MEM_Str ){
64622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f1 & MEM_Str)==0 ){
64623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
64624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f2 & MEM_Str)==0 ){
64626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
64627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pMem1->enc==pMem2->enc );
64630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pMem1->enc==SQLITE_UTF8 ||
64631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem1->enc==SQLITE_UTF16LE || pMem1->enc==SQLITE_UTF16BE );
64632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The collation sequence must be defined at this point, even if
64634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the user deletes the collation sequence after the vdbe program is
64635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** compiled (this was not always the case).
64636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !pColl || pColl->xCmp );
64638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pColl ){
64640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return vdbeCompareMemString(pMem1, pMem2, pColl);
64641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If a NULL pointer was passed as the collate function, fall through
64643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to the blob case and use memcmp(). */
64644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Both values must be blobs. Compare using memcmp(). */
64647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = memcmp(pMem1->z, pMem2->z, (pMem1->n>pMem2->n)?pMem2->n:pMem1->n);
64648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==0 ){
64649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = pMem1->n - pMem2->n;
64650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
64652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The first argument passed to this function is a serial-type that
64657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** corresponds to an integer - all values between 1 and 9 inclusive
64658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** except 7. The second points to a buffer containing an integer value
64659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** serialized according to serial_type. This function deserializes
64660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and returns the value.
64661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static i64 vdbeRecordDecodeInt(u32 serial_type, const u8 *aKey){
64663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 y;
64664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB || (serial_type>=1 && serial_type<=9 && serial_type!=7) );
64665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( serial_type ){
64666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 0:
64667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 1:
64668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return ONE_BYTE_INT(aKey);
64669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 2:
64670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return TWO_BYTE_INT(aKey);
64671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 3:
64672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return THREE_BYTE_INT(aKey);
64673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 4: {
64674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y = FOUR_BYTE_UINT(aKey);
64675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (i64)*(int*)&y;
64676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 5: {
64678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return FOUR_BYTE_UINT(aKey+2) + (((i64)1)<<32)*TWO_BYTE_INT(aKey);
64679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 6: {
64681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 x = FOUR_BYTE_UINT(aKey);
64682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x = (x<<32) | FOUR_BYTE_UINT(aKey+4);
64683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (i64)*(i64*)&x;
64684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (serial_type - 8);
64688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function compares the two table rows or index records
64692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** specified by {nKey1, pKey1} and pPKey2. It returns a negative, zero
64693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or positive integer if key1 is less than, equal to or
64694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** greater than key2. The {nKey1, pKey1} key must be a blob
64695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** created by th OP_MakeRecord opcode of the VDBE. The pPKey2
64696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key must be a parsed key such as obtained from
64697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3VdbeParseRecord.
64698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
64699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If argument bSkip is non-zero, it is assumed that the caller has already
64700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** determined that the first fields of the keys are equal.
64701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
64702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Key1 and Key2 do not have to contain the same number of fields. If all
64703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fields that appear in both keys are equal, then pPKey2->default_rc is
64704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** returned.
64705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
64707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nKey1, const void *pKey1, /* Left key */
64708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const UnpackedRecord *pPKey2, /* Right key */
64709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bSkip /* If true, skip the first field */
64710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
64711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 d1; /* Offset into aKey[] of next data element */
64712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i; /* Index of next field to compare */
64713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int szHdr1; /* Size of record header in bytes */
64714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 idx1; /* Offset of first type in header */
64715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = 0; /* Return value */
64716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mem *pRhs = pPKey2->aMem; /* Next field of pPKey2 to compare */
64717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ KeyInfo *pKeyInfo = pPKey2->pKeyInfo;
64718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const unsigned char *aKey1 = (const unsigned char *)pKey1;
64719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mem mem1;
64720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If bSkip is true, then the caller has already determined that the first
64722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** two elements in the keys are equal. Fix the various stack variables so
64723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that this routine begins comparing at the second field. */
64724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bSkip ){
64725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 s1;
64726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ idx1 = 1 + getVarint32(&aKey1[1], s1);
64727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ szHdr1 = aKey1[0];
64728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ d1 = szHdr1 + sqlite3VdbeSerialTypeLen(s1);
64729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = 1;
64730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRhs++;
64731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ idx1 = getVarint32(aKey1, szHdr1);
64733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ d1 = szHdr1;
64734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = 0;
64735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA_ONLY( mem1.zMalloc = 0; ) /* Only needed by assert() statements */
64738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPKey2->pKeyInfo->nField+pPKey2->pKeyInfo->nXField>=pPKey2->nField
64739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || CORRUPT_DB );
64740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPKey2->pKeyInfo->aSortOrder!=0 );
64741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPKey2->pKeyInfo->nField>0 );
64742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( idx1<=szHdr1 || CORRUPT_DB );
64743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{
64744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 serial_type;
64745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* RHS is an integer */
64747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRhs->flags & MEM_Int ){
64748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ serial_type = aKey1[idx1];
64749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( serial_type>=12 ){
64750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = +1;
64751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( serial_type==0 ){
64752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( serial_type==7 ){
64754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double rhs = (double)pRhs->u.i;
64755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);
64756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( mem1.r<rhs ){
64757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( mem1.r>rhs ){
64759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = +1;
64760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 lhs = vdbeRecordDecodeInt(serial_type, &aKey1[d1]);
64763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 rhs = pRhs->u.i;
64764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( lhs<rhs ){
64765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( lhs>rhs ){
64767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = +1;
64768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* RHS is real */
64773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if( pRhs->flags & MEM_Real ){
64774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ serial_type = aKey1[idx1];
64775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( serial_type>=12 ){
64776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = +1;
64777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( serial_type==0 ){
64778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double rhs = pRhs->r;
64781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double lhs;
64782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);
64783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( serial_type==7 ){
64784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = mem1.r;
64785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = (double)mem1.u.i;
64787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( lhs<rhs ){
64789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( lhs>rhs ){
64791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = +1;
64792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* RHS is a string */
64797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if( pRhs->flags & MEM_Str ){
64798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ getVarint32(&aKey1[idx1], serial_type);
64799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( serial_type<12 ){
64800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( !(serial_type & 0x01) ){
64802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = +1;
64803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mem1.n = (serial_type - 12) / 2;
64805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (d1+mem1.n) > (unsigned)nKey1 ){
64806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1; /* Corruption */
64807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pKeyInfo->aColl[i] ){
64808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mem1.enc = pKeyInfo->enc;
64809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mem1.db = pKeyInfo->db;
64810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mem1.flags = MEM_Str;
64811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mem1.z = (char*)&aKey1[d1];
64812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeCompareMemString(&mem1, pRhs, pKeyInfo->aColl[i]);
64813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCmp = MIN(mem1.n, pRhs->n);
64815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = memcmp(&aKey1[d1], pRhs->z, nCmp);
64816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==0 ) rc = mem1.n - pRhs->n;
64817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* RHS is a blob */
64822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if( pRhs->flags & MEM_Blob ){
64823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ getVarint32(&aKey1[idx1], serial_type);
64824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( serial_type<12 || (serial_type & 0x01) ){
64825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -1;
64826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nStr = (serial_type - 12) / 2;
64828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (d1+nStr) > (unsigned)nKey1 ){
64829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1; /* Corruption */
64830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCmp = MIN(nStr, pRhs->n);
64832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = memcmp(&aKey1[d1], pRhs->z, nCmp);
64833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==0 ) rc = nStr - pRhs->n;
64834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* RHS is null */
64839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else{
64840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ serial_type = aKey1[idx1];
64841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = (serial_type!=0);
64842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc!=0 ){
64845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pKeyInfo->aSortOrder[i] ){
64846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = -rc;
64847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB
64849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (rc<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0)
64850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (rc>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0)
64851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
64852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( mem1.zMalloc==0 ); /* See comment below */
64853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
64854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i++;
64857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRhs++;
64858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ d1 += sqlite3VdbeSerialTypeLen(serial_type);
64859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ idx1 += sqlite3VarintLen(serial_type);
64860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( idx1<(unsigned)szHdr1 && i<pPKey2->nField && d1<=(unsigned)nKey1 );
64861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* No memory allocation is ever used on mem1. Prove this using
64863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the following assert(). If the assert() fails, it indicates a
64864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** memory leak and a need to call sqlite3VdbeMemRelease(&mem1). */
64865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( mem1.zMalloc==0 );
64866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* rc==0 here means that one or both of the keys ran out of fields and
64868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** all the fields up to that point were equal. Return the the default_rc
64869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** value. */
64870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB
64871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pPKey2->default_rc==vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)
64872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
64873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pPKey2->default_rc;
64874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function is an optimized version of sqlite3VdbeRecordCompare()
64878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that (a) the first field of pPKey2 is an integer, and (b) the
64879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** size-of-header varint at the start of (pKey1/nKey1) fits in a single
64880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** byte (i.e. is less than 128).
64881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int vdbeRecordCompareInt(
64883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nKey1, const void *pKey1, /* Left key */
64884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const UnpackedRecord *pPKey2, /* Right key */
64885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bSkip /* Ignored */
64886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
64887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const u8 *aKey = &((const u8*)pKey1)[*(const u8*)pKey1 & 0x3F];
64888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int serial_type = ((const u8*)pKey1)[1];
64889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int res;
64890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 y;
64891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 x;
64892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 v = pPKey2->aMem[0].u.i;
64893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 lhs;
64894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(bSkip);
64895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( bSkip==0 );
64897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( serial_type ){
64898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 1: { /* 1-byte signed integer */
64899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = ONE_BYTE_INT(aKey);
64900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 2: { /* 2-byte signed integer */
64903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = TWO_BYTE_INT(aKey);
64904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 3: { /* 3-byte signed integer */
64907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = THREE_BYTE_INT(aKey);
64908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 4: { /* 4-byte signed integer */
64911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y = FOUR_BYTE_UINT(aKey);
64912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = (i64)*(int*)&y;
64913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 5: { /* 6-byte signed integer */
64916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = FOUR_BYTE_UINT(aKey+2) + (((i64)1)<<32)*TWO_BYTE_INT(aKey);
64917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 6: { /* 8-byte signed integer */
64920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x = FOUR_BYTE_UINT(aKey);
64921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x = (x<<32) | FOUR_BYTE_UINT(aKey+4);
64922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = *(i64*)&x;
64923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 8:
64926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = 0;
64927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 9:
64929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lhs = 1;
64930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
64931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This case could be removed without changing the results of running
64933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this code. Including it causes gcc to generate a faster switch
64934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** statement (since the range of switch targets now starts at zero and
64935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is contiguous) but does not cause any duplicate code to be generated
64936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (as gcc is clever enough to combine the two like cases). Other
64937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** compilers might be similar. */
64938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 0: case 7:
64939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 0);
64940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default:
64942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 0);
64943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( v>lhs ){
64946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r1;
64947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( v<lhs ){
64948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r2;
64949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pPKey2->nField>1 ){
64950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The first fields of the two keys are equal. Compare the trailing
64951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fields. */
64952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 1);
64953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The first fields of the two keys are equal and there are no trailing
64955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fields. Return pPKey2->default_rc in this case. */
64956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->default_rc;
64957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (res==0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)==0)
64960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (res<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0)
64961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (res>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0)
64962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || CORRUPT_DB
64963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
64964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return res;
64965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function is an optimized version of sqlite3VdbeRecordCompare()
64969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that (a) the first field of pPKey2 is a string, that (b) the first field
64970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** uses the collation sequence BINARY and (c) that the size-of-header varint
64971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** at the start of (pKey1/nKey1) fits in a single byte.
64972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
64973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int vdbeRecordCompareString(
64974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nKey1, const void *pKey1, /* Left key */
64975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const UnpackedRecord *pPKey2, /* Right key */
64976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bSkip
64977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
64978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const u8 *aKey1 = (const u8*)pKey1;
64979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int serial_type;
64980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int res;
64981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(bSkip);
64982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( bSkip==0 );
64984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ getVarint32(&aKey1[1], serial_type);
64985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( serial_type<12 ){
64987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r1; /* (pKey1/nKey1) is a number or a null */
64988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( !(serial_type & 0x01) ){
64989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r2; /* (pKey1/nKey1) is a blob */
64990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
64991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCmp;
64992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nStr;
64993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int szHdr = aKey1[0];
64994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nStr = (serial_type-12) / 2;
64996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (szHdr + nStr) > nKey1 ) return 0; /* Corruption */
64997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCmp = MIN( pPKey2->aMem[0].n, nStr );
64998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = memcmp(&aKey1[szHdr], pPKey2->aMem[0].z, nCmp);
64999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
65000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res==0 ){
65001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = nStr - pPKey2->aMem[0].n;
65002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res==0 ){
65003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pPKey2->nField>1 ){
65004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 1);
65005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
65006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->default_rc;
65007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( res>0 ){
65009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r2;
65010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
65011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r1;
65012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( res>0 ){
65014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r2;
65015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
65016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pPKey2->r1;
65017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
65020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (res==0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)==0)
65021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (res<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0)
65022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (res>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0)
65023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || CORRUPT_DB
65024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
65025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return res;
65026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
65028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
65029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return a pointer to an sqlite3VdbeRecordCompare() compatible function
65030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** suitable for comparing serialized records to the unpacked record passed
65031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as the only argument.
65032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
65033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE RecordCompare sqlite3VdbeFindCompare(UnpackedRecord *p){
65034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* varintRecordCompareInt() and varintRecordCompareString() both assume
65035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that the size-of-header varint that occurs at the start of each record
65036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fits in a single byte (i.e. is 127 or less). varintRecordCompareInt()
65037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** also assumes that it is safe to overread a buffer by at least the
65038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** maximum possible legal header size plus 8 bytes. Because there is
65039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** guaranteed to be at least 74 (but not 136) bytes of padding following each
65040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** buffer passed to varintRecordCompareInt() this makes it convenient to
65041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** limit the size of the header to 64 bytes in cases where the first field
65042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is an integer.
65043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
65044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The easiest way to enforce this limit is to consider only records with
65045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 13 fields or less. If the first field is an integer, the maximum legal
65046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** header size is (12*5 + 1 + 1) bytes. */
65047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->pKeyInfo->nField + p->pKeyInfo->nXField)<=13 ){
65048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags = p->aMem[0].flags;
65049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pKeyInfo->aSortOrder[0] ){
65050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->r1 = 1;
65051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->r2 = -1;
65052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
65053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->r1 = -1;
65054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->r2 = 1;
65055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & MEM_Int) ){
65057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return vdbeRecordCompareInt;
65058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & (MEM_Int|MEM_Real|MEM_Null|MEM_Blob))==0
65060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && p->pKeyInfo->aColl[0]==0
65061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
65062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return vdbeRecordCompareString;
65063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
65066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3VdbeRecordCompare;
65067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
64610 65068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64611 65069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
64612 65070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pCur points at an index entry created using the OP_MakeRecord opcode.
64613 65071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Read the rowid (the last field in the record) and store it in *rowid.
64614 65072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return SQLITE_OK if everything works, or an error code otherwise.
@@ -64695,23 +65153,23 @@
64695 65153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** omits the rowid at the end. The rowid at the end of the index entry
64696 65154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is ignored as well. Hence, this routine only compares the prefixes
64697 65155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the keys prior to the final rowid, not the entire key.
64698 65156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
64699 65157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
64700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeCursor *pC, /* The cursor to compare against */
64701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- UnpackedRecord *pUnpacked, /* Unpacked version of key to compare against */
64702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *res /* Write the comparison result here */
65158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCursor *pC, /* The cursor to compare against */
65159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const UnpackedRecord *pUnpacked, /* Unpacked version of key */
65160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *res /* Write the comparison result here */
64703 65161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
64704 65162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nCellKey = 0;
64705 65163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
64706 65164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtCursor *pCur = pC->pCursor;
64707 65165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem m;
64708 65166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64709 65167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3BtreeCursorIsValid(pCur) );
64710 65168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VVA_ONLY(rc =) sqlite3BtreeKeySize(pCur, &nCellKey);
64711 65169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK ); /* pCur is always valid so KeySize cannot fail */
64712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* nCellKey will always be between 0 and 0xffffffff because of the say
65170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* nCellKey will always be between 0 and 0xffffffff because of the way
64713 65171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that btreeParseCellPtr() and sqlite3GetVarint32() are implemented */
64714 65172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nCellKey<=0 || nCellKey>0x7fffffff ){
64715 65173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*res = 0;
64716 65174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
64717 65175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -64718,12 +65176,11 @@
64718 65176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&m, 0, sizeof(m));
64719 65177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeMemFromBtree(pC->pCursor, 0, (u32)nCellKey, 1, &m);
64720 65178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
64721 65179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
64722 65180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pUnpacked->flags & UNPACKED_PREFIX_MATCH );
64724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *res = sqlite3VdbeRecordCompare(m.n, m.z, pUnpacked);
65181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *res = sqlite3VdbeRecordCompare(m.n, m.z, pUnpacked, 0);
64725 65182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(&m);
64726 65183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
64727 65184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64728 65185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64729 65186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -66629,11 +67086,11 @@
66629 67086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** does not control the string, it might be deleted without the register
66630 67087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** knowing it.
66631 67088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
66632 67089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine converts an ephemeral string into a dynamically allocated
66633 67090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string that the register itself controls. In other words, it
66634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** converts an MEM_Ephem string into an MEM_Dyn string.
67091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** converts an MEM_Ephem string into a string with P.z==P.zMalloc.
66635 67092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66636 67093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define Deephemeralize(P) \
66637 67094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((P)->flags&MEM_Ephem)!=0 \
66638 67095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3VdbeMemMakeWriteable(P) ){ goto no_mem;}
66639 67096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -67166,22 +67623,25 @@
67166 67623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
67167 67624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pOp->opflags & OPFLG_IN1)!=0 ){
67168 67625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>0 );
67169 67626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1<=(p->nMem-p->nCursor) );
67170 67627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( memIsValid(&aMem[pOp->p1]) );
67628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(&aMem[pOp->p1]) );
67171 67629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p1, &aMem[pOp->p1]);
67172 67630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67173 67631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pOp->opflags & OPFLG_IN2)!=0 ){
67174 67632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2>0 );
67175 67633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2<=(p->nMem-p->nCursor) );
67176 67634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( memIsValid(&aMem[pOp->p2]) );
67635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(&aMem[pOp->p2]) );
67177 67636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p2, &aMem[pOp->p2]);
67178 67637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67179 67638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pOp->opflags & OPFLG_IN3)!=0 ){
67180 67639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p3>0 );
67181 67640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p3<=(p->nMem-p->nCursor) );
67182 67641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( memIsValid(&aMem[pOp->p3]) );
67642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(&aMem[pOp->p3]) );
67183 67643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p3, &aMem[pOp->p3]);
67184 67644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67185 67645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pOp->opflags & OPFLG_OUT2)!=0 ){
67186 67646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2>0 );
67187 67647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2<=(p->nMem-p->nCursor) );
@@ -67279,11 +67739,11 @@
67279 67739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and then jump to address P2.
67280 67740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67281 67741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Gosub: { /* jump */
67282 67742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>0 && pOp->p1<=(p->nMem-p->nCursor) );
67283 67743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
67284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pIn1->flags & MEM_Dyn)==0 );
67744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( VdbeMemDynamic(pIn1)==0 );
67285 67745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memAboutToChange(p, pIn1);
67286 67746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->flags = MEM_Int;
67287 67747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->u.i = pc;
67288 67748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p1, pIn1);
67289 67749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
@@ -67352,11 +67812,11 @@
67352 67812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_EndCoroutine, jump immediately to P2.
67353 67813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67354 67814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Yield: { /* in1, jump */
67355 67815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int pcDest;
67356 67816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
67357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pIn1->flags & MEM_Dyn)==0 );
67817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( VdbeMemDynamic(pIn1)==0 );
67358 67818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->flags = MEM_Int;
67359 67819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcDest = (int)pIn1->u.i;
67360 67820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->u.i = pc;
67361 67821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p1, pIn1);
67362 67822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pcDest;
@@ -67525,14 +67985,13 @@
67525 67985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( encoding!=SQLITE_UTF8 ){
67526 67986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeMemSetStr(pOut, pOp->p4.z, -1, SQLITE_UTF8, SQLITE_STATIC);
67527 67987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_TOOBIG ) goto too_big;
67528 67988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( SQLITE_OK!=sqlite3VdbeChangeEncoding(pOut, encoding) ) goto no_mem;
67529 67989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOut->zMalloc==pOut->z );
67530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOut->flags & MEM_Dyn );
67990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( VdbeMemDynamic(pOut)==0 );
67531 67991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->zMalloc = 0;
67532 67992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->flags |= MEM_Static;
67533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOut->flags &= ~MEM_Dyn;
67534 67993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p4type==P4_DYNAMIC ){
67535 67994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pOp->p4.z);
67536 67995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67537 67996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p4type = P4_DYNAMIC;
67538 67997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p4.z = pOut->z;
@@ -67664,18 +68123,20 @@
67664 68123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
67665 68124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOut<=&aMem[(p->nMem-p->nCursor)] );
67666 68125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1<=&aMem[(p->nMem-p->nCursor)] );
67667 68126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( memIsValid(pIn1) );
67668 68127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memAboutToChange(p, pOut);
68128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeMemRelease(pOut);
67669 68129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zMalloc = pOut->zMalloc;
67670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOut->zMalloc = 0;
67671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemMove(pOut, pIn1);
68130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(pOut, pIn1, sizeof(Mem));
67672 68131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
67673 68132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOut->pScopyFrom>=&aMem[p1] && pOut->pScopyFrom<&aMem[p1+pOp->p3] ){
67674 68133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->pScopyFrom += p1 - pOp->p2;
67675 68134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67676 68135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
68136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn1->flags = MEM_Undefined;
68137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn1->xDel = 0;
67677 68138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->zMalloc = zMalloc;
67678 68139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(p2++, pOut);
67679 68140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1++;
67680 68141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut++;
67681 68142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( n-- );
@@ -67848,14 +68309,14 @@
67848 68309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stringify(pIn2, encoding);
67849 68310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = pIn1->n + pIn2->n;
67850 68311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
67851 68312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto too_big;
67852 68313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- MemSetTypeFlag(pOut, MEM_Str);
67854 68314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pOut, (int)nByte+2, pOut==pIn2) ){
67855 68315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto no_mem;
67856 68316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MemSetTypeFlag(pOut, MEM_Str);
67857 68318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOut!=pIn2 ){
67858 68319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pOut->z, pIn2->z, pIn2->n);
67859 68320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67860 68321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&pOut->z[pIn2->n], pIn1->z, pIn1->n);
67861 68322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->z[nByte]=0;
@@ -69026,10 +69487,11 @@
69026 69487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reach this point if aOffset[p2], aOffset[p2+1], and aType[p2] are
69027 69488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all valid.
69028 69489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69029 69490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p2<pC->nHdrParsed );
69030 69491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK );
69492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeCheckMemInvariants(pDest) );
69031 69493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pC->szRow>=aOffset[p2+1] ){
69032 69494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This is the common case where the desired content fits on the original
69033 69495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page - where the content is not on an overflow page */
69034 69496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeMemRelease(pDest);
69035 69497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSerialGet(pC->aRow+aOffset[p2], aType[p2], pDest);
@@ -69063,12 +69525,12 @@
69063 69525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3VdbeMemFromBtree() call above) then transfer control of that
69064 69526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** dynamically allocated space over to the pDest structure.
69065 69527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This prevents a memory copy. */
69066 69528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sMem.zMalloc ){
69067 69529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sMem.z==sMem.zMalloc );
69068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !(pDest->flags & MEM_Dyn) );
69069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !(pDest->flags & (MEM_Blob|MEM_Str)) || pDest->z==sMem.z );
69530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( VdbeMemDynamic(pDest)==0 );
69531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pDest->flags & (MEM_Blob|MEM_Str))==0 || pDest->z==sMem.z );
69070 69532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->flags &= ~(MEM_Ephem|MEM_Static);
69071 69533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->flags |= MEM_Term;
69072 69534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->z = sMem.z;
69073 69535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->zMalloc = sMem.zMalloc;
69074 69536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -69247,11 +69709,11 @@
69247 69709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i==nHdr );
69248 69710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( j==nByte );
69249 69711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69250 69712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p3>0 && pOp->p3<=(p->nMem-p->nCursor) );
69251 69713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->n = (int)nByte;
69252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOut->flags = MEM_Blob | MEM_Dyn;
69714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut->flags = MEM_Blob;
69253 69715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->xDel = 0;
69254 69716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nZero ){
69255 69717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->u.nZero = nZero;
69256 69718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->flags |= MEM_Zero;
69257 69719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -70121,20 +70583,20 @@
70121 70583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.pKeyInfo = pC->pKeyInfo;
70122 70584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.nField = (u16)nField;
70123 70585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70124 70586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The next line of code computes as follows, only faster:
70125 70587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if( oc==OP_SeekGT || oc==OP_SeekLE ){
70126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** r.flags = UNPACKED_INCRKEY;
70588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** r.default_rc = -1;
70127 70589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** }else{
70128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** r.flags = 0;
70590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** r.default_rc = +1;
70129 70591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** }
70130 70592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r.flags = (u8)(UNPACKED_INCRKEY * (1 & (oc - OP_SeekLT)));
70132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekGT || r.flags==UNPACKED_INCRKEY );
70133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekLE || r.flags==UNPACKED_INCRKEY );
70134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekGE || r.flags==0 );
70135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekLT || r.flags==0 );
70593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r.default_rc = ((1 & (oc - OP_SeekLT)) ? -1 : +1);
70594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekGT || r.default_rc==-1 );
70595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekLE || r.default_rc==-1 );
70596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekGE || r.default_rc==+1 );
70597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekLT || r.default_rc==+1 );
70136 70598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70137 70599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.aMem = &aMem[pOp->p3];
70138 70600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
70139 70601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
70140 70602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -70288,22 +70750,21 @@
70288 70750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExpandBlob(&r.aMem[ii]);
70289 70751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
70290 70752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ii ) REGISTER_TRACE(pOp->p3+ii, &r.aMem[ii]);
70291 70753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
70292 70754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r.flags = UNPACKED_PREFIX_MATCH;
70294 70755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = &r;
70295 70756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70296 70757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = sqlite3VdbeAllocUnpackedRecord(
70297 70758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->pKeyInfo, aTempRec, sizeof(aTempRec), &pFree
70298 70759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
70299 70760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey==0 ) goto no_mem;
70300 70761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn3->flags & MEM_Blob );
70301 70762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pIn3->flags & MEM_Zero)==0 ); /* zeroblobs already expanded */
70302 70763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeRecordUnpack(pC->pKeyInfo, pIn3->n, pIn3->z, pIdxKey);
70303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIdxKey->flags |= UNPACKED_PREFIX_MATCH;
70304 70764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIdxKey->default_rc = 0;
70305 70766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_NoConflict ){
70306 70767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For the OP_NoConflict opcode, take the jump if any of the
70307 70768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** input fields are NULL, since any key with a NULL will not
70308 70769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** conflict */
70309 70770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<r.nField; ii++){
@@ -71188,11 +71649,11 @@
71188 71649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCrsr = pC->pCursor;
71189 71650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCrsr!=0 );
71190 71651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p5==0 );
71191 71652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.pKeyInfo = pC->pKeyInfo;
71192 71653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.nField = (u16)pOp->p3;
71193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r.flags = UNPACKED_PREFIX_MATCH;
71654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r.default_rc = 0;
71194 71655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.aMem = &aMem[pOp->p2];
71195 71656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
71196 71657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
71197 71658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
71198 71659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeMovetoUnpacked(pCrsr, &r, 0, 0, &res);
@@ -71302,14 +71763,14 @@
71302 71763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4type==P4_INT32 );
71303 71764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.pKeyInfo = pC->pKeyInfo;
71304 71765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.nField = (u16)pOp->p4.i;
71305 71766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode<OP_IdxLT ){
71306 71767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode==OP_IdxLE || pOp->opcode==OP_IdxGT );
71307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r.flags = UNPACKED_INCRKEY | UNPACKED_PREFIX_MATCH;
71768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r.default_rc = -1;
71308 71769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
71309 71770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode==OP_IdxGE || pOp->opcode==OP_IdxLT );
71310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r.flags = UNPACKED_PREFIX_MATCH;
71771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r.default_rc = 0;
71311 71772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71312 71773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.aMem = &aMem[pOp->p3];
71313 71774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
71314 71775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
71315 71776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -73809,14 +74270,14 @@
73809 74270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( r2->aMem[i].flags & MEM_Null ){
73810 74271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = -1;
73811 74272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
73812 74273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
73813 74274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
73814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2->flags |= UNPACKED_PREFIX_MATCH;
74275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( r2->default_rc==0 );
73815 74276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
73816 74277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pRes = sqlite3VdbeRecordCompare(nKey1, pKey1, r2);
74278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = sqlite3VdbeRecordCompare(nKey1, pKey1, r2, 0);
73818 74279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
73819 74280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73820 74281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
73821 74282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is called to compare two iterator keys when merging
73822 74283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** multiple b-tree segments. Parameter iOut is the index of the aTree[]
@@ -100117,11 +100578,11 @@
100117 100578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( eDest!=SRT_Exists ){
100118 100579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the destination is an EXISTS(...) expression, the actual
100119 100580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values returned by the SELECT are not required.
100120 100581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100121 100582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeExprList(pParse, pEList, regResult,
100122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (eDest==SRT_Output)?SQLITE_ECEL_DUP:0);
100583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (eDest==SRT_Output||eDest==SRT_Coroutine)?SQLITE_ECEL_DUP:0);
100123 100584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100124 100585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100125 100586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the DISTINCT keyword was present on the SELECT statement
100126 100587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and this row has been seen before, then do not make this row
100127 100588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** part of the result.
@@ -110767,11 +111228,11 @@
110767 111228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCol = pRec->nField - 1;
110768 111229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx->nSample>0 );
110769 111230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRec->nField>0 && iCol<pIdx->nSampleCol );
110770 111231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
110771 111232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTest = (iMin+i)/2;
110772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- res = sqlite3VdbeRecordCompare(aSample[iTest].n, aSample[iTest].p, pRec);
111233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = sqlite3VdbeRecordCompare(aSample[iTest].n, aSample[iTest].p, pRec, 0);
110773 111234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res<0 ){
110774 111235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iMin = iTest+1;
110775 111236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
110776 111237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = iTest;
110777 111238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -110782,20 +111243,20 @@
110782 111243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** above found the right answer. This block serves no purpose other
110783 111244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than to invoke the asserts. */
110784 111245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==0 ){
110785 111246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If (res==0) is true, then sample $i must be equal to pRec */
110786 111247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i<pIdx->nSample );
110787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( 0==sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec)
111248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( 0==sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec, 0)
110788 111249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pParse->db->mallocFailed );
110789 111250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
110790 111251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Otherwise, pRec must be smaller than sample $i and larger than
110791 111252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sample ($i-1). */
110792 111253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i==pIdx->nSample
110793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec)>0
111254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec, 0)>0
110794 111255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pParse->db->mallocFailed );
110795 111256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i==0
110796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || sqlite3VdbeRecordCompare(aSample[i-1].n, aSample[i-1].p, pRec)<0
111257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || sqlite3VdbeRecordCompare(aSample[i-1].n, aSample[i-1].p, pRec, 0)<0
110797 111258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pParse->db->mallocFailed );
110798 111259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110799 111260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* ifdef SQLITE_DEBUG */
110800 111261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110801 111262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* At this point, aSample[i] is the first sample that is greater than
@@ -114724,11 +115185,11 @@
114724 115185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114725 115186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For a co-routine, change all OP_Column references to the table of
114726 115187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the co-routine into OP_SCopy of result contained in a register.
114727 115188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_Rowid becomes OP_Null.
114728 115189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
114729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTabItem->viaCoroutine ){
115190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTabItem->viaCoroutine && !db->mallocFailed ){
114730 115191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
last = sqlite3VdbeCurrentAddr(v);
114731 115192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = pLevel->addrBody;
114732 115193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = sqlite3VdbeGetOp(v, k);
114733 115194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(; k<last; k++, pOp++){
114734 115195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p1!=pLevel->iTabCur ) continue;
114735 115196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!