aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-08-15 20:04:09 +0000
committerdrh <drh@noemail.net>2019-08-15 20:04:09 +0000
commit42d2fce7f5b5e5776f3e881b4685deae2e0266ff (patch)
treea4f50bf4bc48899b6c53de834a91112d4a164e3e /src/resolve.c
parent725dd72400872da94dcfb6af48128905b93d57fe (diff)
downloadsqlite-42d2fce7f5b5e5776f3e881b4685deae2e0266ff.tar.gz
sqlite-42d2fce7f5b5e5776f3e881b4685deae2e0266ff.zip
Provide the SQLITE_DIRECTONLY flag for app-defined functions that prohibits
the use of those functions within triggers or views. FossilOrigin-Name: fc745845d8d76adc165575e2192f4176e3c28e614c72571d56f4011560499fe1
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 31600382f..ab2266409 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -823,6 +823,15 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
** SQL is being compiled using sqlite3NestedParse() */
no_such_func = 1;
pDef = 0;
+ }else
+ if( (pDef->funcFlags & SQLITE_FUNC_DIRECT)!=0
+ && ExprHasProperty(pExpr, EP_Indirect)
+ && !IN_RENAME_OBJECT
+ ){
+ /* Functions tagged with SQLITE_DIRECTONLY may not be used
+ ** inside of triggers and views */
+ sqlite3ErrorMsg(pParse, "%s() prohibited in triggers and views",
+ pDef->zName);
}
}