Re: [PATCH] Fix escaping for '\' and '"' in pageinspect for gist

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Roman Khapov <rkhapov(at)yandex-team(dot)ru>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org, michael(at)paquier(dot)xyz
Subject: Re: [PATCH] Fix escaping for '\' and '"' in pageinspect for gist
Date: 2025-12-29 18:37:14
Message-ID: 2988492.1767033434@sss.pgh.pa.us
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Roman Khapov <rkhapov(at)yandex-team(dot)ru> writes:
> I noticed, that there is bug in escaping values that contains '\' or '"' in text representation
> inside pageinspect for gist: the string 'foo"bar' are printed like "foo""bar" and not "foo\"bar".

I do not think this is a bug. The comment at line 295 says
"Most of this is copied from record_out().", and this logic
matches what record_out() does, and the output is legal
according to the manual's specifications [1]:

To put a double quote or backslash in a quoted composite field
value, precede it with a backslash. (Also, a pair of double quotes
within a double-quoted field value is taken to represent a double
quote character, analogously to the rules for single quotes in SQL
literal strings.)

Now, your alternative coding would also produce legal output, but
I do not think unnecessary change here is a good thing.

regards, tom lane

[1] https://www.postgresql.org/docs/devel/rowtypes.html#ROWTYPES-IO-SYNTAX

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Masahiko Sawada 2025-12-29 18:57:50 Re: [PATCH] Add memory usage reporting to VACUUM VERBOSE
Previous Message Matthias van de Meent 2025-12-29 18:36:39 Re: lsyscache: free IndexAmRoutine objects returned by GetIndexAmRoutineByAmId()