From: | "Wetmore, Matthew (CTR)" <Matthew(dot)Wetmore(at)express-scripts(dot)com> |
---|---|
To: | "DEVOPS, Dos (NHS ENGLAND - X26)" <dos(dot)devops(at)nhs(dot)net>, "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
Subject: | RE: JSONB text extraction of data containing tab character fails |
Date: | 2024-02-22 16:40:05 |
Message-ID: | a528058c1a314b8bb5b5d9d1e0acae8c@express-scripts.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
I'm going through this myself.
1. Data (varchar) column data type should be a json(b) data type column, not Varchar, that is causing this since the unescaped / is a valid character for Varchar and when you cast to json, the unescaped / become invalid.
2. To get best results from json data, store as json, you would have gotten the error in insert and would have been able to fix at time of insert.
3. Rewrite query to not use ::json->>'element' (select substring or something)
From: DEVOPS, Dos (NHS ENGLAND - X26) <dos(dot)devops(at)nhs(dot)net>
Sent: Thursday, February 22, 2024 7:54 AM
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: DEVOPS, Dos (NHS ENGLAND - X26) <dos(dot)devops(at)nhs(dot)net>
Subject: [EXTERNAL] JSONB text extraction of data containing tab character fails
Relevant table and column structure
cgsh
=====
id (int)
data (varchar) --contains json data
Relevant data in the table
{code}
1, {"name":"item1","element":"record with a tab char\t"}
{/code}
Query
{code}
select id, data::jsonb->>'element' from cgsh
{/code}
Expected behaviour
Return
{code}
1, record with a tab char\t
{/code}
Actual behaviour
Return
{code}
SQL Error [22P02]: ERROR: invalid input syntax for type json
Detail: Character with value 0x09 must be escaped.
Where: JSON data, line 1: ...
{/code}
************************************************************************************** ******************************
This message may contain confidential information. If you are not the intended recipient please:
i) inform the sender that you have received the message in error before deleting it; and
ii) do not disclose, copy or distribute information in this e-mail or take any action in relation to its content (to do so is strictly prohibited and may be unlawful).
Thank you for your co-operation.
NHSmail is the secure email, collaboration and directory service available for all NHS staff in England. NHSmail is approved for exchanging patient data and other sensitive information with NHSmail and other accredited email services.
For more information and to find out how you can switch visit Joining NHSmail - NHSmail Support<https://urldefense.com/v3/__https:/support.nhs.net/article-categories/joining-nhsmail/__;!!GFE8dS6aclb0h1nkhPf9!7bwEAf4sn1X1uzNti7IXdxUZLgEje0KsyfvF9DJOGG6LxRhieZTBfuj3argDLGmQjwThwOrDveaN-nTCCpN5AFjgkAWfg78$>
From | Date | Subject | |
---|---|---|---|
Next Message | jian he | 2024-02-23 12:21:29 | Re: BUG #18314: PARALLEL UNSAFE function does not prevent parallel index build |
Previous Message | DEVOPS, Dos (NHS ENGLAND - X26) | 2024-02-22 15:54:24 | JSONB text extraction of data containing tab character fails |