mirror of
https://github.com/sqlite/sqlite.git
synced 2024-11-28 16:09:31 +01:00
8a056d486f
cover the recent optimizations involving updates to large JSON strings that indexed. FossilOrigin-Name: f9213289d09adfb0461d9644e80c7e889f4bae51563ae2e575a2c95336052bcb
25 lines
802 B
Plaintext
25 lines
802 B
Plaintext
.mode qbox
|
|
.timer on
|
|
.param set $label 'q87'
|
|
SELECT rowid, x->>$label FROM data1 WHERE x->>$label IS NOT NULL;
|
|
|
|
CREATE TEMP TABLE t2(x JSON TEXT);
|
|
WITH RECURSIVE
|
|
c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<25000),
|
|
array1(y) AS (
|
|
SELECT json_group_array(
|
|
json_object('x',x,'y',random(),'z',hex(randomblob(50)))
|
|
)
|
|
FROM c
|
|
),
|
|
c2(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c2 WHERE n<5)
|
|
INSERT INTO t2(x)
|
|
SELECT json_object('a',n,'b',n*2,'c',y,'d',3,'e',5,'f',6) FROM array1, c2;
|
|
CREATE INDEX t2x1 ON t2(x->>'a');
|
|
CREATE INDEX t2x2 ON t2(x->>'b');
|
|
CREATE INDEX t2x3 ON t2(x->>'e');
|
|
CREATE INDEX t2x4 ON t2(x->>'f');
|
|
UPDATE t2 SET x=json_replace(x,'$.f',(x->>'f')+1);
|
|
UPDATE t2 SET x=json_set(x,'$.e',(x->>'f')-1);
|
|
UPDATE t2 SET x=json_remove(x,'$.d');
|