expr.c File Reference

Go to the source code of this file.

Defines

#define exprSetHeight(y)
#define sqlite3_enable_in_opt   1

Functions

char sqlite3ExprAffinity (Expr *pExpr)
Exprsqlite3ExprSetColl (Parse *pParse, Expr *pExpr, Token *pCollName)
CollSeqsqlite3ExprCollSeq (Parse *pParse, Expr *pExpr)
char sqlite3CompareAffinity (Expr *pExpr, char aff2)
static char comparisonAffinity (Expr *pExpr)
int sqlite3IndexAffinityOk (Expr *pExpr, char idx_affinity)
static u8 binaryCompareP5 (Expr *pExpr1, Expr *pExpr2, int jumpIfNull)
CollSeqsqlite3BinaryCompareCollSeq (Parse *pParse, Expr *pLeft, Expr *pRight)
static void codeCompareOperands (Parse *pParse, Expr *pLeft, int *pRegLeft, int *pFreeLeft, Expr *pRight, int *pRegRight, int *pFreeRight)
static int codeCompare (Parse *pParse, Expr *pLeft, Expr *pRight, int opcode, int in1, int in2, int dest, int jumpIfNull)
Exprsqlite3Expr (sqlite3 *db, int op, Expr *pLeft, Expr *pRight, const Token *pToken)
Exprsqlite3PExpr (Parse *pParse, int op, Expr *pLeft, Expr *pRight, const Token *pToken)
Exprsqlite3RegisterExpr (Parse *pParse, Token *pToken)
Exprsqlite3ExprAnd (sqlite3 *db, Expr *pLeft, Expr *pRight)
void sqlite3ExprSpan (Expr *pExpr, Token *pLeft, Token *pRight)
Exprsqlite3ExprFunction (Parse *pParse, ExprList *pList, Token *pToken)
void sqlite3ExprAssignVarNumber (Parse *pParse, Expr *pExpr)
void sqlite3ExprClear (sqlite3 *db, Expr *p)
void sqlite3ExprDelete (sqlite3 *db, Expr *p)
void sqlite3DequoteExpr (sqlite3 *db, Expr *p)
Exprsqlite3ExprDup (sqlite3 *db, Expr *p)
void sqlite3TokenCopy (sqlite3 *db, Token *pTo, Token *pFrom)
ExprListsqlite3ExprListDup (sqlite3 *db, ExprList *p)
SrcListsqlite3SrcListDup (sqlite3 *db, SrcList *p)
IdListsqlite3IdListDup (sqlite3 *db, IdList *p)
Selectsqlite3SelectDup (sqlite3 *db, Select *p)
ExprListsqlite3ExprListAppend (Parse *pParse, ExprList *pList, Expr *pExpr, Token *pName)
void sqlite3ExprListCheckLength (Parse *pParse, ExprList *pEList, const char *zObject)
void sqlite3ExprListDelete (sqlite3 *db, ExprList *pList)
static int exprNodeIsConstant (Walker *pWalker, Expr *pExpr)
static int selectNodeIsConstant (Walker *pWalker, Select *pSelect)
static int exprIsConst (Expr *p, int initFlag)
int sqlite3ExprIsConstant (Expr *p)
int sqlite3ExprIsConstantNotJoin (Expr *p)
int sqlite3ExprIsConstantOrFunction (Expr *p)
int sqlite3ExprIsInteger (Expr *p, int *pValue)
int sqlite3IsRowid (const char *z)
static int isCandidateForInOpt (Select *p)
int sqlite3FindInIndex (Parse *pParse, Expr *pX, int *prNotFound)
void sqlite3CodeSubselect (Parse *pParse, Expr *pExpr, int rMayHaveNull, int isRowid)
static char * dup8bytes (Vdbe *v, const char *in)
static void codeReal (Vdbe *v, const char *z, int n, int negateFlag, int iMem)
static void codeInteger (Vdbe *v, Expr *pExpr, int negFlag, int iMem)
int sqlite3ExprCodeGetColumn (Parse *pParse, Table *pTab, int iColumn, int iTable, int iReg, int allowAffChng)
void sqlite3ExprClearColumnCache (Parse *pParse, int iTable)
void sqlite3ExprCacheAffinityChange (Parse *pParse, int iStart, int iCount)
void sqlite3ExprCodeMove (Parse *pParse, int iFrom, int iTo, int nReg)
void sqlite3ExprCodeCopy (Parse *pParse, int iFrom, int iTo, int nReg)
static int usedAsColumnCache (Parse *pParse, int iFrom, int iTo)
int sqlite3ExprWritableRegister (Parse *pParse, int iCurrent, int iTarget)
void sqlite3ExprHardCopy (Parse *pParse, int iReg, int nReg)
static int codeAlias (Parse *pParse, int iAlias, Expr *pExpr, int target)
int sqlite3ExprCodeTarget (Parse *pParse, Expr *pExpr, int target)
int sqlite3ExprCodeTemp (Parse *pParse, Expr *pExpr, int *pReg)
int sqlite3ExprCode (Parse *pParse, Expr *pExpr, int target)
int sqlite3ExprCodeAndCache (Parse *pParse, Expr *pExpr, int target)
static int isAppropriateForFactoring (Expr *p)
static int evalConstExpr (Walker *pWalker, Expr *pExpr)
void sqlite3ExprCodeConstants (Parse *pParse, Expr *pExpr)
int sqlite3ExprCodeExprList (Parse *pParse, ExprList *pList, int target, int doHardCopy)
void sqlite3ExprIfTrue (Parse *pParse, Expr *pExpr, int dest, int jumpIfNull)
void sqlite3ExprIfFalse (Parse *pParse, Expr *pExpr, int dest, int jumpIfNull)
int sqlite3ExprCompare (Expr *pA, Expr *pB)
static int addAggInfoColumn (sqlite3 *db, AggInfo *pInfo)
static int addAggInfoFunc (sqlite3 *db, AggInfo *pInfo)
static int analyzeAggregate (Walker *pWalker, Expr *pExpr)
static int analyzeAggregatesInSelect (Walker *pWalker, Select *pSelect)
void sqlite3ExprAnalyzeAggregates (NameContext *pNC, Expr *pExpr)
void sqlite3ExprAnalyzeAggList (NameContext *pNC, ExprList *pList)
int sqlite3GetTempReg (Parse *pParse)
void sqlite3ReleaseTempReg (Parse *pParse, int iReg)
int sqlite3GetTempRange (Parse *pParse, int nReg)
void sqlite3ReleaseTempRange (Parse *pParse, int iReg, int nReg)

Define Documentation

#define exprSetHeight (  ) 

Definition at line 374 of file expr.c.

Referenced by sqlite3Expr().

#define sqlite3_enable_in_opt   1

Definition at line 1042 of file expr.c.


Function Documentation

static int addAggInfoColumn ( sqlite3 db,
AggInfo pInfo 
) [static]

Definition at line 2864 of file expr.c.

References AggInfo::aCol, AggInfo::nColumn, AggInfo::nColumnAlloc, and sqlite3ArrayAllocate().

Referenced by analyzeAggregate().

static int addAggInfoFunc ( sqlite3 db,
AggInfo pInfo 
) [static]

Definition at line 2882 of file expr.c.

References AggInfo::aFunc, AggInfo::nFunc, AggInfo::nFuncAlloc, and sqlite3ArrayAllocate().

Referenced by analyzeAggregate().

static int analyzeAggregate ( Walker pWalker,
Expr pExpr 
) [static]
static int analyzeAggregatesInSelect ( Walker pWalker,
Select pSelect 
) [static]
static u8 binaryCompareP5 ( Expr pExpr1,
Expr pExpr2,
int  jumpIfNull 
) [static]

Definition at line 191 of file expr.c.

References sqlite3CompareAffinity(), and sqlite3ExprAffinity().

Referenced by codeCompare().

static int codeAlias ( Parse pParse,
int  iAlias,
Expr pExpr,
int  target 
) [static]
static int codeCompare ( Parse pParse,
Expr pLeft,
Expr pRight,
int  opcode,
int  in1,
int  in2,
int  dest,
int  jumpIfNull 
) [static]
static void codeCompareOperands ( Parse pParse,
Expr pLeft,
int *  pRegLeft,
int *  pFreeLeft,
Expr pRight,
int *  pRegRight,
int *  pFreeRight 
) [static]
static void codeInteger ( Vdbe v,
Expr pExpr,
int  negFlag,
int  iMem 
) [static]
static void codeReal ( Vdbe v,
const char *  z,
int  n,
int  negateFlag,
int  iMem 
) [static]
static char comparisonAffinity ( Expr pExpr  )  [static]
static char* dup8bytes ( Vdbe v,
const char *  in 
) [static]

Definition at line 1444 of file expr.c.

References sqlite3DbMallocRaw(), and sqlite3VdbeDb().

Referenced by codeInteger(), and codeReal().

static int evalConstExpr ( Walker pWalker,
Expr pExpr 
) [static]
static int exprIsConst ( Expr p,
int  initFlag 
) [static]
static int exprNodeIsConstant ( Walker pWalker,
Expr pExpr 
) [static]
static int isAppropriateForFactoring ( Expr p  )  [static]
static int isCandidateForInOpt ( Select p  )  [static]
static int selectNodeIsConstant ( Walker pWalker,
Select pSelect 
) [static]

Definition at line 942 of file expr.c.

References Walker::i, Walker::u, and WRC_Abort.

Referenced by exprIsConst().

CollSeq* sqlite3BinaryCompareCollSeq ( Parse pParse,
Expr pLeft,
Expr pRight 
)
void sqlite3CodeSubselect ( Parse pParse,
Expr pExpr,
int  rMayHaveNull,
int  isRowid 
)
char sqlite3CompareAffinity ( Expr pExpr,
char  aff2 
)
void sqlite3DequoteExpr ( sqlite3 db,
Expr p 
)
Expr* sqlite3Expr ( sqlite3 db,
int  op,
Expr pLeft,
Expr pRight,
const Token pToken 
)
char sqlite3ExprAffinity ( Expr pExpr  ) 
void sqlite3ExprAnalyzeAggList ( NameContext pNC,
ExprList pList 
)

Definition at line 3052 of file expr.c.

References ExprList::a, and sqlite3ExprAnalyzeAggregates().

Referenced by sqlite3Select().

void sqlite3ExprAnalyzeAggregates ( NameContext pNC,
Expr pExpr 
)
Expr* sqlite3ExprAnd ( sqlite3 db,
Expr pLeft,
Expr pRight 
)

Definition at line 476 of file expr.c.

References sqlite3Expr(), and TK_AND.

Referenced by addWhereTerm(), flattenSubquery(), sqlite3AddCheckConstraint(), and sqliteProcessJoin().

void sqlite3ExprAssignVarNumber ( Parse pParse,
Expr pExpr 
)
void sqlite3ExprCacheAffinityChange ( Parse pParse,
int  iStart,
int  iCount 
)
void sqlite3ExprClear ( sqlite3 db,
Expr p 
)
void sqlite3ExprClearColumnCache ( Parse pParse,
int  iTable 
)
int sqlite3ExprCode ( Parse pParse,
Expr pExpr,
int  target 
)
int sqlite3ExprCodeAndCache ( Parse pParse,
Expr pExpr,
int  target 
)
void sqlite3ExprCodeConstants ( Parse pParse,
Expr pExpr 
)
void sqlite3ExprCodeCopy ( Parse pParse,
int  iFrom,
int  iTo,
int  nReg 
)

Definition at line 1636 of file expr.c.

References OP_Copy, Parse::pVdbe, and sqlite3VdbeAddOp2().

Referenced by generateOutputSubroutine().

int sqlite3ExprCodeExprList ( Parse pParse,
ExprList pList,
int  target,
int  doHardCopy 
)
int sqlite3ExprCodeGetColumn ( Parse pParse,
Table pTab,
int  iColumn,
int  iTable,
int  iReg,
int  allowAffChng 
)
void sqlite3ExprCodeMove ( Parse pParse,
int  iFrom,
int  iTo,
int  nReg 
)
int sqlite3ExprCodeTarget ( Parse pParse,
Expr pExpr,
int  target 
)

Definition at line 1756 of file expr.c.

References ExprList::a, AggInfo::aCol, AggInfo::aFunc, Parse::ckBase, codeAlias(), codeCompare(), codeCompareOperands(), codeInteger(), codeReal(), comparisonAffinity(), Parse::db, db, AggInfo::directMode, Parse::disableColCache, ENC, EP_AnyAff, EP_InfixFunc, FuncDef::flags, Expr::flags, Expr::iAgg, Expr::iColumn, TriggerStack::ignoreJump, AggInfo::AggInfo_func::iMem, IN_INDEX_ROWID, Expr::iTable, sqlite3::mallocFailed, Token::n, ExprList::nExpr, Parse::nMem, OE_Abort, OE_Fail, OE_Ignore, OE_Rollback, Expr::op, OP_Add, OP_AddImm, OP_And, OP_BitAnd, OP_BitNot, OP_BitOr, OP_Blob, OP_CollSeq, OP_Column, OP_Concat, OP_ContextPop, OP_Copy, OP_Divide, OP_Eq, OP_Found, OP_Function, OP_Ge, OP_Goto, OP_Gt, OP_Halt, OP_Integer, OP_IsNull, OP_Le, OP_Lt, OP_MakeRecord, OP_MustBeInt, OP_Ne, OP_Not, OP_NotExists, OP_NotNull, OP_Null, OP_Or, OP_Remainder, OP_SCopy, OP_ShiftLeft, OP_ShiftRight, OP_String8, OP_Subtract, OP_ToBlob, OP_ToInt, OP_ToNumeric, OP_ToReal, OP_ToText, OP_Variable, P4_COLLSEQ, P4_DYNAMIC, P4_FUNCDEF, P4_STATIC, Expr::pAggInfo, sqlite3::pDfltColl, ExprList::ExprList_item::pExpr, Expr::pLeft, Expr::pList, Expr::pRight, Expr::pTab, Parse::pVdbe, AggInfo::sortingIdx, Expr::span, sqlite3AffinityType(), sqlite3CodeSubselect(), sqlite3DequoteExpr(), sqlite3ErrorMsg(), sqlite3ExprCacheAffinityChange(), sqlite3ExprCode(), sqlite3ExprCodeExprList(), sqlite3ExprCodeGetColumn(), sqlite3ExprCodeTarget(), sqlite3ExprCodeTemp(), sqlite3ExprCollSeq(), sqlite3ExprIfFalse(), sqlite3ExprIsConstant(), sqlite3ExprWritableRegister(), sqlite3FindFunction(), sqlite3FindInIndex(), sqlite3GetTempRange(), sqlite3GetTempReg(), sqlite3HexToBlob(), sqlite3ReleaseTempRange(), sqlite3ReleaseTempReg(), sqlite3VdbeAddOp0(), sqlite3VdbeAddOp1(), sqlite3VdbeAddOp2(), sqlite3VdbeAddOp3(), sqlite3VdbeAddOp4(), sqlite3VdbeChangeP4(), sqlite3VdbeChangeP5(), sqlite3VdbeDb(), sqlite3VdbeJumpHere(), sqlite3VdbeMakeLabel(), sqlite3VdbeResolveLabel(), sqlite3VtabOverloadFunction(), SQLITE_AFF_INTEGER, SQLITE_AFF_NONE, SQLITE_AFF_NUMERIC, SQLITE_AFF_REAL, SQLITE_AFF_TEXT, SQLITE_CONSTRAINT, SQLITE_FUNC_NEEDCOLL, SQLITE_JUMPIFNULL, SQLITE_STOREP2, testcase, TK_AGG_COLUMN, TK_AGG_FUNCTION, TK_AND, TK_AS, TK_BETWEEN, TK_BITAND, TK_BITNOT, TK_BITOR, TK_BLOB, TK_CASE, TK_CAST, TK_COLUMN, TK_CONCAT, TK_CONST_FUNC, TK_EQ, TK_EXISTS, TK_FLOAT, TK_FUNCTION, TK_GE, TK_GT, TK_IN, TK_INTEGER, TK_ISNULL, TK_LE, TK_LSHIFT, TK_LT, TK_MINUS, TK_NE, TK_NOT, TK_NOTNULL, TK_NULL, TK_OR, TK_PLUS, TK_RAISE, TK_REGISTER, TK_REM, TK_RSHIFT, TK_SELECT, TK_SLASH, TK_STAR, TK_STRING, TK_UMINUS, TK_UPLUS, TK_VARIABLE, Expr::token, Parse::trigStack, usedAsColumnCache(), AggInfo::useSortingIdx, VdbeComment, VdbeNoopComment, and Token::z.

Referenced by codeAlias(), codeEqualityTerm(), evalConstExpr(), sqlite3CodeSubselect(), sqlite3ExprCode(), sqlite3ExprCodeTarget(), and sqlite3ExprCodeTemp().

int sqlite3ExprCodeTemp ( Parse pParse,
Expr pExpr,
int *  pReg 
)
CollSeq* sqlite3ExprCollSeq ( Parse pParse,
Expr pExpr 
)
int sqlite3ExprCompare ( Expr pA,
Expr pB 
)
void sqlite3ExprDelete ( sqlite3 db,
Expr p 
)
Expr* sqlite3ExprDup ( sqlite3 db,
Expr p 
)
Expr* sqlite3ExprFunction ( Parse pParse,
ExprList pList,
Token pToken 
)
void sqlite3ExprHardCopy ( Parse pParse,
int  iReg,
int  nReg 
)
void sqlite3ExprIfFalse ( Parse pParse,
Expr pExpr,
int  dest,
int  jumpIfNull 
)
void sqlite3ExprIfTrue ( Parse pParse,
Expr pExpr,
int  dest,
int  jumpIfNull 
)
int sqlite3ExprIsConstant ( Expr p  ) 

Definition at line 963 of file expr.c.

References exprIsConst().

Referenced by resolveAttachExpr(), sqlite3CodeSubselect(), and sqlite3ExprCodeTarget().

int sqlite3ExprIsConstantNotJoin ( Expr p  ) 

Definition at line 973 of file expr.c.

References exprIsConst().

Referenced by isAppropriateForFactoring(), and sqlite3WhereBegin().

int sqlite3ExprIsConstantOrFunction ( Expr p  ) 

Definition at line 986 of file expr.c.

References exprIsConst().

Referenced by sqlite3AddDefaultValue().

int sqlite3ExprIsInteger ( Expr p,
int *  pValue 
)
ExprList* sqlite3ExprListAppend ( Parse pParse,
ExprList pList,
Expr pExpr,
Token pName 
)
void sqlite3ExprListCheckLength ( Parse pParse,
ExprList pEList,
const char *  zObject 
)

Definition at line 861 of file expr.c.

References sqlite3::aLimit, Parse::db, ExprList::nExpr, sqlite3ErrorMsg(), SQLITE_LIMIT_COLUMN, and testcase.

Referenced by yy_reduce().

void sqlite3ExprListDelete ( sqlite3 db,
ExprList pList 
)
ExprList* sqlite3ExprListDup ( sqlite3 db,
ExprList p 
)
Expr* sqlite3ExprSetColl ( Parse pParse,
Expr pExpr,
Token pCollName 
)
void sqlite3ExprSpan ( Expr pExpr,
Token pLeft,
Token pRight 
)

Definition at line 491 of file expr.c.

References Token::n, Expr::span, and Token::z.

Referenced by sqlite3Expr(), and yy_reduce().

int sqlite3ExprWritableRegister ( Parse pParse,
int  iCurrent,
int  iTarget 
)
int sqlite3FindInIndex ( Parse pParse,
Expr pX,
int *  prNotFound 
)
int sqlite3GetTempRange ( Parse pParse,
int  nReg 
)
int sqlite3GetTempReg ( Parse pParse  ) 
IdList* sqlite3IdListDup ( sqlite3 db,
IdList p 
)
int sqlite3IndexAffinityOk ( Expr pExpr,
char  idx_affinity 
)

Definition at line 175 of file expr.c.

References comparisonAffinity(), sqlite3IsNumericAffinity, SQLITE_AFF_NONE, and SQLITE_AFF_TEXT.

Referenced by findTerm().

int sqlite3IsRowid ( const char *  z  ) 

Definition at line 1032 of file expr.c.

References sqlite3StrICmp().

Referenced by lookupName(), sqlite3Insert(), and sqlite3Update().

Expr* sqlite3PExpr ( Parse pParse,
int  op,
Expr pLeft,
Expr pRight,
const Token pToken 
)
Expr* sqlite3RegisterExpr ( Parse pParse,
Token pToken 
)

Definition at line 456 of file expr.c.

References Expr::iTable, Parse::nested, Parse::pVdbe, sqlite3ErrorMsg(), sqlite3PExpr(), TK_NULL, TK_REGISTER, and Token::z.

Referenced by yy_reduce().

void sqlite3ReleaseTempRange ( Parse pParse,
int  iReg,
int  nReg 
)
void sqlite3ReleaseTempReg ( Parse pParse,
int  iReg 
)
Select* sqlite3SelectDup ( sqlite3 db,
Select p 
)
SrcList* sqlite3SrcListDup ( sqlite3 db,
SrcList p 
)
void sqlite3TokenCopy ( sqlite3 db,
Token pTo,
Token pFrom 
)
static int usedAsColumnCache ( Parse pParse,
int  iFrom,
int  iTo 
) [static]

ContextLogger2—ContextLogger2 Logger Daemon Internals—Generated on Mon May 2 13:49:58 2011 by Doxygen 1.6.1