diff options
author | drh <drh@noemail.net> | 2019-10-30 18:50:08 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2019-10-30 18:50:08 +0000 |
commit | 20cee7d0bb8f627c3952f24a5c4772f8fbb4d720 (patch) | |
tree | 8fa04661f1fdf2da038495b7517dbfcc964a2984 /src/expr.c | |
parent | 920cf596e67ecccecb497cfa60cc65945048f866 (diff) | |
download | sqlite-20cee7d0bb8f627c3952f24a5c4772f8fbb4d720.tar.gz sqlite-20cee7d0bb8f627c3952f24a5c4772f8fbb4d720.zip |
Always disallow the use of non-deterministic functions in CHECK constraints,
even date/time functions that use the 'now' or similar keywords. Provide
improved error messages when this requirement is not met.
Ticket [830277d9db6c3ba1]
FossilOrigin-Name: 2978b65ebe25eeabe543b67cb266308cceb20082a4ae71565d6d083d7c08bc9f
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/expr.c b/src/expr.c index 36ab7c795..b0c61f00f 100644 --- a/src/expr.c +++ b/src/expr.c @@ -4033,7 +4033,7 @@ expr_code_doover: #endif { sqlite3VdbeAddFunctionCall(pParse, constMask, r1, target, nFarg, - pDef, pParse->iSelfTab); + pDef, pExpr->op2); } if( nFarg && constMask==0 ){ sqlite3ReleaseTempRange(pParse, r1, nFarg); @@ -5028,7 +5028,7 @@ int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTab){ && (combinedFlags & EP_Reduced)==0 ){ if( pA->iColumn!=pB->iColumn ) return 2; - if( pA->op2!=pB->op2 ) return 2; + if( pA->op2!=pB->op2 && (pA->op!=TK_FUNCTION || iTab<0) ) return 2; if( pA->op!=TK_IN && pA->iTable!=pB->iTable && pA->iTable!=iTab ){ return 2; } |