SQLite

View Ticket
Login
Ticket Hash: f45ac567eaa9f93c55eef59b33fb90f0146adf85
Title: Invalid JSON generated by json_group_array()
Status: Fixed Type: Code_Defect
Severity: Severe Priority: Immediate
Subsystem: Unknown Resolution: Fixed
Last Modified: 2016-01-30 14:54:49
Version Found In: 3.10.2
User Comments:
drh added on 2016-01-30 13:56:13:

The first column in the output of the following query contains invalid JSON. The "abc" string value is not quoted. The output is [1,abc] instead of [1,"abc"]

CREATE TABLE t1(x);
INSERT INTO t1 VALUES(1),('abc');
SELECT
   json_group_array(x),
   json_group_array(json_object('x',x))
  FROM t1;

This problem was reported by Marien Zwart on the SQLite Users mailing list.


drh added on 2016-01-30 14:54:49:

The underlying problem was that the subtype information for a VDBE register was not being cleared when that register was overwritten and reused, which cause cause the subtype from a prior json_object() call to leak into the parameter of the json_group_array() call. Upgraded the severity to Severe since this problem affects all users of sqlite3_value_subtype() and sqlite3_result_subtype().