mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-12 13:01:09 +03:00
Block edgy functions used in DEFAULT constraints.
FossilOrigin-Name: da434dc149786e4b1cd80b3b2b25f8b614d0dec62d5439f839a66b536999e398
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Performance\simprovements\sand\stest\scases\sadded.\sAllow\s"PRAGMA\strusted_schema=ON"
|
C Block\sedgy\sfunctions\sused\sin\sDEFAULT\sconstraints.
|
||||||
D 2020-01-08T20:37:45.893
|
D 2020-01-08T22:22:36.071
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -473,7 +473,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
|||||||
F src/btree.c d70000b51523138582663b578b7f8a13e5d03c73c7c7ef18fdeafe1c234bbc3c
|
F src/btree.c d70000b51523138582663b578b7f8a13e5d03c73c7c7ef18fdeafe1c234bbc3c
|
||||||
F src/btree.h 6111552f19ed7a40f029cf4b33badc6fef9880314fffd80a945f0b7f43ab7471
|
F src/btree.h 6111552f19ed7a40f029cf4b33badc6fef9880314fffd80a945f0b7f43ab7471
|
||||||
F src/btreeInt.h 6794084fad08c9750b45145743c0e3e5c27c94dee89f26dd8df7073314934fd2
|
F src/btreeInt.h 6794084fad08c9750b45145743c0e3e5c27c94dee89f26dd8df7073314934fd2
|
||||||
F src/build.c 67b1a8d3ac700747687dbdc49ded847a3c17fef450a8c919ac0399b44cbd4215
|
F src/build.c bd2f382562b08f14748d54402220be1082c2f8ff8973fad47e45a381c438f9bf
|
||||||
F src/callback.c c547d00963ae28100117b4fb1f0f32242109b5804374ee3bfe01138a54da7f76
|
F src/callback.c c547d00963ae28100117b4fb1f0f32242109b5804374ee3bfe01138a54da7f76
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 1b0724e66f95f33b160b1af85caaf9cceb325d22abf39bd24df4f54a73982251
|
F src/ctime.c 1b0724e66f95f33b160b1af85caaf9cceb325d22abf39bd24df4f54a73982251
|
||||||
@@ -481,7 +481,7 @@ F src/date.c e1d8ac7102f3f283e63e13867acb0efa33861cf34f0faf4cdbaf9fa7a1eb7041
|
|||||||
F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
|
F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
|
||||||
F src/dbstat.c 0f55297469d4244ab7df395849e1af98eb5e95816af7c661e7d2d8402dea23da
|
F src/dbstat.c 0f55297469d4244ab7df395849e1af98eb5e95816af7c661e7d2d8402dea23da
|
||||||
F src/delete.c a5c59b9c0251cf7682bc52af0d64f09b1aefc6781a63592c8f1136f7b73c66e4
|
F src/delete.c a5c59b9c0251cf7682bc52af0d64f09b1aefc6781a63592c8f1136f7b73c66e4
|
||||||
F src/expr.c b1cb02a4b4fd1d2723f3de13d212fb5649923783835e37ee94d2792cad983035
|
F src/expr.c c5ff3bb83e5b512f6251a37e7ac9f5b1686e6a135e22d40c013d7d267a532af5
|
||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c 92a248ec0fa4ed8ab60c98d9b188ce173aaf218f32e7737ba77deb2a684f9847
|
F src/fkey.c 92a248ec0fa4ed8ab60c98d9b188ce173aaf218f32e7737ba77deb2a684f9847
|
||||||
F src/func.c 259496e4856bd0a3215d16804992f3339f3e8db29f129a5a7285c341488bbe9c
|
F src/func.c 259496e4856bd0a3215d16804992f3339f3e8db29f129a5a7285c341488bbe9c
|
||||||
@@ -594,7 +594,7 @@ F src/test_window.c cdae419fdcea5bad6dcd9368c685abdad6deb59e9fc8b84b153de513d394
|
|||||||
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
|
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
|
||||||
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
|
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
|
||||||
F src/tokenize.c 7b17f6e2f20f6cbcb0b215025a86b7457c38451fc7622f705e553d7a488c572d
|
F src/tokenize.c 7b17f6e2f20f6cbcb0b215025a86b7457c38451fc7622f705e553d7a488c572d
|
||||||
F src/treeview.c f51bdcac260ed3eafd8880e857c56e086e28340a1d7b49b487893610d71a2325
|
F src/treeview.c 438c1000587b33faba35e87596bebcf7f40638d98f33781cdd9e04711b18b09c
|
||||||
F src/trigger.c a40d50e88bd3355f1d2a73f0a3b2d6b42eae26ca4219001b82ef0d064439badc
|
F src/trigger.c a40d50e88bd3355f1d2a73f0a3b2d6b42eae26ca4219001b82ef0d064439badc
|
||||||
F src/update.c 9ad19af96aff95dc02a923a99f97c1bc0b909009a29a2914b796f786b9ac0c60
|
F src/update.c 9ad19af96aff95dc02a923a99f97c1bc0b909009a29a2914b796f786b9ac0c60
|
||||||
F src/upsert.c 2920de71b20f04fe25eb00b655d086f0ba60ea133c59d7fa3325c49838818e78
|
F src/upsert.c 2920de71b20f04fe25eb00b655d086f0ba60ea133c59d7fa3325c49838818e78
|
||||||
@@ -1855,7 +1855,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 1da802d54b689a462e1fe899c6ffa08ef14d34f36728b14b055b5a76b1edc274
|
P 30882ca80f6c51f6bb7b2692c1ac3f19a7c61a23aa8730be79aec0ae3ef08d54
|
||||||
R 78a6c1828843e575068f968acb0f372e
|
R 2d6bd4faf1a02c29990cd0df461c78ad
|
||||||
U drh
|
U drh
|
||||||
Z ca06f3bd43b14133e2371bf0709d0315
|
Z 9253d4aa29f3b6b8cb96462d5b434aa9
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
30882ca80f6c51f6bb7b2692c1ac3f19a7c61a23aa8730be79aec0ae3ef08d54
|
da434dc149786e4b1cd80b3b2b25f8b614d0dec62d5439f839a66b536999e398
|
||||||
@@ -1404,8 +1404,9 @@ void sqlite3AddDefaultValue(
|
|||||||
sqlite3 *db = pParse->db;
|
sqlite3 *db = pParse->db;
|
||||||
p = pParse->pNewTable;
|
p = pParse->pNewTable;
|
||||||
if( p!=0 ){
|
if( p!=0 ){
|
||||||
|
int isInit = db->init.busy && db->init.iDb!=1;
|
||||||
pCol = &(p->aCol[p->nCol-1]);
|
pCol = &(p->aCol[p->nCol-1]);
|
||||||
if( !sqlite3ExprIsConstantOrFunction(pExpr, db->init.busy) ){
|
if( !sqlite3ExprIsConstantOrFunction(pExpr, isInit) ){
|
||||||
sqlite3ErrorMsg(pParse, "default value of column [%s] is not constant",
|
sqlite3ErrorMsg(pParse, "default value of column [%s] is not constant",
|
||||||
pCol->zName);
|
pCol->zName);
|
||||||
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
|
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
|
||||||
|
|||||||
28
src/expr.c
28
src/expr.c
@@ -1971,10 +1971,11 @@ Expr *sqlite3ExprSimplifiedAndOr(Expr *pExpr){
|
|||||||
** In all cases, the callbacks set Walker.eCode=0 and abort if the expression
|
** In all cases, the callbacks set Walker.eCode=0 and abort if the expression
|
||||||
** is found to not be a constant.
|
** is found to not be a constant.
|
||||||
**
|
**
|
||||||
** The sqlite3ExprIsConstantOrFunction() is used for evaluating expressions
|
** The sqlite3ExprIsConstantOrFunction() is used for evaluating DEFAULT
|
||||||
** in a CREATE TABLE statement. The Walker.eCode value is 5 when parsing
|
** expressions in a CREATE TABLE statement. The Walker.eCode value is 5
|
||||||
** an existing schema and 4 when processing a new statement. A bound
|
** when parsing an existing schema out of the sqlite_master table and 4
|
||||||
** parameter raises an error for new statements, but is silently converted
|
** when processing a new CREATE TABLE statement. A bound parameter raises
|
||||||
|
** an error for new statements, but is silently converted
|
||||||
** to NULL for existing schemas. This allows sqlite_master tables that
|
** to NULL for existing schemas. This allows sqlite_master tables that
|
||||||
** contain a bound parameter because they were generated by older versions
|
** contain a bound parameter because they were generated by older versions
|
||||||
** of SQLite to be parsed by newer versions of SQLite without raising a
|
** of SQLite to be parsed by newer versions of SQLite without raising a
|
||||||
@@ -1998,6 +1999,7 @@ static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
|
|||||||
if( (pWalker->eCode>=4 || ExprHasProperty(pExpr,EP_ConstFunc))
|
if( (pWalker->eCode>=4 || ExprHasProperty(pExpr,EP_ConstFunc))
|
||||||
&& !ExprHasProperty(pExpr, EP_WinFunc)
|
&& !ExprHasProperty(pExpr, EP_WinFunc)
|
||||||
){
|
){
|
||||||
|
if( pWalker->eCode==5 ) ExprSetProperty(pExpr, EP_FromDDL);
|
||||||
return WRC_Continue;
|
return WRC_Continue;
|
||||||
}else{
|
}else{
|
||||||
pWalker->eCode = 0;
|
pWalker->eCode = 0;
|
||||||
@@ -2161,9 +2163,21 @@ int sqlite3ExprIsConstantOrGroupBy(Parse *pParse, Expr *p, ExprList *pGroupBy){
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Walk an expression tree. Return non-zero if the expression is constant
|
** Walk an expression tree for the DEFAULT field of a column definition
|
||||||
** or a function call with constant arguments. Return and 0 if there
|
** in a CREATE TABLE statement. Return non-zero if the expression is
|
||||||
** are any variables.
|
** acceptable for use as a DEFAULT. That is to say, return non-zero if
|
||||||
|
** the expression is constant or a function call with constant arguments.
|
||||||
|
** Return and 0 if there are any variables.
|
||||||
|
**
|
||||||
|
** isInit is true when parsing from sqlite_master. isInit is false when
|
||||||
|
** processing a new CREATE TABLE statement. When isInit is true, parameters
|
||||||
|
** (such as ? or $abc) in the expression are converted into NULL. When
|
||||||
|
** isInit is false, parameters raise an error. Parameters should not be
|
||||||
|
** allowed in a CREATE TABLE statement, but some legacy versions of SQLite
|
||||||
|
** allowed it, so we need to support it when reading sqlite_master for
|
||||||
|
** backwards compatibility.
|
||||||
|
**
|
||||||
|
** If isInit is true, set EP_FromDDL on every TK_FUNCTION node.
|
||||||
**
|
**
|
||||||
** For the purposes of this function, a double-quoted string (ex: "abc")
|
** For the purposes of this function, a double-quoted string (ex: "abc")
|
||||||
** is considered a variable but a single-quoted string (ex: 'abc') is
|
** is considered a variable but a single-quoted string (ex: 'abc') is
|
||||||
|
|||||||
@@ -572,7 +572,7 @@ void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 moreToFollow){
|
|||||||
}else{
|
}else{
|
||||||
pFarg = pExpr->x.pList;
|
pFarg = pExpr->x.pList;
|
||||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||||
pWin = pExpr->y.pWin;
|
pWin = ExprHasProperty(pExpr, EP_WinFunc) ? pExpr->y.pWin : 0;
|
||||||
#else
|
#else
|
||||||
pWin = 0;
|
pWin = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user