@@ -16,11 +16,11 @@
16 16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if you want a wrapper to interface SQLite with your choice of programming
17 17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** language. The code for the "sqlite3" command-line shell is also in a
18 18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** separate file. This file contains only code for the core SQLite library.
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The content in this amalgamation comes from Fossil check-in
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** baa83b460c677c210c7fa3f20314d7e05f30.
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** bcc31846964102385d5a21eb5e85d7db153b.
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORE 1
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AMALGAMATION 1
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_PRIVATE
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_PRIVATE static
@@ -462,11 +462,11 @@
462 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
463 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
464 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
465 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.47.0"
466 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3047000
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2024-07-03 20:19:33 baa83b460c677c210c7fa3f20314d7e05f305aed8a69026bc5fa106a3de4ea38"
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2024-07-24 13:53:51 bcc31846964102385d5a21eb5e85d7db153b155e76b4e2847c9453d3d0e1af04"
468 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
469 469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
470 470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
471 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
472 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -16480,10 +16480,23 @@
16480 16480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The names of the following types declared in vdbeInt.h are required
16481 16481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the VdbeOp definition.
16482 16482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
16483 16483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct sqlite3_value Mem;
16484 16484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct SubProgram SubProgram;
16485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct SubrtnSig SubrtnSig;
16486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
16487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
16488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** A signature for a reusable subroutine that materializes the RHS of
16489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an IN operator.
16490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
16491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct SubrtnSig {
16492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int selId; /* SELECT-id for the SELECT statement on the RHS */
16493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zAff; /* Affinity of the overall IN expression */
16494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iTable; /* Ephemeral table generated by the subroutine */
16495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iAddr; /* Subroutine entry address */
16496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int regReturn; /* Register used to hold return address */
16497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
16485 16498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16486 16499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
16487 16500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A single instruction of the virtual machine has an opcode
16488 16501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and as many as three operands. The instruction is recorded
16489 16502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as an instance of the following structure:
@@ -16508,10 +16521,11 @@
16508 16521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VTable *pVtab; /* Used when p4type is P4_VTAB */
16509 16522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo; /* Used when p4type is P4_KEYINFO */
16510 16523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 *ai; /* Used when p4type is P4_INTARRAY */
16511 16524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SubProgram *pProgram; /* Used when p4type is P4_SUBPROGRAM */
16512 16525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* Used when p4type is P4_TABLE */
16526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SubrtnSig *pSubrtnSig; /* Used when p4type is P4_SUBRTNSIG */
16513 16527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_CURSOR_HINTS
16514 16528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr; /* Used when p4type is P4_EXPR */
16515 16529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
16516 16530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} p4;
16517 16531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
@@ -16575,10 +16589,11 @@
16575 16589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P4_REAL (-12) /* P4 is a 64-bit floating point value */
16576 16590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P4_INT64 (-13) /* P4 is a 64-bit signed integer */
16577 16591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P4_INTARRAY (-14) /* P4 is a vector of 32-bit integers */
16578 16592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P4_FUNCCTX (-15) /* P4 is a pointer to an sqlite3_context object */
16579 16593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P4_TABLEREF (-16) /* Like P4_TABLE, but reference counted */
16594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define P4_SUBRTNSIG (-17) /* P4 is a SubrtnSig pointer */
16580 16595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16581 16596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Error message codes for OP_Halt */
16582 16597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P5_ConstraintNotNull 1
16583 16598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P5_ConstraintUnique 2
16584 16599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P5_ConstraintCheck 3
@@ -19807,10 +19822,11 @@
19807 19822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 okConstFactor; /* OK to factor out constants */
19808 19823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableLookaside; /* Number of times lookaside has been disabled */
19809 19824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 prepFlags; /* SQLITE_PREPARE_* flags */
19810 19825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 withinRJSubrtn; /* Nesting level for RIGHT JOIN body subroutines */
19811 19826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bHasWith; /* True if statement contains WITH */
19827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 mSubrtnSig; /* mini Bloom filter on available SubrtnSig.selId */
19812 19828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST)
19813 19829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 earlyCleanup; /* OOM inside sqlite3ParserAddCleanup() */
19814 19830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19815 19831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
19816 19832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 ifNotExists; /* Might be true if IF NOT EXISTS. Assert()s only */
@@ -32829,18 +32845,16 @@
32829 32845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isUsing ) n++;
32830 32846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isUsing ){
32831 32847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewIdList(pView, pItem->u3.pUsing, (--n)>0, "USING");
32832 32848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32833 32849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->pSelect ){
32834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3TreeViewPush(&pView, i+1<pSrc->nSrc);
32835 32850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->pTab ){
32836 32851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pItem->pTab;
32837 32852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewColumnList(pView, pTab->aCol, pTab->nCol, 1);
32838 32853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32839 32854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
32840 32855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSelect(pView, pItem->pSelect, (--n)>0);
32841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3TreeViewPop(&pView);
32842 32856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32843 32857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isTabFunc ){
32844 32858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExprList(pView, pItem->u1.pFuncArg, 0, "func-args:");
32845 32859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32846 32860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewPop(&pView);
@@ -32878,11 +32892,11 @@
32878 32892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cnt++ ) sqlite3TreeViewPop(&pView);
32879 32893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPrior ){
32880 32894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = 1000;
32881 32895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32882 32896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = 0;
32883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pSrc && p->pSrc->nSrc ) n++;
32897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pSrc && p->pSrc->nSrc && p->pSrc->nAlloc ) n++;
32884 32898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pWhere ) n++;
32885 32899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pGroupBy ) n++;
32886 32900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pHaving ) n++;
32887 32901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pOrderBy ) n++;
32888 32902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pLimit ) n++;
@@ -32904,11 +32918,11 @@
32904 32918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewWinFunc(pView, pX, pX->pNextWin!=0);
32905 32919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32906 32920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewPop(&pView);
32907 32921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32908 32922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
32909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pSrc && p->pSrc->nSrc ){
32923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pSrc && p->pSrc->nSrc && p->pSrc->nAlloc ){
32910 32924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewPush(&pView, (n--)>0);
32911 32925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "FROM");
32912 32926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSrcList(pView, p->pSrc);
32913 32927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewPop(&pView);
32914 32928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -54746,10 +54760,11 @@
54746 54760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&pPgHdr->pDirty, 0, sizeof(PgHdr) - offsetof(PgHdr,pDirty));
54747 54761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgHdr->pPage = pPage;
54748 54762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgHdr->pData = pPage->pBuf;
54749 54763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgHdr->pExtra = (void *)&pPgHdr[1];
54750 54764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pPgHdr->pExtra, 0, 8);
54765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( EIGHT_BYTE_ALIGNMENT( pPgHdr->pExtra ) );
54751 54766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgHdr->pCache = pCache;
54752 54767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgHdr->pgno = pgno;
54753 54768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgHdr->flags = PGHDR_CLEAN;
54754 54769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3PcacheFetchFinish(pCache,pgno,pPage);
54755 54770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -55492,11 +55507,12 @@
55492 55507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBulk ){
55493 55508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nBulk = sqlite3MallocSize(zBulk)/pCache->szAlloc;
55494 55509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
55495 55510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr1 *pX = (PgHdr1*)&zBulk[pCache->szPage];
55496 55511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX->page.pBuf = zBulk;
55497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pX->page.pExtra = &pX[1];
55512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pX->page.pExtra = (u8*)pX + ROUND8(sizeof(*pX));
55513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( EIGHT_BYTE_ALIGNMENT( pX->page.pExtra ) );
55498 55514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX->isBulkLocal = 1;
55499 55515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX->isAnchor = 0;
55500 55516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX->pNext = pCache->pFree;
55501 55517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX->pLruPrev = 0; /* Initializing this saves a valgrind error */
55502 55518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->pFree = pX;
@@ -55629,11 +55645,12 @@
55629 55645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1EnterMutex(pCache->pGroup);
55630 55646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
55631 55647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPg==0 ) return 0;
55632 55648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = (PgHdr1 *)&((u8 *)pPg)[pCache->szPage];
55633 55649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->page.pBuf = pPg;
55634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->page.pExtra = &p[1];
55650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->page.pExtra = (u8*)p + ROUND8(sizeof(*p));
55651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( EIGHT_BYTE_ALIGNMENT( p->page.pExtra ) );
55635 55652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->isBulkLocal = 0;
55636 55653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->isAnchor = 0;
55637 55654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLruPrev = 0; /* Initializing this saves a valgrind error */
55638 55655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55639 55656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(*pCache->pnPurgeable)++;
@@ -61188,10 +61205,11 @@
61188 61205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ){
61189 61206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OsUnfetch(pPager->fd, (i64)(pgno-1) * pPager->pageSize, pData);
61190 61207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM_BKPT;
61191 61208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
61192 61209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pExtra = (void *)&p[1];
61210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( EIGHT_BYTE_ALIGNMENT( p->pExtra ) );
61193 61211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags = PGHDR_MMAP;
61194 61212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nRef = 1;
61195 61213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPager = pPager;
61196 61214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
61197 61215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -86272,10 +86290,16 @@
86272 86290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86273 86291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_TABLEREF: {
86274 86292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->pnBytesFreed==0 ) sqlite3DeleteTable(db, (Table*)p4);
86275 86293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
86276 86294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case P4_SUBRTNSIG: {
86296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SubrtnSig *pSig = (SubrtnSig*)p4;
86297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(db, pSig->zAff);
86298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(db, pSig);
86299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
86300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
86277 86301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86278 86302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86279 86303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
86280 86304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
86281 86305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Free the space allocated for aOp and any p4 values allocated for the
@@ -86850,10 +86874,15 @@
86850 86874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
86851 86875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86852 86876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_TABLE: {
86853 86877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zP4 = pOp->p4.pTab->zName;
86854 86878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
86879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
86880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case P4_SUBRTNSIG: {
86881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SubrtnSig *pSig = pOp->p4.pSubrtnSig;
86882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&x, "subrtnsig:%d,%s", pSig->selId, pSig->zAff);
86883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
86855 86884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86856 86885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
86857 86886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zP4 = pOp->p4.z;
86858 86887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86859 86888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -100806,22 +100835,33 @@
100806 100835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100807 100836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_AggInverse:
100808 100837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_AggStep: {
100809 100838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n;
100810 100839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_context *pCtx;
100840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 nAlloc;
100811 100841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100812 100842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4type==P4_FUNCDEF );
100813 100843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pOp->p5;
100814 100844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p3>0 && pOp->p3<=(p->nMem+1 - p->nCursor) );
100815 100845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n==0 || (pOp->p2>0 && pOp->p2+n<=(p->nMem+1 - p->nCursor)+1) );
100816 100846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p3<pOp->p2 || pOp->p3>=pOp->p2+n );
100817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCtx = sqlite3DbMallocRawNN(db, n*sizeof(sqlite3_value*) +
100818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (sizeof(pCtx[0]) + sizeof(Mem) - sizeof(sqlite3_value*)));
100847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Allocate space for (a) the context object and (n-1) extra pointers
100849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to append to the sqlite3_context.argv[1] array, and (b) a memory
100850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cell in which to store the accumulation. Be careful that the memory
100851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cell is 8-byte aligned, even on platforms where a pointer is 32-bits.
100852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
100853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note: We could avoid this by using a regular memory cell from aMem[] for
100854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the accumulator, instead of allocating one here. */
100855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nAlloc = ROUND8P( sizeof(pCtx[0]) + (n-1)*sizeof(sqlite3_value*) );
100856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCtx = sqlite3DbMallocRawNN(db, nAlloc + sizeof(Mem));
100819 100857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCtx==0 ) goto no_mem;
100820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCtx->pMem = 0;
100821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCtx->pOut = (Mem*)&(pCtx->argv[n]);
100858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCtx->pOut = (Mem*)((u8*)pCtx + nAlloc);
100859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( EIGHT_BYTE_ALIGNMENT(pCtx->pOut) );
100860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100822 100861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemInit(pCtx->pOut, db, MEM_Null);
100862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCtx->pMem = 0;
100823 100863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->pFunc = pOp->p4.pFunc;
100824 100864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->iOp = (int)(pOp - aOp);
100825 100865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->pVdbe = p;
100826 100866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->skipFlag = 0;
100827 100867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->isError = 0;
@@ -112478,10 +112518,53 @@
112478 112518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
112479 112519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "row value misused");
112480 112520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112481 112521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112482 112522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_SUBQUERY
112524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
112525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Scan all previously generated bytecode looking for an OP_BeginSubrtn
112526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that is compatible with pExpr. If found, add the y.sub values
112527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to pExpr and return true. If not found, return false.
112528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
112529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int findCompatibleInRhsSubrtn(
112530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pParse, /* Parsing context */
112531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pExpr, /* IN operator with RHS that we want to reuse */
112532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SubrtnSig *pNewSig /* Signature for the IN operator */
112533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
112534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *pOp, *pEnd;
112535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SubrtnSig *pSig;
112536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe *v;
112537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
112538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNewSig==0 ) return 0;
112539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pParse->mSubrtnSig & (1<<(pNewSig->selId&7)))==0 ) return 0;
112540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->op==TK_IN );
112541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseYSub(pExpr) );
112542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
112543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->x.pSelect!=0 );
112544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pExpr->x.pSelect->selFlags & SF_All)==0 );
112545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = pParse->pVdbe;
112546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( v!=0 );
112547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp = sqlite3VdbeGetOp(v, 1);
112548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pEnd = sqlite3VdbeGetLastOp(v);
112549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(; pOp<pEnd; pOp++){
112550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p4type!=P4_SUBRTNSIG ) continue;
112551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode==OP_BeginSubrtn );
112552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig = pOp->p4.pSubrtnSig;
112553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pSig!=0 );
112554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNewSig->selId!=pSig->selId ) continue;
112555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(pNewSig->zAff,pSig->zAff)!=0 ) continue;
112556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->y.sub.iAddr = pSig->iAddr;
112557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->y.sub.regReturn = pSig->regReturn;
112558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->iTable = pSig->iTable;
112559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(pExpr, EP_Subrtn);
112560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
112561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
112563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_OMIT_SUBQUERY */
112565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
112483 112566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
112484 112567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
112485 112568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate code that will construct an ephemeral table containing all terms
112486 112569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the RHS of an IN operator. The IN operator can be in either of two
112487 112570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** forms:
@@ -112527,15 +112610,32 @@
112527 112610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
112528 112611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If all of the above are false, then we can compute the RHS just once
112529 112612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and reuse it many names.
112530 112613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
112531 112614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprHasProperty(pExpr, EP_VarSelect) && pParse->iSelfTab==0 ){
112532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Reuse of the RHS is allowed */
112533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If this routine has already been coded, but the previous code
112534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** might not have been invoked yet, so invoke it now as a subroutine.
112615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Reuse of the RHS is allowed
112616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
112617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compute a signature for the RHS of the IN operator to facility
112618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** finding and reusing prior instances of the same IN operator.
112535 112619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
112536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_Subrtn) ){
112620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SubrtnSig *pSig = 0;
112621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseXSelect(pExpr) || pExpr->x.pSelect!=0 );
112622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) && (pExpr->x.pSelect->selFlags & SF_All)==0 ){
112623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig = sqlite3DbMallocRawNN(pParse->db, sizeof(pSig[0]));
112624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSig ){
112625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig->selId = pExpr->x.pSelect->selId;
112626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig->zAff = exprINAffinity(pParse, pExpr);
112627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
112630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Check to see if there is a prior materialization of the RHS of
112631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this IN operator. If there is, then make use of that prior
112632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** materialization rather than recomputing it.
112633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
112634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr, EP_Subrtn)
112635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || findCompatibleInRhsSubrtn(pParse, pExpr, pSig)
112636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
112537 112637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
112538 112638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
112539 112639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 0, "REUSE LIST SUBQUERY %d",
112540 112640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->x.pSelect->selId));
112541 112641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -112543,10 +112643,14 @@
112543 112643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
112544 112644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.iAddr);
112545 112645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iTab!=pExpr->iTable );
112546 112646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
112547 112647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrOnce);
112648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSig ){
112649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(pParse->db, pSig->zAff);
112650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(pParse->db, pSig);
112651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112548 112652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
112549 112653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112550 112654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112551 112655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Begin coding the subroutine */
112552 112656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprUseYWin(pExpr) );
@@ -112553,11 +112657,17 @@
112553 112657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_Subrtn);
112554 112658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
112555 112659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.regReturn = ++pParse->nMem;
112556 112660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.iAddr =
112557 112661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_BeginSubrtn, 0, pExpr->y.sub.regReturn) + 1;
112558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
112662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSig ){
112663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig->iAddr = pExpr->y.sub.iAddr;
112664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig->regReturn = pExpr->y.sub.regReturn;
112665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSig->iTable = iTab;
112666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->mSubrtnSig = 1 << (pSig->selId&7);
112667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP4(v, -1, (const char*)pSig, P4_SUBRTNSIG);
112668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112559 112669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
112560 112670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112561 112671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112562 112672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if this is a vector IN operator */
112563 112673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pExpr->pLeft;
@@ -112915,13 +113025,11 @@
112915 113025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasVVAProperty(pExpr,EP_Immutable) );
112916 113026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pExpr->pLeft;
112917 113027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprCheckIN(pParse, pExpr) ) return;
112918 113028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zAff = exprINAffinity(pParse, pExpr);
112919 113029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nVector = sqlite3ExprVectorSize(pExpr->pLeft);
112920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aiMap = (int*)sqlite3DbMallocZero(
112921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->db, nVector*(sizeof(int) + sizeof(char)) + 1
112922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
113030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aiMap = (int*)sqlite3DbMallocZero(pParse->db, nVector*sizeof(int));
112923 113031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ) goto sqlite3ExprCodeIN_oom_error;
112924 113032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112925 113033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Attempt to compute the RHS. After this step, if anything other than
112926 113034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** IN_INDEX_NOOP is returned, the table opened with cursor iTab
112927 113035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contains the values that make up the RHS. If IN_INDEX_NOOP is returned,
@@ -120388,10 +120496,11 @@
120388 120496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx->aSample==0 ){
120389 120497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_finalize(pStmt);
120390 120498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM_BKPT;
120391 120499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120392 120500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSpace = (tRowcnt*)&pIdx->aSample[nSample];
120501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( EIGHT_BYTE_ALIGNMENT( pSpace ) );
120393 120502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx->aAvgEq = pSpace; pSpace += nIdxCol;
120394 120503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx->pTable->tabFlags |= TF_HasStat4;
120395 120504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nSample; i++){
120396 120505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx->aSample[i].anEq = pSpace; pSpace += nIdxCol;
120397 120506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx->aSample[i].anLt = pSpace; pSpace += nIdxCol;
@@ -148069,11 +148178,12 @@
148069 148178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The hope is that the terms added to the inner query will make it more
148070 148179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** efficient.
148071 148180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
148072 148181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** NAME AMBIGUITY
148073 148182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
148074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This optimization is called the "WHERE-clause push-down optimization".
148183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This optimization is called the "WHERE-clause push-down optimization"
148184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or sometimes the "predicate push-down optimization".
148075 148185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
148076 148186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do not confuse this optimization with another unrelated optimization
148077 148187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with a similar name: The "MySQL push-down optimization" causes WHERE
148078 148188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** clause terms that can be evaluated using only the index and without
148079 148189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reference to the table are run first, so that if they are false,
@@ -163046,10 +163156,16 @@
163046 163156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
163047 163157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
163048 163158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp = sqlite3VdbeGetOp(v, iStart);
163049 163159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd = sqlite3VdbeCurrentAddr(v);
163050 163160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ) return;
163161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
163162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->db->flags & SQLITE_VdbeAddopTrace ){
163163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("CHECKING for column-to-copy on cursor %d for %d..%d\n",
163164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iTabCur, iStart, iEnd);
163165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
163166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
163051 163167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(; iStart<iEnd; iStart++, pOp++){
163052 163168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p1!=iTabCur ) continue;
163053 163169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_Column ){
163054 163170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
163055 163171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->flags & SQLITE_VdbeAddopTrace ){
@@ -232533,10 +232649,26 @@
232533 232649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Constants for the largest and smallest possible 64-bit signed integers.
232534 232650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
232535 232651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define LARGEST_INT64 (0xffffffff|(((i64)0x7fffffff)<<32))
232536 232652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64)
232537 232653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
232654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The uptr type is an unsigned integer large enough to hold a pointer
232655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
232656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(HAVE_STDINT_H)
232657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef uintptr_t uptr;
232658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #elif SQLITE_PTRSIZE==4
232659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef u32 uptr;
232660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
232661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef u64 uptr;
232662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
232663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
232664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
232665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define EIGHT_BYTE_ALIGNMENT(X) ((((uptr)(X) - (uptr)0)&3)==0)
232666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
232667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define EIGHT_BYTE_ALIGNMENT(X) ((((uptr)(X) - (uptr)0)&7)==0)
232668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
232669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
232538 232670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
232539 232671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
232540 232672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Truncate very long tokens to this many bytes. Hard limit is
232541 232673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (65536-1-1-4-9)==65521 bytes. The limiting factor is the 16-bit offset
232542 232674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** field that occurs at the start of each leaf page (see fts5_index.c). */
@@ -241777,15 +241909,16 @@
241777 241909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_ERROR ) rc = FTS5_CORRUPT;
241778 241910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
241779 241911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
241780 241912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aOut = 0; /* Read blob data into this buffer */
241781 241913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = sqlite3_blob_bytes(p->pReader);
241782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_int64 nAlloc = sizeof(Fts5Data) + nByte + FTS5_DATA_PADDING;
241914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int szData = (sizeof(Fts5Data) + 7) & ~7;
241915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 nAlloc = szData + nByte + FTS5_DATA_PADDING;
241783 241916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = (Fts5Data*)sqlite3_malloc64(nAlloc);
241784 241917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
241785 241918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->nn = nByte;
241786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aOut = pRet->p = (u8*)&pRet[1];
241919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut = pRet->p = (u8*)pRet + szData;
241787 241920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
241788 241921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
241789 241922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
241790 241923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
241791 241924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
@@ -241804,10 +241937,11 @@
241804 241937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = rc;
241805 241938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nRead++;
241806 241939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
241807 241940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
241808 241941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pRet==0)==(p->rc!=SQLITE_OK) );
241942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRet==0 || EIGHT_BYTE_ALIGNMENT( pRet->p ) );
241809 241943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRet;
241810 241944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
241811 241945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
241812 241946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
241813 241947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -251232,10 +251366,22 @@
251232 251366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3_value_int64(pVal);
251233 251367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251234 251368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251235 251369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return iDefault;
251236 251370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
251372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
251373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set the error message on the virtual table passed as the first argument.
251374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
251375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void fts5SetVtabError(Fts5FullTable *p, const char *zFormat, ...){
251376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ va_list ap; /* ... printf arguments */
251377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ va_start(ap, zFormat);
251378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(p->p.base.zErrMsg);
251379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->p.base.zErrMsg = sqlite3_vmprintf(zFormat, ap);
251380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ va_end(ap);
251381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
251382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
251237 251383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
251238 251384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
251239 251385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the xFilter interface for the virtual table. See
251240 251386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the virtual table xFilter method documentation for additional
251241 251387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** information.
@@ -251408,13 +251554,11 @@
251408 251554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->ePlan = FTS5_PLAN_MATCH;
251409 251555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = fts5CursorFirst(pTab, pCsr, bDesc);
251410 251556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251411 251557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251412 251558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pConfig->zContent==0 ){
251413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pConfig->pzErrmsg = sqlite3_mprintf(
251414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "%s: table does not support scanning", pConfig->zName
251415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
251559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5SetVtabError(pTab,"%s: table does not support scanning",pConfig->zName);
251416 251560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR;
251417 251561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
251418 251562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This is either a full-table scan (ePlan==FTS5_PLAN_SCAN) or a lookup
251419 251563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by rowid (ePlan==FTS5_PLAN_ROWID). */
251420 251564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->ePlan = (pRowidEq ? FTS5_PLAN_ROWID : FTS5_PLAN_SCAN);
@@ -251484,10 +251628,11 @@
251484 251628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRowid = fts5CursorRowid(pCsr);
251485 251629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251486 251630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
251487 251631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
251488 251632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
251489 251634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
251490 251635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
251491 251636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the cursor requires seeking (bSeekRequired flag is set), seek it.
251492 251637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return SQLITE_OK if no error occurs, or an SQLite error code otherwise.
251493 251638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -251521,28 +251666,25 @@
251521 251666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CsrFlagClear(pCsr, FTS5CSR_REQUIRE_CONTENT);
251522 251667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
251523 251668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_reset(pCsr->pStmt);
251524 251669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
251525 251670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = FTS5_CORRUPT;
251671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5SetVtabError((Fts5FullTable*)pTab,
251672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fts5: missing row %lld from content table %s",
251673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5CursorRowid(pCsr),
251674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->pConfig->zContent
251675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
251526 251676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pTab->pConfig->pzErrmsg ){
251527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pTab->pConfig->pzErrmsg = sqlite3_mprintf(
251677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5SetVtabError((Fts5FullTable*)pTab,
251528 251678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%s", sqlite3_errmsg(pTab->pConfig->db)
251529 251679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
251530 251680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251531 251681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251532 251682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251533 251683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
251534 251684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
251535 251685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
251536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void fts5SetVtabError(Fts5FullTable *p, const char *zFormat, ...){
251537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- va_list ap; /* ... printf arguments */
251538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- va_start(ap, zFormat);
251539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->p.base.zErrMsg==0 );
251540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->p.base.zErrMsg = sqlite3_vmprintf(zFormat, ap);
251541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- va_end(ap);
251542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
251543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
251544 251686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
251545 251687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is called to handle an FTS INSERT command. In other words,
251546 251688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an INSERT statement of the form:
251547 251689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
251548 251690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** INSERT INTO fts(fts) VALUES($pCmd)
@@ -252512,11 +252654,14 @@
252512 252654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCsr==0 || pCsr->ePlan==0 ){
252513 252655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr = sqlite3_mprintf("no such cursor: %lld", iCsrId);
252514 252656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error(context, zErr, -1);
252515 252657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zErr);
252516 252658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_vtab *pTab = pCsr->base.pVtab;
252517 252660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5ApiInvoke(pAux, pCsr, context, argc-1, &argv[1]);
252661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(pTab->zErrMsg);
252662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->zErrMsg = 0;
252518 252663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252519 252664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252520 252665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252521 252666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252522 252667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -252968,11 +253113,11 @@
252968 253113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
252969 253114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
252970 253115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
252971 253116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
252972 253117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
252973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2024-07-03 20:19:33 baa83b460c677c210c7fa3f20314d7e05f305aed8a69026bc5fa106a3de4ea38", -1, SQLITE_TRANSIENT);
253118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2024-07-24 13:53:51 bcc31846964102385d5a21eb5e85d7db153b155e76b4e2847c9453d3d0e1af04", -1, SQLITE_TRANSIENT);
252974 253119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252975 253120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252976 253121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
252977 253122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if zName is the extension on one of the shadow tables used
252978 253123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
@@ -253590,11 +253735,11 @@
253590 253735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ctx.szCol = 0;
253591 253736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_DOCUMENT,
253592 253737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zText, nText, (void*)&ctx, fts5StorageInsertCallback
253593 253738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
253594 253739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aTotalSize[iCol-1] -= (i64)ctx.szCol;
253595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->aTotalSize[iCol-1]<0 ){
253740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->aTotalSize[iCol-1]<0 && rc==SQLITE_OK ){
253596 253741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = FTS5_CORRUPT;
253597 253742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
253598 253743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
253599 253744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
253600 253745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && p->nTotalRow<1 ){
253601 253746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!