aboutsummaryrefslogtreecommitdiff
path: root/src/sqliteInt.h
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2009-12-24 16:00:28 +0000
committerdrh <drh@noemail.net>2009-12-24 16:00:28 +0000
commitb6da74ebd5140fac15bb007ce21e3b79b981f98e (patch)
tree469fc9a139de5d332f6b84302bd0b4ffad43ec4b /src/sqliteInt.h
parent07096f68ae9f9de330350cafc6d11b37d8e328f7 (diff)
downloadsqlite-b6da74ebd5140fac15bb007ce21e3b79b981f98e.tar.gz
sqlite-b6da74ebd5140fac15bb007ce21e3b79b981f98e.zip
Immediately purge entries from the column cache when the associated register
undergoes an affinity change. Ticket [eb5548a849]. Enhance the SQLITE_TESTCTRL_OPTIMIZATIONS setting of sqlite3_test_control so that it can disable the column cache for testing purposes, in an effort to prevent future problems of a similar nature to this one. FossilOrigin-Name: ea4e57e1c1b6663ceb12872e31a8503f6c14e3d8
Diffstat (limited to 'src/sqliteInt.h')
-rw-r--r--src/sqliteInt.h24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 6bbae1aa1..9ca2a55e5 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -930,10 +930,10 @@ struct sqlite3 {
** These must be the low-order bits of the flags field.
*/
#define SQLITE_QueryFlattener 0x01 /* Disable query flattening */
-#define SQLITE_IndexSort 0x02 /* Disable indexes for sorting */
-#define SQLITE_IndexSearch 0x04 /* Disable indexes for searching */
-#define SQLITE_IndexCover 0x08 /* Disable index covering table */
-#define SQLITE_RegisterReuse 0x10 /* Disable register reuse */
+#define SQLITE_ColumnCache 0x02 /* Disable the column cache */
+#define SQLITE_IndexSort 0x04 /* Disable indexes for sorting */
+#define SQLITE_IndexSearch 0x08 /* Disable indexes for searching */
+#define SQLITE_IndexCover 0x10 /* Disable index covering table */
#define SQLITE_OptMask 0x1f /* Mask of all disablable opts */
/*
@@ -1648,14 +1648,13 @@ struct Expr {
#define EP_DblQuoted 0x0040 /* token.z was originally in "..." */
#define EP_InfixFunc 0x0080 /* True for an infix function: LIKE, GLOB, etc */
#define EP_ExpCollate 0x0100 /* Collating sequence specified explicitly */
-#define EP_AnyAff 0x0200 /* Can take a cached column of any affinity */
-#define EP_FixedDest 0x0400 /* Result needed in a specific register */
-#define EP_IntValue 0x0800 /* Integer value contained in u.iValue */
-#define EP_xIsSelect 0x1000 /* x.pSelect is valid (otherwise x.pList is) */
+#define EP_FixedDest 0x0200 /* Result needed in a specific register */
+#define EP_IntValue 0x0400 /* Integer value contained in u.iValue */
+#define EP_xIsSelect 0x0800 /* x.pSelect is valid (otherwise x.pList is) */
-#define EP_Reduced 0x2000 /* Expr struct is EXPR_REDUCEDSIZE bytes only */
-#define EP_TokenOnly 0x4000 /* Expr struct is EXPR_TOKENONLYSIZE bytes only */
-#define EP_Static 0x8000 /* Held in memory not obtained from malloc() */
+#define EP_Reduced 0x1000 /* Expr struct is EXPR_REDUCEDSIZE bytes only */
+#define EP_TokenOnly 0x2000 /* Expr struct is EXPR_TOKENONLYSIZE bytes only */
+#define EP_Static 0x4000 /* Held in memory not obtained from malloc() */
/*
** The following are the meanings of bits in the Expr.flags2 field.
@@ -2133,7 +2132,6 @@ struct Parse {
struct yColCache {
int iTable; /* Table cursor number */
int iColumn; /* Table column number */
- u8 affChange; /* True if this register has had an affinity change */
u8 tempReg; /* iReg is a temp register that needs to be freed */
int iLevel; /* Nesting level */
int iReg; /* Reg with value of this column. 0 means none. */
@@ -2652,7 +2650,7 @@ void sqlite3DeleteFrom(Parse*, SrcList*, Expr*);
void sqlite3Update(Parse*, SrcList*, ExprList*, Expr*, int);
WhereInfo *sqlite3WhereBegin(Parse*, SrcList*, Expr*, ExprList**, u16);
void sqlite3WhereEnd(WhereInfo*);
-int sqlite3ExprCodeGetColumn(Parse*, Table*, int, int, int, int);
+int sqlite3ExprCodeGetColumn(Parse*, Table*, int, int, int);
void sqlite3ExprCodeMove(Parse*, int, int, int);
void sqlite3ExprCodeCopy(Parse*, int, int, int);
void sqlite3ExprCacheStore(Parse*, int, int, int);