aboutsummaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
authordrh <>2023-07-21 15:01:53 +0000
committerdrh <>2023-07-21 15:01:53 +0000
commit7a2280fe6579c69235a78c5df83f34a555558049 (patch)
tree162353cda3a46fad3e22af713900f4a93f5a34b2 /src/json.c
parentf9bfc32b733c1b7b1a6655e19df14f56dd42f913 (diff)
downloadsqlite-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.c3
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);