diff options
author | drh <> | 2023-07-21 15:01:53 +0000 |
---|---|---|
committer | drh <> | 2023-07-21 15:01:53 +0000 |
commit | 7a2280fe6579c69235a78c5df83f34a555558049 (patch) | |
tree | 162353cda3a46fad3e22af713900f4a93f5a34b2 /src/json.c | |
parent | f9bfc32b733c1b7b1a6655e19df14f56dd42f913 (diff) | |
download | sqlite-7a2280fe6579c69235a78c5df83f34a555558049.tar.gz sqlite-7a2280fe6579c69235a78c5df83f34a555558049.zip |
Multiple optimizations that try to preserve or infer the zero-terminated
property of TEXT values. Avoid unnecessary copying of text values destined
to become function parameters. All changes help improve performance of
doing UPDATEs on large JSON values that are indexed multiple ways.
FossilOrigin-Name: d0278cdedfa04fb0b61838ab9622be8a2c462f58d5c3ebc4c5f802a727d0974e
Diffstat (limited to 'src/json.c')
-rw-r--r-- | src/json.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/json.c b/src/json.c index 176dcbfdb..a9425aecd 100644 --- a/src/json.c +++ b/src/json.c @@ -501,7 +501,8 @@ static void jsonAppendValue( */ static void jsonResult(JsonString *p){ if( p->bErr==0 ){ - sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed, + if( p->nAlloc>=p->nUsed+1 ) p->zBuf[p->nUsed] = 0; + sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed, p->bStatic ? SQLITE_TRANSIENT : sqlite3_free, SQLITE_UTF8); jsonZero(p); |