aboutsummaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
authordrh <>2023-12-18 15:53:48 +0000
committerdrh <>2023-12-18 15:53:48 +0000
commit095f2c5082e85d8122225227d3c8923880ef348d (patch)
tree3c27afe1aa97cf436bbd15fef21363357477c46f /src/json.c
parentcf6fe5abe31020a895b34502bad3deb6708fdac7 (diff)
downloadsqlite-095f2c5082e85d8122225227d3c8923880ef348d.tar.gz
sqlite-095f2c5082e85d8122225227d3c8923880ef348d.zip
Ensure that the insert/delete size delta on JSONB objects in the JSON cache
are always set to zero. FossilOrigin-Name: 4b4581668a908473dbf1322a3e98bc7cca122998c44518ea183af7f0d1ba9f95
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/json.c b/src/json.c
index a1441e809..2756590eb 100644
--- a/src/json.c
+++ b/src/json.c
@@ -374,6 +374,7 @@ static int jsonCacheInsert(
assert( pParse->zJson!=0 );
assert( pParse->bJsonIsRCStr );
+ assert( pParse->delta==0 );
p = sqlite3_get_auxdata(ctx, JSON_CACHE_ID);
if( p==0 ){
sqlite3 *db = sqlite3_context_db_handle(ctx);
@@ -446,6 +447,7 @@ static JsonParse *jsonCacheSearch(
p->a[p->nUsed-1] = tmp;
i = p->nUsed - 1;
}
+ assert( p->a[i]->delta==0 );
return p->a[i];
}else{
return 0;
@@ -3306,6 +3308,7 @@ static void jsonReturnParse(
}else{
JsonString s;
jsonStringInit(&s, ctx);
+ p->delta = 0;
jsonXlateBlobToText(p, 0, &s);
jsonReturnString(&s, p, ctx);
sqlite3_result_subtype(ctx, JSON_SUBTYPE);