Up until version 3.42.0, there was a bug in json_valid() such that it would
return False (0) for a NULL input. That bug is fixed in 3.42.0. This check-in adds a compile-time option -DSQLITE_LEGACY_JSON_VALID that restores the old buggy behavior for applications that depend on it. FossilOrigin-Name: 15c2eadbff8e732cca45d6c3771d1fcea5aab2127e87f2a611b41ccfef4d1a0d
This commit is contained in:
+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),
|
||||
@@ -399,6 +396,9 @@ static const char * const sqlite3azCompileOpt[] = {
|
||||
#ifdef SQLITE_INTEGRITY_CHECK_ERROR_MAX
|
||||
"INTEGRITY_CHECK_ERROR_MAX=" CTIMEOPT_VAL(SQLITE_INTEGRITY_CHECK_ERROR_MAX),
|
||||
#endif
|
||||
#ifdef SQLITE_LEGACY_JSON_VALID
|
||||
"LEGACY_JSON_VALID",
|
||||
#endif
|
||||
#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS
|
||||
"LIKE_DOESNT_MATCH_BLOBS",
|
||||
#endif
|
||||
|
||||
+7
-1
@@ -3009,7 +3009,13 @@ static void jsonValidFunc(
|
||||
){
|
||||
JsonParse *p; /* The parse */
|
||||
UNUSED_PARAMETER(argc);
|
||||
if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
|
||||
if( sqlite3_value_type(argv[0])==SQLITE_NULL ){
|
||||
#ifdef SQLITE_LEGACY_JSON_VALID
|
||||
/* Incorrect legacy behavior was to return FALSE for a NULL input */
|
||||
sqlite3_result_int(ctx, 0);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
p = jsonParseCached(ctx, argv[0], 0, 0);
|
||||
if( p==0 || p->oom ){
|
||||
sqlite3_result_error_nomem(ctx);
|
||||
|
||||
Reference in New Issue
Block a user