1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-05 15:55:57 +03:00

Unknown functions in the DEFAULT clause of a table cause an error when

the DEFAULT value is needed.  Ticket [2d401a94287b5].

FossilOrigin-Name: 093917d7fda442012dfd1a1b2f20f85d2eefa093
This commit is contained in:
drh
2009-08-18 16:05:46 +00:00
parent 1b25753b30
commit feb306f556
4 changed files with 27 additions and 15 deletions

View File

@@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE----- -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Hash: SHA1
C Move\sthe\sallocation\sof\sthe\smemsys5\smutex\sinto\sthe\sinitializer. C Unknown\sfunctions\sin\sthe\sDEFAULT\sclause\sof\sa\stable\scause\san\serror\swhen\nthe\sDEFAULT\svalue\sis\sneeded.\s\sTicket\s[2d401a94287b5].
D 2009-08-18T15:33:44 D 2009-08-18T16:05:47
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 0f7761c5d1c62ae7a841e3393ffaff1fa0f5c00a F Makefile.in 0f7761c5d1c62ae7a841e3393ffaff1fa0f5c00a
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -117,7 +117,7 @@ F src/callback.c cb68b21b0d4ae7d11ae0e487933bce3323784dcf
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0 F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
F src/date.c ab5f7137656652a48434d64f96bdcdc823bb23b3 F src/date.c ab5f7137656652a48434d64f96bdcdc823bb23b3
F src/delete.c dcf07632d8ca3d4086df8b65ea907a47278e6382 F src/delete.c dcf07632d8ca3d4086df8b65ea907a47278e6382
F src/expr.c d069ba1e060f296ea4f18fb85198fafefd00b22f F src/expr.c 73b678023236b8c10078a0291b43ee642bc2c729
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
F src/func.c e536218d193b8d326aab91120bc4c6f28aa2b606 F src/func.c e536218d193b8d326aab91120bc4c6f28aa2b606
F src/global.c 271952d199a8cc59d4ce840b3bbbfd2f30c8ba32 F src/global.c 271952d199a8cc59d4ce840b3bbbfd2f30c8ba32
@@ -390,7 +390,7 @@ F test/fts3e.test 1f6c6ac9cc8b772ca256e6b22aaeed50c9350851
F test/fts3expr.test 05dab77387801e4900009917bb18f556037d82da F test/fts3expr.test 05dab77387801e4900009917bb18f556037d82da
F test/fts3expr2.test 18da930352e5693eaa163a3eacf96233b7290d1a F test/fts3expr2.test 18da930352e5693eaa163a3eacf96233b7290d1a
F test/fts3near.test dc196dd17b4606f440c580d45b3d23aa975fd077 F test/fts3near.test dc196dd17b4606f440c580d45b3d23aa975fd077
F test/func.test 004caa157b91986bed8c85d7c7d0a86d6e10528d F test/func.test af106ed834001738246d276659406823e35cde7b
F test/fuzz.test a4174c3009a3e2c2e14b31b364ebf7ddb49de2c9 F test/fuzz.test a4174c3009a3e2c2e14b31b364ebf7ddb49de2c9
F test/fuzz2.test ea38692ce2da99ad79fe0be5eb1a452c1c4d37bb F test/fuzz2.test ea38692ce2da99ad79fe0be5eb1a452c1c4d37bb
F test/fuzz3.test aec64345184d1662bd30e6a17851ff659d596dc5 F test/fuzz3.test aec64345184d1662bd30e6a17851ff659d596dc5
@@ -749,14 +749,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746 F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
P 577bd6f15556b7f6d86ee5167353fdd535577bf6 P 4e377a09c194e90581ef00fd3a213e936b4e648a
R 7a54c62e9fd97dfd56b8fffe44a0eb37 R 106d1d9d8292feaff5d209c1b4f45eea
U drh U drh
Z 6c0284c62829374caa380ff879613eb8 Z b419ed2a8ad50212ba01b76deb05691b
-----BEGIN PGP SIGNATURE----- -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux) Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFKisnboxKgR168RlERAte8AJ9s8UclPlH5WT13RZFRWzIyo6zclwCfSBfR iD8DBQFKitFeoxKgR168RlERAoHVAJ4kYkqnImXF2E1lmnWXndOvcAnongCcDG/w
YrNqMlhHVmQCc/np3MWIiWY= uMdlFViYbHuGvwIqgTnxRjY=
=G+W/ =T5a1
-----END PGP SIGNATURE----- -----END PGP SIGNATURE-----

View File

@@ -1 +1 @@
4e377a09c194e90581ef00fd3a213e936b4e648a 093917d7fda442012dfd1a1b2f20f85d2eefa093

View File

@@ -11,8 +11,6 @@
************************************************************************* *************************************************************************
** This file contains routines used for analyzing expressions and ** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite. ** for generating VDBE code that evaluates expressions in SQLite.
**
** $Id: expr.c,v 1.448 2009/07/27 10:05:05 danielk1977 Exp $
*/ */
#include "sqliteInt.h" #include "sqliteInt.h"
@@ -2372,7 +2370,10 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
zId = pExpr->u.zToken; zId = pExpr->u.zToken;
nId = sqlite3Strlen30(zId); nId = sqlite3Strlen30(zId);
pDef = sqlite3FindFunction(db, zId, nId, nFarg, enc, 0); pDef = sqlite3FindFunction(db, zId, nId, nFarg, enc, 0);
assert( pDef!=0 ); if( pDef==0 ){
sqlite3ErrorMsg(pParse, "unknown function: %.*s()", nId, zId);
break;
}
if( pFarg ){ if( pFarg ){
r1 = sqlite3GetTempRange(pParse, nFarg); r1 = sqlite3GetTempRange(pParse, nFarg);
sqlite3ExprCodeExprList(pParse, pFarg, r1, 1); sqlite3ExprCodeExprList(pParse, pFarg, r1, 1);

View File

@@ -11,7 +11,6 @@
# This file implements regression tests for SQLite library. The # This file implements regression tests for SQLite library. The
# focus of this file is testing built-in functions. # focus of this file is testing built-in functions.
# #
# $Id: func.test,v 1.93 2009/06/19 16:44:41 drh Exp $
set testdir [file dirname $argv0] set testdir [file dirname $argv0]
source $testdir/tester.tcl source $testdir/tester.tcl
@@ -1157,4 +1156,16 @@ do_test func-27.3 {
catchsql {SELECT coalesce(1,2)} catchsql {SELECT coalesce(1,2)}
} {0 1} } {0 1}
# Ticket 2d401a94287b5
# Unknown function in a DEFAULT expression causes a segfault.
#
do_test func-28.1 {
db eval {
CREATE TABLE t28(x, y DEFAULT(nosuchfunc(1)));
}
catchsql {
INSERT INTO t28(x) VALUES(1);
}
} {1 {unknown function: nosuchfunc()}}
finish_test finish_test