mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix some of the new date/time function features to comply with the spec.
Update requirement marks. FossilOrigin-Name: 2f5dc7a9eed89baf6814e9e123354b262c806c853dee1243c93286c564b9aba8
This commit is contained in:
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
|||||||
C When\scomputing\sa\svector\sto\sbe\sused\sas\sa\skey\sfor\san\sindex\slookup,\sdo\snot\ncheck\sfor\sNULL\svalues\sand\sabort\suntil\safter\sall\skey\svalues\shave\sbeen\ncomputed,\sin\scase\sone\sof\sthe\slater\skey\svalues\sinvolves\ssome\sinitialization\nthat\sis\sneeded\sby\sa\sLEFT\sJOIN.\s\sFix\sfor\sthe\sproblem\sidentified\sby\n[forum:/forumpost/ab95010d410a0a55|Forum\spost\sab95010d410a0a55].
|
C Fix\ssome\sof\sthe\snew\sdate/time\sfunction\sfeatures\sto\scomply\swith\sthe\sspec.\nUpdate\srequirement\smarks.
|
||||||
D 2022-01-21T16:41:11.844
|
D 2022-01-21T18:57:30.991
|
||||||
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
|
||||||
@ -499,7 +499,7 @@ F src/build.c c72407a27a28982a384cd453a3a6b6992a1ceae8bd8d95e96d7fb9c0d645a32f
|
|||||||
F src/callback.c 4c19af69835787bfe790ac560f3071a824eb629f34e41f97b52ce5235c77de1c
|
F src/callback.c 4c19af69835787bfe790ac560f3071a824eb629f34e41f97b52ce5235c77de1c
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 2cce39df1a13e05b7633e6d21b651f21492471f991dd7b323a4ee4e7b7f0b7f1
|
F src/ctime.c 2cce39df1a13e05b7633e6d21b651f21492471f991dd7b323a4ee4e7b7f0b7f1
|
||||||
F src/date.c ab8e01d928f201f5dee0bc6d54d6702fdcec96dff4d58c387447671f6a46d191
|
F src/date.c e25773f06a8f9043bfa1e5fa0bee93483c41933adfff0891752f00eadd12ab1c
|
||||||
F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
|
F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
|
||||||
F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
|
F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
|
||||||
F src/delete.c 19814f621cde10b1771a0dea7fe25d3d7d39975b8d4be4888537d30860e7c08c
|
F src/delete.c 19814f621cde10b1771a0dea7fe25d3d7d39975b8d4be4888537d30860e7c08c
|
||||||
@ -639,7 +639,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
|||||||
F src/wal.c b9df133a705093da8977da5eb202eaadb844839f1c7297c08d33471f5491843d
|
F src/wal.c b9df133a705093da8977da5eb202eaadb844839f1c7297c08d33471f5491843d
|
||||||
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
|
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
|
||||||
F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
|
F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
|
||||||
F src/where.c 6b4cd84869dafc250d2b0f47a2c190759904a4bb6a31fc930bc8e6a9fd9a8d77
|
F src/where.c eb54405957c295e0706cbaea74f9e7cbb3d3dfdefe35d243440d2b4cbf601f0c
|
||||||
F src/whereInt.h 91865afa4a3540bb3bd643619acc56fbceff7defeb8f249b8e157fd5325d88be
|
F src/whereInt.h 91865afa4a3540bb3bd643619acc56fbceff7defeb8f249b8e157fd5325d88be
|
||||||
F src/wherecode.c a0a5138b28550dd95916435283c507aa6bf24607ef38a0a18011e6626684330a
|
F src/wherecode.c a0a5138b28550dd95916435283c507aa6bf24607ef38a0a18011e6626684330a
|
||||||
F src/whereexpr.c 9f64c39e53070584e99e4d20c1dd3397e125fabbae8fd414ffec574c410ac7d3
|
F src/whereexpr.c 9f64c39e53070584e99e4d20c1dd3397e125fabbae8fd414ffec574c410ac7d3
|
||||||
@ -1292,7 +1292,7 @@ F test/pragma5.test 7b33fc43e2e41abf17f35fb73f71b49671a380ea92a6c94b6ce530a25f8d
|
|||||||
F test/pragmafault.test 275edaf3161771d37de60e5c2b412627ac94cef11739236bec12ed1258b240f8
|
F test/pragmafault.test 275edaf3161771d37de60e5c2b412627ac94cef11739236bec12ed1258b240f8
|
||||||
F test/prefixes.test b524a1c44bffec225b9aec98bd728480352aa8532ac4c15771fb85e8beef65d9
|
F test/prefixes.test b524a1c44bffec225b9aec98bd728480352aa8532ac4c15771fb85e8beef65d9
|
||||||
F test/printf.test 390d0d7fcffc3c4ea3c1bb4cbb267444e32b33b048ae21895f23a291844fe1da
|
F test/printf.test 390d0d7fcffc3c4ea3c1bb4cbb267444e32b33b048ae21895f23a291844fe1da
|
||||||
F test/printf2.test 30b5dd0b4b992dc5626496846ecce17ff592cacbcb11c3e589f3ac4d7e129dae
|
F test/printf2.test 3f55c1871a5a65507416076f6eb97e738d5210aeda7595a74ee895f2224cce60
|
||||||
F test/progress.test ebab27f670bd0d4eb9d20d49cef96e68141d92fb
|
F test/progress.test ebab27f670bd0d4eb9d20d49cef96e68141d92fb
|
||||||
F test/ptrchng.test ef1aa72d6cf35a2bbd0869a649b744e9d84977fc
|
F test/ptrchng.test ef1aa72d6cf35a2bbd0869a649b744e9d84977fc
|
||||||
F test/pushdown.test 5e72c51c5e33253ed639ccee1e01ce62d62b6eee5ca893cd82334e4ee7b1d7fc
|
F test/pushdown.test 5e72c51c5e33253ed639ccee1e01ce62d62b6eee5ca893cd82334e4ee7b1d7fc
|
||||||
@ -1940,8 +1940,8 @@ 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 e19a0b132a641f0e9f3d72586af538b95b4db8665b1555f84bc0a291bf1a4056
|
P 4db5217a28ce767fa14ddfe51cf3ca25eceb72079d46a2fc00f7d6b8ae9abe0b
|
||||||
R 3ccffcbe5ebff55f0ce3325fb7a3c810
|
R 24d2bd64e4649dfdcb9c37612f05fb9b
|
||||||
U drh
|
U drh
|
||||||
Z c6c4905bc0565a74c6f262fe9b11d1a3
|
Z 2f4202747416d6f8106ca71a5cd08950
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
4db5217a28ce767fa14ddfe51cf3ca25eceb72079d46a2fc00f7d6b8ae9abe0b
|
2f5dc7a9eed89baf6814e9e123354b262c806c853dee1243c93286c564b9aba8
|
@ -658,7 +658,8 @@ static int parseModifier(
|
|||||||
sqlite3_context *pCtx, /* Function context */
|
sqlite3_context *pCtx, /* Function context */
|
||||||
const char *z, /* The text of the modifier */
|
const char *z, /* The text of the modifier */
|
||||||
int n, /* Length of zMod in bytes */
|
int n, /* Length of zMod in bytes */
|
||||||
DateTime *p /* The date/time value to be modified */
|
DateTime *p, /* The date/time value to be modified */
|
||||||
|
int idx /* Parameter index of the modifier */
|
||||||
){
|
){
|
||||||
int rc = 1;
|
int rc = 1;
|
||||||
double r;
|
double r;
|
||||||
@ -671,6 +672,7 @@ static int parseModifier(
|
|||||||
** a unix timestamp, depending on its magnitude.
|
** a unix timestamp, depending on its magnitude.
|
||||||
*/
|
*/
|
||||||
if( sqlite3_stricmp(z, "auto")==0 ){
|
if( sqlite3_stricmp(z, "auto")==0 ){
|
||||||
|
if( idx>1 ) return 1; /* IMP: R-33611-57934 */
|
||||||
if( !p->rawS || p->validJD ){
|
if( !p->rawS || p->validJD ){
|
||||||
rc = 0;
|
rc = 0;
|
||||||
p->rawS = 0;
|
p->rawS = 0;
|
||||||
@ -695,6 +697,7 @@ static int parseModifier(
|
|||||||
** SQLite (0..5373484.5) then the result will be NULL.
|
** SQLite (0..5373484.5) then the result will be NULL.
|
||||||
*/
|
*/
|
||||||
if( sqlite3_stricmp(z, "julianday")==0 ){
|
if( sqlite3_stricmp(z, "julianday")==0 ){
|
||||||
|
if( idx>1 ) return 1;
|
||||||
if( p->validJD && p->rawS ){
|
if( p->validJD && p->rawS ){
|
||||||
rc = 0;
|
rc = 0;
|
||||||
p->rawS = 0;
|
p->rawS = 0;
|
||||||
@ -938,7 +941,7 @@ static int isDate(
|
|||||||
for(i=1; i<argc; i++){
|
for(i=1; i<argc; i++){
|
||||||
z = sqlite3_value_text(argv[i]);
|
z = sqlite3_value_text(argv[i]);
|
||||||
n = sqlite3_value_bytes(argv[i]);
|
n = sqlite3_value_bytes(argv[i]);
|
||||||
if( z==0 || parseModifier(context, (char*)z, n, p) ) return 1;
|
if( z==0 || parseModifier(context, (char*)z, n, p, i) ) return 1;
|
||||||
}
|
}
|
||||||
computeJD(p);
|
computeJD(p);
|
||||||
if( p->isError || !validJulianDay(p->iJD) ) return 1;
|
if( p->isError || !validJulianDay(p->iJD) ) return 1;
|
||||||
|
@ -3684,7 +3684,7 @@ int sqlite3_vtab_rhs_value(
|
|||||||
}
|
}
|
||||||
*ppVal = pVal;
|
*ppVal = pVal;
|
||||||
|
|
||||||
if( rc==SQLITE_OK && pVal==0 ){ /* IMP: R-60459-24801 */
|
if( rc==SQLITE_OK && pVal==0 ){ /* IMP: R-19933-32160 */
|
||||||
rc = SQLITE_NOTFOUND; /* IMP: R-36424-56542 */
|
rc = SQLITE_NOTFOUND; /* IMP: R-36424-56542 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,10 +12,13 @@
|
|||||||
# focus of this file is testing the printf() SQL function.
|
# focus of this file is testing the printf() SQL function.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# EVIDENCE-OF: R-63057-40065 The printf(FORMAT,...) SQL function works
|
# EVIDENCE-OF: R-32560-14372 The format(FORMAT,...) SQL function works
|
||||||
# like the sqlite3_mprintf() C-language function and the printf()
|
# like the sqlite3_mprintf() C-language function and the printf()
|
||||||
# function from the standard C library.
|
# function from the standard C library.
|
||||||
#
|
#
|
||||||
|
# EVIDENCE-OF: R-64900-53159 The printf() SQL function is an alias for
|
||||||
|
# the format() SQL function.
|
||||||
|
#
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
@ -24,7 +27,7 @@ source $testdir/tester.tcl
|
|||||||
# then the result is NULL.
|
# then the result is NULL.
|
||||||
#
|
#
|
||||||
do_execsql_test printf2-1.1 {
|
do_execsql_test printf2-1.1 {
|
||||||
SELECT quote(printf()), quote(printf(NULL,1,2,3));
|
SELECT quote(format()), quote(format(NULL,1,2,3));
|
||||||
} {NULL NULL}
|
} {NULL NULL}
|
||||||
|
|
||||||
|
|
||||||
@ -32,31 +35,31 @@ do_execsql_test printf2-1.2 {
|
|||||||
SELECT printf('hello');
|
SELECT printf('hello');
|
||||||
} {hello}
|
} {hello}
|
||||||
do_execsql_test printf2-1.3 {
|
do_execsql_test printf2-1.3 {
|
||||||
SELECT printf('%d,%d,%d',55,-11,3421);
|
SELECT format('%d,%d,%d',55,-11,3421);
|
||||||
} {55,-11,3421}
|
} {55,-11,3421}
|
||||||
do_execsql_test printf2-1.4 {
|
do_execsql_test printf2-1.4 {
|
||||||
SELECT printf('%d,%d,%d',55,'-11',3421);
|
SELECT printf('%d,%d,%d',55,'-11',3421);
|
||||||
} {55,-11,3421}
|
} {55,-11,3421}
|
||||||
do_execsql_test printf2-1.5 {
|
do_execsql_test printf2-1.5 {
|
||||||
SELECT printf('%d,%d,%d,%d',55,'-11',3421);
|
SELECT format('%d,%d,%d,%d',55,'-11',3421);
|
||||||
} {55,-11,3421,0}
|
} {55,-11,3421,0}
|
||||||
do_execsql_test printf2-1.6 {
|
do_execsql_test printf2-1.6 {
|
||||||
SELECT printf('%.2f',3.141592653);
|
SELECT printf('%.2f',3.141592653);
|
||||||
} {3.14}
|
} {3.14}
|
||||||
do_execsql_test printf2-1.7 {
|
do_execsql_test printf2-1.7 {
|
||||||
SELECT printf('%.*f',2,3.141592653);
|
SELECT format('%.*f',2,3.141592653);
|
||||||
} {3.14}
|
} {3.14}
|
||||||
do_execsql_test printf2-1.8 {
|
do_execsql_test printf2-1.8 {
|
||||||
SELECT printf('%*.*f',5,2,3.141592653);
|
SELECT printf('%*.*f',5,2,3.141592653);
|
||||||
} {{ 3.14}}
|
} {{ 3.14}}
|
||||||
do_execsql_test printf2-1.9 {
|
do_execsql_test printf2-1.9 {
|
||||||
SELECT printf('%d',314159.2653);
|
SELECT format('%d',314159.2653);
|
||||||
} {314159}
|
} {314159}
|
||||||
do_execsql_test printf2-1.10 {
|
do_execsql_test printf2-1.10 {
|
||||||
SELECT printf('%lld',314159.2653);
|
SELECT printf('%lld',314159.2653);
|
||||||
} {314159}
|
} {314159}
|
||||||
do_execsql_test printf2-1.11 {
|
do_execsql_test printf2-1.11 {
|
||||||
SELECT printf('%lld%n',314159.2653,'hi');
|
SELECT format('%lld%n',314159.2653,'hi');
|
||||||
} {314159}
|
} {314159}
|
||||||
do_execsql_test printf2-1.12 {
|
do_execsql_test printf2-1.12 {
|
||||||
SELECT printf('%n',0);
|
SELECT printf('%n',0);
|
||||||
@ -65,7 +68,7 @@ do_execsql_test printf2-1.12 {
|
|||||||
# EVIDENCE-OF: R-17002-27534 The %z format is interchangeable with %s.
|
# EVIDENCE-OF: R-17002-27534 The %z format is interchangeable with %s.
|
||||||
#
|
#
|
||||||
do_execsql_test printf2-1.12 {
|
do_execsql_test printf2-1.12 {
|
||||||
SELECT printf('%.*z',5,'abcdefghijklmnop');
|
SELECT format('%.*z',5,'abcdefghijklmnop');
|
||||||
} {abcde}
|
} {abcde}
|
||||||
do_execsql_test printf2-1.13 {
|
do_execsql_test printf2-1.13 {
|
||||||
SELECT printf('%c','abcdefghijklmnop');
|
SELECT printf('%c','abcdefghijklmnop');
|
||||||
|
Reference in New Issue
Block a user