Thread

  1. #escape_string_warning = off

    Joshua D. Drake <jd@commandprompt.com> — 2005-08-01T18:58:34Z

    Hello,
    
    What might this be?
    
    Sincerely,
    
    Joshua D. Drake
    
    -- 
    Your PostgreSQL solutions company - Command Prompt, Inc. 1.800.492.2240
    PostgreSQL Replication, Consulting, Custom Programming, 24x7 support
    Managed Services, Shared and Dedicated Hosting
    Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/
    
    
  2. Re: #escape_string_warning = off

    Marko Kreen <marko@l-t.ee> — 2005-08-01T19:11:37Z

    On Mon, Aug 01, 2005 at 11:58:34AM -0700, Joshua D. Drake wrote:
    > What might this be?
    
    Whether to warn on '\' in non-E'' strings.
    
    AFAIK Bruce wants to turn this to 'on' in 8.2.
    
    -- 
    marko
    
    
    
  3. Re: #escape_string_warning = off

    Jeff Davis <jdavis-pgsql@empires.org> — 2005-08-02T06:05:13Z

    The documentation about this is a little brief (reading from the
    developer docs, section 4.1.2.1.).
    
    Does the SQL standard provide no way to have a NULL character in a
    string constant? Is single-quote the only special character?
    
    If I have a system on 7.4 or 8.0 right now, what is the recommended
    "right" way to write string constants with backslashes? I can't use E''
    yet, so if I need to include a backslash it seems like there's no chance
    it will be forward-compatible.
    
    In the E'' constants, the special characters are only single-quote,
    backslash, and NULL right?
    
    	Regards,
    		Jeff Davis
    
    Marko Kreen wrote:
    > On Mon, Aug 01, 2005 at 11:58:34AM -0700, Joshua D. Drake wrote:
    > 
    >>What might this be?
    > 
    > 
    > Whether to warn on '\' in non-E'' strings.
    > 
    > AFAIK Bruce wants to turn this to 'on' in 8.2.
    > 
    
    
    
  4. Re: #escape_string_warning = off

    Dennis Björklund <db@zigo.dhs.org> — 2005-08-02T07:39:36Z

    On Mon, 1 Aug 2005, Jeff Davis wrote:
    
    > Does the SQL standard provide no way to have a NULL character in a
    > string constant? Is single-quote the only special character?
    
    I don't think it forbids you from using the null character. It's not like 
    the strings are zero terminated. Some encodings might not allow the null 
    character, but that's different.
    
    ps. null character does not have anything to do with the sql NULL. I'm 
    sure there is someone somewhere that need this info.
    
    -- 
    /Dennis Björklund
    
    
    
  5. Re: #escape_string_warning = off

    Jeff Davis <jdavis-pgsql@empires.org> — 2005-08-02T07:57:34Z

    Dennis Bjorklund wrote:
    > On Mon, 1 Aug 2005, Jeff Davis wrote:
    > 
    > 
    >>Does the SQL standard provide no way to have a NULL character in a
    >>string constant? Is single-quote the only special character?
    > 
    > 
    > I don't think it forbids you from using the null character. It's not like 
    > the strings are zero terminated. Some encodings might not allow the null 
    > character, but that's different.
    > 
    
    But doesn't PostgreSQL forbid us from using the NULL character in a
    query at all? Don't we always have to escape or encode it in some way?
    Does this new attempt at standard-compliant strings allow PostgreSQL to
    accept a null character in a string?
    
    > ps. null character does not have anything to do with the sql NULL. I'm 
    > sure there is someone somewhere that need this info.
    > 
    
    Yeah, I was talking about '\0'.
    
    Regards,
    	Jeff Davis
    
    
  6. Re: #escape_string_warning = off

    Dennis Björklund <db@zigo.dhs.org> — 2005-08-02T08:35:17Z

    On Tue, 2 Aug 2005, Jeff Davis wrote:
    
    > >>Does the SQL standard provide no way to have a NULL character in a
    > >>string constant? Is single-quote the only special character?
    > > 
    > > I don't think it forbids you from using the null character. It's not like 
    > > the strings are zero terminated. Some encodings might not allow the null 
    > > character, but that's different.
    > 
    > But doesn't PostgreSQL forbid us from using the NULL character in a
    > query at all? Don't we always have to escape or encode it in some way?
    
    Pg does not allow \0 in strings at all. Try SELECT 'abc\0def'; in the
    current version of pg.
    
    The sql standard doesn't forbid null values in strings as far as I know
    and that's all I talked about. To have a sql standard string with null
    inside you just insert the 0 byte (for normal single byte encodings), no
    escaping needed.
    
    Internally pg handles strings as \0-terminated entities which is a bit 
    unfortunate but that's what we have. That's why 'abc\0def' became the 
    string 'abc'. Most character sets forbid \0 in strings anyway.
    
    -- 
    /Dennis Björklund
    
    
    
  7. Re: #escape_string_warning = off

    Jeff Davis <jdavis-pgsql@empires.org> — 2005-08-02T23:18:27Z

    Dennis Bjorklund wrote:
    > On Tue, 2 Aug 2005, Jeff Davis wrote:
    > 
    > 
    >>>>Does the SQL standard provide no way to have a NULL character in a
    >>>>string constant? Is single-quote the only special character?
    >>>
    >>>I don't think it forbids you from using the null character. It's not like 
    >>>the strings are zero terminated. Some encodings might not allow the null 
    >>>character, but that's different.
    >>
    >>But doesn't PostgreSQL forbid us from using the NULL character in a
    >>query at all? Don't we always have to escape or encode it in some way?
    > 
    > 
    > Pg does not allow \0 in strings at all. Try SELECT 'abc\0def'; in the
    > current version of pg.
    > 
    > The sql standard doesn't forbid null values in strings as far as I know
    > and that's all I talked about. To have a sql standard string with null
    > inside you just insert the 0 byte (for normal single byte encodings), no
    > escaping needed.
    
    I guess what I'm trying to find out: does this mean that after all this
    change to the way strings are handled in the future, PostgreSQL still
    won't be standards-compliant for the basic '' string?
    
    Also, let's say I have apps now in 7.4/8.0, and I want them to be
    forward-compatible. Should I make a type called E so that the E''
    notation will work, and then use that for strings? What is the "right"
    way to do it?
    
    I found a few things in the archives, but I didn't see these particular
    things addressed.
    
    Regards,
    	Jeff Davis
    
    
  8. Re: #escape_string_warning = off

    Peter Eisentraut <peter_e@gmx.net> — 2005-08-03T13:01:07Z

    Am Mittwoch, 3. August 2005 01:18 schrieb Jeff Davis:
    > I guess what I'm trying to find out: does this mean that after all this
    > change to the way strings are handled in the future, PostgreSQL still
    > won't be standards-compliant for the basic '' string?
    
    It will be more conforming regarding backslashes.  There may be other 
    conformance issues, but they are not considered here.
    
    > Also, let's say I have apps now in 7.4/8.0, and I want them to be
    > forward-compatible. Should I make a type called E so that the E''
    > notation will work, and then use that for strings? What is the "right"
    > way to do it?
    
    To be standards-conforming, don't use any backslash escapes.  If you must use 
    them, use the E'' notation.
    
    -- 
    Peter Eisentraut
    http://developer.postgresql.org/~petere/
    
    
  9. Re: #escape_string_warning = off

    Oliver Jowett <oliver@opencloud.com> — 2005-08-03T13:40:24Z

    Peter Eisentraut wrote:
    
    >>Also, let's say I have apps now in 7.4/8.0, and I want them to be
    >>forward-compatible. Should I make a type called E so that the E''
    >>notation will work, and then use that for strings? What is the "right"
    >>way to do it?
    > 
    > To be standards-conforming, don't use any backslash escapes.  If you must use 
    > them, use the E'' notation.
    
    That doesn't really answer the question, though, since none of
    7.4/8.0/8.1 interprets '' strings in a strictly standards-conforming way
    as I understand it.
    
    The impression I got from previous discussion was that you need to check
    the value of the standard_compliant_strings GUC, and double backslashes
    inside '' only if it was false or missing.
    
    -O
    
    
  10. Re: #escape_string_warning = off

    Peter Eisentraut <peter_e@gmx.net> — 2005-08-03T14:32:56Z

    Am Mittwoch, 3. August 2005 15:40 schrieb Oliver Jowett:
    > > To be standards-conforming, don't use any backslash escapes.  If you must
    > > use them, use the E'' notation.
    >
    > That doesn't really answer the question, though, since none of
    > 7.4/8.0/8.1 interprets '' strings in a strictly standards-conforming way
    > as I understand it.
    
    That is correct, but eventually standards_compliant_strings will be true by 
    default and then you have to use E'' to get backslash escapes.  The above 
    advice is the future-proof way to go from 8.1 on.
    
    -- 
    Peter Eisentraut
    http://developer.postgresql.org/~petere/
    
    
  11. Re: #escape_string_warning = off

    Peter Eisentraut <peter_e@gmx.net> — 2005-08-03T14:34:34Z

    Am Mittwoch, 3. August 2005 15:40 schrieb Oliver Jowett:
    > The impression I got from previous discussion was that you need to check
    > the value of the standard_compliant_strings GUC, and double backslashes
    > inside '' only if it was false or missing.
    
    The correct lingo would be standard_conforming_strings.  I'm going to change 
    that.
    
    -- 
    Peter Eisentraut
    http://developer.postgresql.org/~petere/
    
    
  12. Re: #escape_string_warning = off

    Bruce Momjian <pgman@candle.pha.pa.us> — 2005-08-08T19:46:46Z

    Peter Eisentraut wrote:
    > Am Mittwoch, 3. August 2005 15:40 schrieb Oliver Jowett:
    > > The impression I got from previous discussion was that you need to check
    > > the value of the standard_compliant_strings GUC, and double backslashes
    > > inside '' only if it was false or missing.
    > 
    > The correct lingo would be standard_conforming_strings.  I'm going to change 
    > that.
    
    Sounds good.  Another question is whether this should be backpatched to
    our next 7.4.X or 8.0.X release as read-only variables.
    
    -- 
      Bruce Momjian                        |  http://candle.pha.pa.us
      pgman@candle.pha.pa.us               |  (610) 359-1001
      +  If your life is a hard drive,     |  13 Roberts Road
      +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
    
    
  13. Re: #escape_string_warning = off

    Tom Lane <tgl@sss.pgh.pa.us> — 2005-08-08T20:57:17Z

    Bruce Momjian <pgman@candle.pha.pa.us> writes:
    > Peter Eisentraut wrote:
    >> The correct lingo would be standard_conforming_strings.  I'm going to change
    >> that.
    
    > Sounds good.
    
    No problem here either.
    
    > Another question is whether this should be backpatched to
    > our next 7.4.X or 8.0.X release as read-only variables.
    
    Unnecessary; any client code written to use this need only assume that
    absence of the parameter means the old behavior.
    
    			regards, tom lane
    
    
  14. Re: #escape_string_warning = off

    Joshua D. Drake <jd@commandprompt.com> — 2005-08-08T22:15:51Z

    Tom Lane wrote:
    > Bruce Momjian <pgman@candle.pha.pa.us> writes:
    > 
    >>Peter Eisentraut wrote:
    >>
    >>>The correct lingo would be standard_conforming_strings.  I'm going to change
    >>>that.
    > 
    > 
    >>Sounds good.
    > 
    > 
    > No problem here either.
    > 
    
    So does that mean for 8.1 it will be:
    
    standard_conforming_strings = on/off
    
    ?
    
    
    > 
    >>Another question is whether this should be backpatched to
    >>our next 7.4.X or 8.0.X release as read-only variables.
    > 
    > 
    > Unnecessary; any client code written to use this need only assume that
    > absence of the parameter means the old behavior.
    > 
    > 			regards, tom lane
    > 
    > ---------------------------(end of broadcast)---------------------------
    > TIP 6: explain analyze is your friend
    
    
    
  15. Re: #escape_string_warning = off

    Bruce Momjian <pgman@candle.pha.pa.us> — 2005-08-09T18:32:46Z

    Joshua D. Drake wrote:
    > Tom Lane wrote:
    > > Bruce Momjian <pgman@candle.pha.pa.us> writes:
    > > 
    > >>Peter Eisentraut wrote:
    > >>
    > >>>The correct lingo would be standard_conforming_strings.  I'm going to change
    > >>>that.
    > > 
    > > 
    > >>Sounds good.
    > > 
    > > 
    > > No problem here either.
    > > 
    > 
    > So does that mean for 8.1 it will be:
    > 
    > standard_conforming_strings = on/off
    
    off, maybe on for 8.2 or 8.3.
    
    -- 
      Bruce Momjian                        |  http://candle.pha.pa.us
      pgman@candle.pha.pa.us               |  (610) 359-1001
      +  If your life is a hard drive,     |  13 Roberts Road
      +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073