From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, bouda(at)edookit(dot)com |
Cc: | pgsql-bugs(at)postgresql(dot)org, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: [HACKERS] BUG #12070: hstore extension: hstore_to_json_loose produces invalid JSON |
Date: | 2014-11-26 16:48:00 |
Message-ID: | 54760440.2080501@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
On 11/26/2014 11:19 AM, Tom Lane wrote:
> bouda(at)edookit(dot)com writes:
>> The hstore_to_json_loose(hstore) produces an invalid JSON in the following
>> case:
>> SELECT hstore_to_json_loose(hstore(ARRAY ['name'], ARRAY ['1.'] :: TEXT
>> []))
>> Output: {"name": 1.}
>> The actual output is indeed incorrect as JSON does not permit `1.` - it must
>> be a string.
> Yeah. The problem seems to be the ad-hoc (I'm being polite) code in
> hstore_to_json_loose to decide whether a string should be treated as a
> number. It does much more work than it needs to, and fails to have any
> tight connection to the JSON syntax rules for numbers.
>
> Offhand, it seems like the nicest fix would be if the core json code
> exposed a function that would say whether a string matches the JSON
> number syntax. Does that functionality already exist someplace,
> or is it too deeply buried in the JSON parser guts?
>
> regards, tom lane
>
>
In json.c we now check numbers like this:
JsonLexContext dummy_lex;
bool numeric_error;
...
dummy_lex.input = *outputstr == '-' ? outputstr + 1 : outputstr;
dummy_lex.input_length = strlen(dummy_lex.input);
json_lex_number(&dummy_lex, dummy_lex.input, &numeric_error);
numeric_error is true IFF outputstr is a legal json number.
Exposing a function to do this should be trivial.
cheers
andrew
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2014-11-26 17:03:16 | Re: [HACKERS] BUG #12070: hstore extension: hstore_to_json_loose produces invalid JSON |
Previous Message | Tom Lane | 2014-11-26 16:19:49 | Re: BUG #12070: hstore extension: hstore_to_json_loose produces invalid JSON |
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2014-11-26 17:03:16 | Re: [HACKERS] BUG #12070: hstore extension: hstore_to_json_loose produces invalid JSON |
Previous Message | Geoff Montee | 2014-11-26 16:46:11 | Re: [pgsql-packagers] Palle Girgensohn's ICU patch |