diff options
author | drh <drh@noemail.net> | 2018-09-20 19:02:15 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-09-20 19:02:15 +0000 |
commit | eda079cd2c8ac1217574cd372c7bbcf6f651ccab (patch) | |
tree | 1426ab64c86073c55d49fd39029c8cd092348dd8 /src/sqliteInt.h | |
parent | 85c6892aa45dc0f476aa9bd772c678215f679853 (diff) | |
download | sqlite-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.h | 11 |
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 |