diff options
author | drh <> | 2021-03-16 18:41:20 +0000 |
---|---|---|
committer | drh <> | 2021-03-16 18:41:20 +0000 |
commit | a7d8d4a07a37ade15622e83eb12e109a452ad07f (patch) | |
tree | 5e5e58ff14d2fbf4f63cd4599fa41a7527b00dd4 | |
parent | 0d3485f019668ed6f7b0ea3ddc9670fa6e3cfa03 (diff) | |
download | sqlite-a7d8d4a07a37ade15622e83eb12e109a452ad07f.tar.gz sqlite-a7d8d4a07a37ade15622e83eb12e109a452ad07f.zip |
Date/time functions with no arguments (ex: date() or time()) should be
non-deterministic. Fix for ticket [2c6c8689fb5f3d2f].
FossilOrigin-Name: 1734c332e7f609769fc30f82cf7af097c2964e08900ee3e297f6a25e6df60555
-rw-r--r-- | manifest | 14 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/date.c | 1 | ||||
-rw-r--r-- | test/date2.test | 7 |
4 files changed, 16 insertions, 8 deletions
@@ -1,5 +1,5 @@ -C Increase\sthe\sversion\snumber\sto\s3.35.2. -D 2021-03-16T14:43:26.754 +C Date/time\sfunctions\swith\sno\sarguments\s(ex:\sdate()\sor\stime())\sshould\sbe\nnon-deterministic.\s\sFix\sfor\sticket\s[2c6c8689fb5f3d2f]. +D 2021-03-16T18:41:20.462 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -490,7 +490,7 @@ F src/build.c fec73c39d756f31d35ccbaa80fe1e040a8d675a318d4d30f41c444167bf3b860 F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410 -F src/date.c dace306a10d9b02ee553d454c8e1cf8d3c9b932e137738a6b15b90253a9bfc10 +F src/date.c e0632f335952b32401482d099321bbf12716b29d6e72836b53ae49683ebae4bf F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c F src/delete.c 73f57a9a183532c344a3135cf8f2a5589376e39183e0b5f562d6b61b2af0f4d8 @@ -822,7 +822,7 @@ F test/cursorhint.test 0175e4404181ace3ceca8b114eb0a98eae600d565aa4e2705abbe6614 F test/cursorhint2.test 6f3aa9cb19e7418967a10ec6905209bcbb5968054da855fc36c8beee9ae9c42f F test/dataversion1.test 6e5e86ac681f0782e766ebcb56c019ae001522d114e0e111e5ebf68ccf2a7bb8 F test/date.test 9b73bbeb1b82d9c1f44dec5cf563bf7da58d2373 -F test/date2.test 520a1708e4e14c682cf514560f3e9f2e5affa9d66560fbc2a6941ae291260daf +F test/date2.test 7e12ec14aaf4d5e6294b4ba140445b0eca06ea50062a9c3a69c4ee13d0b6f8b1 F test/dbdata.test 042f49acff3438f940eeba5868d3af080ae64ddf26ae78f80c92bec3ca7d8603 F test/dbfuzz.c 73047c920d6210e5912c87cdffd9a1c281d4252e F test/dbfuzz001.test 55e1a3504f8dea84155e09912fe3b1c3ad77e0b1a938ec42ca03b8e51b321e30 @@ -1910,7 +1910,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 7dbbe5b34eea31ea54a5804035d4d0dfeb09c42cd9ab337e1e64c1296decbef3 -R 8a933be500aa9dc5d4a1168e0f799c89 +P 7a211b3f09b17b758ac43c3ed14e3f90c55459077412a57baca0f7cadff47fbf +R dd9db537d7438077a73654ea2cdef93c U drh -Z ee50663fffbb70e04924ee91377f83fc +Z 52a4ccdcc1c4ac4a8964e528ecbca892 diff --git a/manifest.uuid b/manifest.uuid index 5a8a6f4f7..969256d53 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7a211b3f09b17b758ac43c3ed14e3f90c55459077412a57baca0f7cadff47fbf
\ No newline at end of file +1734c332e7f609769fc30f82cf7af097c2964e08900ee3e297f6a25e6df60555
\ No newline at end of file diff --git a/src/date.c b/src/date.c index 1db26b1c6..f88f544e3 100644 --- a/src/date.c +++ b/src/date.c @@ -881,6 +881,7 @@ static int isDate( int eType; memset(p, 0, sizeof(*p)); if( argc==0 ){ + if( !sqlite3NotPureFunc(context) ) return 1; return setDateTimeToCurrent(context, p); } if( (eType = sqlite3_value_type(argv[0]))==SQLITE_FLOAT diff --git a/test/date2.test b/test/date2.test index 30a475737..a16e25c44 100644 --- a/test/date2.test +++ b/test/date2.test @@ -38,6 +38,13 @@ do_catchsql_test date2-130 { INSERT INTO t1(x,y) VALUES('2017-08-01','two'); } {1 {CHECK constraint failed: date(x) BETWEEN '2017-07-01' AND '2017-07-31'}} +# 2021-03-16 Forum post https://sqlite.org/forum/forumpost/464afd4086 +do_catchsql_test date2-140 { + DROP TABLE t1; + CREATE TABLE t1(x, y, z AS (date())); + INSERT INTO t1(x,y) VALUES(1,2); +} {1 {non-deterministic use of date() in a generated column}} + do_execsql_test date2-200 { CREATE TABLE t2(x,y); INSERT INTO t2(x,y) VALUES(1, '2017-07-20'), (2, 'xyzzy'); |