RE: JSONB text extraction of data containing tab character fails

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$>

In response to

Browse pgsql-bugs by date

  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