aboutsummaryrefslogtreecommitdiff
path: root/src/sqliteInt.h
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-09-20 19:02:15 +0000
committerdrh <drh@noemail.net>2018-09-20 19:02:15 +0000
commiteda079cd2c8ac1217574cd372c7bbcf6f651ccab (patch)
tree1426ab64c86073c55d49fd39029c8cd092348dd8 /src/sqliteInt.h
parent85c6892aa45dc0f476aa9bd772c678215f679853 (diff)
downloadsqlite-eda079cd2c8ac1217574cd372c7bbcf6f651ccab.tar.gz
sqlite-eda079cd2c8ac1217574cd372c7bbcf6f651ccab.zip
Combine the Expr.pTab and Expr.pWin fields into a union named "y". Add a new
EP_WinFunc property that is only true if Expr.y.pWin is a valid pointer. This reduces the size of the Expr object by 8 bytes, reduces the overall amount of code, and shaves over 1 million cycles off of the speed test. FossilOrigin-Name: ad130bb86e74e6ce165fdbdce3a19699510f0e62071c1c7923b5a4538d888c7c
Diffstat (limited to 'src/sqliteInt.h')
-rw-r--r--src/sqliteInt.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 74438b5ab..ba24c07aa 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -2459,11 +2459,11 @@ struct Expr {
** TK_COLUMN: the value of p5 for OP_Column
** TK_AGG_FUNCTION: nesting depth */
AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
- Table *pTab; /* Table for TK_COLUMN expressions. Can be NULL
- ** for a column of an index on an expression */
-#ifndef SQLITE_OMIT_WINDOWFUNC
- Window *pWin; /* Window definition for window functions */
-#endif
+ union {
+ Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
+ ** for a column of an index on an expression */
+ Window *pWin; /* TK_FUNCTION: Window definition for the func */
+ } y;
};
/*
@@ -2493,6 +2493,7 @@ struct Expr {
#define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
#define EP_Alias 0x400000 /* Is an alias for a result set column */
#define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
+#define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */
/*
** The EP_Propagate mask is a set of properties that automatically propagate