Thread

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

    Tom Lane <tgl@sss.pgh.pa.us> — 2025-12-29T18:37:14Z

    Roman Khapov <rkhapov@yandex-team.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