aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-10-30 18:50:08 +0000
committerdrh <drh@noemail.net>2019-10-30 18:50:08 +0000
commit20cee7d0bb8f627c3952f24a5c4772f8fbb4d720 (patch)
tree8fa04661f1fdf2da038495b7517dbfcc964a2984 /src/expr.c
parent920cf596e67ecccecb497cfa60cc65945048f866 (diff)
downloadsqlite-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.c4
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;
}