Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 727416b4a9 | |||
| 6387021016 | |||
| c1969cc43f | |||
| 8b70c07802 | |||
| 2e68c73753 | |||
| 469bba6291 |
@@ -1,5 +1,5 @@
|
||||
C Earlier\serror\sdetection\sfor\sindex\sexpression\susage\sby\saggregate\sfunctions.\ndbsqlfuzz\s29214ace4e25c98d2ddff8fbcf97afdda23f28b9
|
||||
D 2023-03-30T19:05:48.274
|
||||
C Merge\srecent\strunk\sfixes\sinto\sthe\snan-inf\sbranch.
|
||||
D 2023-03-31T16:27:58.658
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@@ -570,7 +570,7 @@ F src/btreeInt.h 06bb2c1a07172d5a1cd27a2a5d617b93b1e976c5873709c31964786f86365a6
|
||||
F src/build.c 8357d6ca9a8c9afc297c431df28bc2af407b47f3ef2311875276c944b30c4d54
|
||||
F src/callback.c 4cd7225b26a97f7de5fee5ae10464bed5a78f2adefe19534cc2095b3a8ca484a
|
||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||
F src/ctime.c 20507cc0b0a6c19cd882fcd0eaeda32ae6a4229fb4b024cfdf3183043d9b703d
|
||||
F src/ctime.c 534fa410fd717337300f4bfc39cabf95981d4936f8943ecd1de13554d3edd724
|
||||
F src/date.c f21815ca7172ce073db3163ac54c8d9f2841077165c1a6123b4d1c376a0c7ec7
|
||||
F src/dbpage.c d47549716549311f79dc39fe5c8fb19390a6eb2c960f8e37c89a9c4de0c1052e
|
||||
F src/dbstat.c ec92074baa61d883de58c945162d9e666c13cd7cf3a23bc38b4d1c4d0b2c2bef
|
||||
@@ -578,14 +578,14 @@ F src/delete.c a9c6d3f51c0a31e9b831e0a0580a98d702904b42d216fee530940e40dec34873
|
||||
F src/expr.c 5f2b5f25a90aa4ff1c84d175b1adf790be8f8719f3b38851e2b5b293e0e5e916
|
||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||
F src/fkey.c 722f20779f5342a787922deded3628d8c74b5249cab04098cf17ee2f2aaff002
|
||||
F src/func.c d187be57a886ddf4e6b7ef584a494361899be3df5eee6d4a747b68ff4aff4122
|
||||
F src/func.c 858f7a1ce2ae27f22564e7336b7f06206c262577c22a8720be45690828a4fe4f
|
||||
F src/global.c 428d2580a1cdf5dbe1f356d1feab83710ae0cc862ece0fb57bc8259e43838c74
|
||||
F src/hash.c c6af5f96a7a76d000f07c5402c48c318c2566beecdee9e78b9d9f60ce7119565
|
||||
F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51
|
||||
F src/hwtime.h b638809e083b601b618df877b2e89cb87c2a47a01f4def10be4c4ebb54664ac7
|
||||
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
|
||||
F src/insert.c a8de1db43335fc4946370a7a7e47d89975ad678ddb15078a150e993ba2fb37d4
|
||||
F src/json.c 9e3a6acf9e4fa8bb6c84a38538ed9c2f9ad09f106910ef0e9cc68e19c8dc4fc8
|
||||
F src/json.c 29375e70f76339679dbe03a7d71e32186a789ac33b2a2c7285aa9852279b7e67
|
||||
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
||||
F src/loadext.c be5af440f3192c58681b5d43167dbca3ccbfce394d89faa22378a14264781136
|
||||
F src/main.c 09bc5191f75dc48fc4dfddda143cb864c0c3dbc3297eb9a9c8e01fea58ff847d
|
||||
@@ -630,7 +630,7 @@ F src/shell.c.in d80b53a9ec0a43ac0157fc54d667cb49fb6dd2229558135530feab2fc04b909
|
||||
F src/sqlite.h.in f01033703156615566bb329144d736a37fc35a278049db91127782a9c799b938
|
||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||
F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4
|
||||
F src/sqliteInt.h 2a3331b16b70b0b56c65574bf3e4f749ccf493787ca6550a29dc389cad28bb34
|
||||
F src/sqliteInt.h 5291d87b9c81f359e595f63bf14334f0a346889a830dc936251628144ac31091
|
||||
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
|
||||
F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
|
||||
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
||||
@@ -649,7 +649,7 @@ F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0
|
||||
F src/test_bestindex.c 68c62586d2ae9f032903fe53be743657d0c2aac0a850b880938b668e1161d516
|
||||
F src/test_blob.c ae4a0620b478548afb67963095a7417cd06a4ec0a56adb453542203bfdcb31ce
|
||||
F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
|
||||
F src/test_config.c 8264637b06a3c1f0727c88d1ea32dcf7986b9e7e358a970cae87cdac8a5b2708
|
||||
F src/test_config.c 7f1ee1ebe6410e13885705337342d675decef88eaf73ccab694629bd334cfdf7
|
||||
F src/test_delete.c e2fe07646dff6300b48d49b2fee2fe192ed389e834dd635e3b3bac0ce0bf9f8f
|
||||
F src/test_demovfs.c 38a459d1c78fd9afa770445b224c485e079018d6ac07332ff9bd07b54d2b8ce9
|
||||
F src/test_devsym.c aff2255ea290d7718da08af30cdf18e470ff7325a5eff63e0057b1496ed66593
|
||||
@@ -693,9 +693,9 @@ F src/trigger.c ad6ab9452715fa9a8075442e15196022275b414b9141b566af8cdb7a1605f2b0
|
||||
F src/update.c 3f4fb5ad7c9b48d7911974d6579192bb3a6c27f46140b6cbb9139cc8a77b8691
|
||||
F src/upsert.c 5303dc6c518fa7d4b280ec65170f465c7a70b7ac2b22491598f6d0b4875b3145
|
||||
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
|
||||
F src/util.c 3ff7bc2b48dd425b1448304bb86273b05da1621f136d51dbb9789f8803559a1f
|
||||
F src/util.c be2f2ba283ecfcd39a92c26a4f27ba39d295da35ad29ef551998c174818545ef
|
||||
F src/vacuum.c 84ce7f01f8a7a08748e107a441db83bcec13970190ddcb0c9ff522adbc1c23fd
|
||||
F src/vdbe.c a6c52ba65e8ceb574fe0eda62af84e6c50c176ffc5f310c613425f7ab2b1484b
|
||||
F src/vdbe.c 61cb236aef7a578dbd8966f53860e03e986b5c84912ceaf71441a3f64fe07022
|
||||
F src/vdbe.h 73b904a6b3bb27f308c6cc287a5751ebc7f1f89456be0ed068a12b92844c6e8c
|
||||
F src/vdbeInt.h a4147a4ddf613cb1bcb555ace9e9e74a9c099d65facd88155f191b1fb4d74cfb
|
||||
F src/vdbeapi.c 998d240b3afd78df3581d545240330ca4cc09ecd10d0af730fe364f1c7eb253d
|
||||
@@ -1977,7 +1977,7 @@ F tool/max-limits.c cbb635fbb37ae4d05f240bfb5b5270bb63c54439
|
||||
F tool/merge-test.tcl de76b62f2de2a92d4c1ca4f976bce0aea6899e0229e250479b229b2a1914b176
|
||||
F tool/mkautoconfamal.sh f62353eb6c06ab264da027fd4507d09914433dbdcab9cb011cdc18016f1ab3b8
|
||||
F tool/mkccode.tcl 86463e68ce9c15d3041610fedd285ce32a5cf7a58fc88b3202b8b76837650dbe x
|
||||
F tool/mkctimec.tcl 38e3db33210a200aae791635125052a643a27aa0619a0debf19aa9c55e1b2dde x
|
||||
F tool/mkctimec.tcl cf2e2485c291d259655a28140317840387a374851f3608410449d660026064d2 x
|
||||
F tool/mkkeywordhash.c 35bfc41adacc4aa6ef6fca7fd0c63e0ec0534b78daf4d0cfdebe398216bbffc3
|
||||
F tool/mkmsvcmin.tcl 6ecab9fe22c2c8de4d82d4c46797bda3d2deac8e763885f5a38d0c44a895ab33
|
||||
F tool/mkopcodec.tcl 33d20791e191df43209b77d37f0ff0904620b28465cca6990cf8d60da61a07ef
|
||||
@@ -2052,8 +2052,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 960a488a2db92f5437bc8171cdbed44618d9381c57fd41b2f0e357b6012c80b5
|
||||
R 4f561ce7d94ebba6771f71291846cad2
|
||||
P d8b17615f129b40b751b1642cdd3482181e7f181bb930a2bd793eec771a7b10e 8e841e7f025f7205959453875f2d9db36271642045593970a2b2fc20b2f847c3
|
||||
R fafa72d365cc94d46e13b1f30fd4c09c
|
||||
U drh
|
||||
Z 91fc03feb4d1edcaf09570adbf0b39df
|
||||
Z 9fdad37f67f1b67c950492277bf151ea
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
8e841e7f025f7205959453875f2d9db36271642045593970a2b2fc20b2f847c3
|
||||
a51fb9d72cab77eb1e6f9d6344adaf60b7fd212888bface4551602d820a7657f
|
||||
+3
-3
@@ -60,9 +60,6 @@ static const char * const sqlite3azCompileOpt[] = {
|
||||
#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
|
||||
"4_BYTE_ALIGNED_MALLOC",
|
||||
#endif
|
||||
#ifdef SQLITE_64BIT_STATS
|
||||
"64BIT_STATS",
|
||||
#endif
|
||||
#ifdef SQLITE_ALLOW_COVERING_INDEX_SCAN
|
||||
# if SQLITE_ALLOW_COVERING_INDEX_SCAN != 1
|
||||
"ALLOW_COVERING_INDEX_SCAN=" CTIMEOPT_VAL(SQLITE_ALLOW_COVERING_INDEX_SCAN),
|
||||
@@ -286,6 +283,9 @@ static const char * const sqlite3azCompileOpt[] = {
|
||||
#ifdef SQLITE_ENABLE_MULTIPLEX
|
||||
"ENABLE_MULTIPLEX",
|
||||
#endif
|
||||
#ifdef SQLITE_ENABLE_NAN_INF
|
||||
"ENABLE_NAN_INF",
|
||||
#endif
|
||||
#ifdef SQLITE_ENABLE_NORMALIZE
|
||||
"ENABLE_NORMALIZE",
|
||||
#endif
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
#include "sqliteInt.h"
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#ifndef SQLITE_OMIT_FLOATING_POINT
|
||||
#include <math.h>
|
||||
#endif
|
||||
#include "vdbeInt.h"
|
||||
|
||||
/*
|
||||
|
||||
+27
@@ -902,6 +902,19 @@ static int jsonParseValue(JsonParse *pParse, u32 i){
|
||||
if( c<'0' || c>'9' ) return -1;
|
||||
continue;
|
||||
}
|
||||
#ifdef SQLITE_ENABLE_NAN_INF
|
||||
/* Non-standard JSON: Allow "-Inf" (in any case)
|
||||
** to be understood as floating point literals. */
|
||||
if( (c=='i' || c=='I')
|
||||
&& j==i+1
|
||||
&& z[i]=='-'
|
||||
&& sqlite3StrNICmp(&z[j], "inf",3)==0
|
||||
&& !sqlite3Isalnum(z[j+4])
|
||||
){
|
||||
jsonParseAddNode(pParse, JSON_REAL, 4, &z[i]);
|
||||
return i+4;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
if( z[j-1]<'0' ) return -1;
|
||||
@@ -914,6 +927,20 @@ static int jsonParseValue(JsonParse *pParse, u32 i){
|
||||
return -3; /* End of [...] */
|
||||
}else if( c==0 ){
|
||||
return 0; /* End of file */
|
||||
#ifdef SQLITE_ENABLE_NAN_INF
|
||||
/* Non-standard JSON: Allow "NaN" and "Inf" (in any case)
|
||||
** to be understood as floating point literals. */
|
||||
}else if( (c=='n' || c=='N')
|
||||
&& sqlite3StrNICmp(z+i,"nan",3)==0
|
||||
&& !sqlite3Isalnum(z[i+3]) ){
|
||||
jsonParseAddNode(pParse, JSON_REAL, 3, &z[i]);
|
||||
return i+3;
|
||||
}else if( (c=='i' || c=='I')
|
||||
&& sqlite3StrNICmp(z+i,"inf",3)==0
|
||||
&& !sqlite3Isalnum(z[i+3]) ){
|
||||
jsonParseAddNode(pParse, JSON_REAL, 3, &z[i]);
|
||||
return i+3;
|
||||
#endif /* SQLITE_ENABLE_NAN_INF */
|
||||
}else{
|
||||
return -1; /* Syntax error */
|
||||
}
|
||||
|
||||
@@ -249,6 +249,9 @@
|
||||
#ifdef HAVE_INTTYPES_H
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
#ifndef SQLITE_OMIT_FLOATING_POINT
|
||||
#include <math.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
** The following macros are used to cast pointers to integers and
|
||||
|
||||
@@ -771,6 +771,12 @@ Tcl_SetVar2(interp, "sqlite_options", "mergesort", "1", TCL_GLOBAL_ONLY);
|
||||
Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "0", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
|
||||
#if defined(SQLITE_ENABLE_NAN_INF)
|
||||
Tcl_SetVar2(interp, "sqlite_options", "nan_inf", "1", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "nan_inf", "0", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
|
||||
#if defined(SQLITE_ENABLE_NORMALIZE)
|
||||
Tcl_SetVar2(interp, "sqlite_options", "normalize", "1", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
|
||||
+33
@@ -425,6 +425,34 @@ static LONGDOUBLE_TYPE sqlite3Pow10(int E){
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SQLITE_ENABLE_NAN_INF
|
||||
/* If the input string z[] is one of the special values
|
||||
** "inf" or "NaN" (in any case) then set pResult to that
|
||||
** value and return true. Otherwise return false.
|
||||
*/
|
||||
static int translateInfNan(
|
||||
const char *z,
|
||||
int incr,
|
||||
double *pResult
|
||||
){
|
||||
if( (z[0]=='i' || z[0]=='I')
|
||||
&& (z[incr]=='n' || z[incr]=='N')
|
||||
&& (z[2*incr]=='f' || z[2*incr]=='f')
|
||||
){
|
||||
*pResult = INFINITY;
|
||||
return 1;
|
||||
}
|
||||
if( (z[0]=='n' || z[0]=='N')
|
||||
&& (z[incr]=='a' || z[incr]=='A')
|
||||
&& (z[2*incr]=='n' || z[2*incr]=='N')
|
||||
){
|
||||
*pResult = NAN;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif /* SQLITE_ENABLE_NAN_INF */
|
||||
|
||||
/*
|
||||
** The string z[] is an text representation of a real number.
|
||||
** Convert this string to a double and write it into *pResult.
|
||||
@@ -640,6 +668,11 @@ do_atof_calc:
|
||||
return eType;
|
||||
}else if( eType>=2 && (eType==3 || eValid) && nDigit>0 ){
|
||||
return -1;
|
||||
#ifdef SQLITE_ENABLE_NAN_INF
|
||||
}else if( (zEnd-z)==3*incr && translateInfNan(z,incr,&result) ){
|
||||
*pResult = sign ? +result : -result;
|
||||
return 2;
|
||||
#endif
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
|
||||
+5
-1
@@ -1250,8 +1250,12 @@ case OP_Int64: { /* out2 */
|
||||
case OP_Real: { /* same as TK_FLOAT, out2 */
|
||||
pOut = out2Prerelease(p, pOp);
|
||||
pOut->flags = MEM_Real;
|
||||
assert( !sqlite3IsNaN(*pOp->p4.pReal) );
|
||||
pOut->u.r = *pOp->p4.pReal;
|
||||
#ifdef SQLITE_ENABLE_NAN_INF
|
||||
if( sqlite3IsNaN(pOut->u.r) ) pOut->flags = MEM_Null;
|
||||
#else
|
||||
assert( !sqlite3IsNaN(pOut->u.r) );
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -149,6 +149,7 @@ set boolean_defnil_options {
|
||||
SQLITE_ENABLE_MEMSYS3
|
||||
SQLITE_ENABLE_MEMSYS5
|
||||
SQLITE_ENABLE_MULTIPLEX
|
||||
SQLITE_ENABLE_NAN_INF
|
||||
SQLITE_ENABLE_NORMALIZE
|
||||
SQLITE_ENABLE_NULL_TRIM
|
||||
SQLITE_ENABLE_OFFSET_SQL_FUNC
|
||||
|
||||
Reference in New Issue
Block a user