postgres.git / summary / log / commit / refs

commit    0839f312e92c7ab0aecb2c4133197a7da7c5fc39
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Tue Jul 20 00:34:44 2010 +0000
First released in: 9.1.0

    Change the default value of standard_conforming_strings to on.
    
    This change should be publicized to driver maintainers at once and
    release-noted as an incompatibility with previous releases.


doc/src/sgml/config.sgml | 9 +++------ doc/src/sgml/syntax.sgml | 21 ++++++++++----------- src/backend/parser/scan.l | 4 ++-- src/backend/utils/misc/guc.c | 4 ++-- src/backend/utils/misc/postgresql.conf.sample | 2 +- 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 2a907f6e468..a03b0dfe39a 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.296 2010/07/16 22:25:47 tgl Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.297 2010/07/20 00:34:44 rhaas Exp $ --> <chapter Id="runtime-config"> <title>Server Configuration</title> @@ -5237,11 +5237,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' This controls whether ordinary string literals (<literal>'...'</>) treat backslashes literally, as specified in the SQL standard. - The default is currently <literal>off</>, causing - <productname>PostgreSQL</productname> to have its historical - behavior of treating backslashes as escape characters. - The default will change to <literal>on</> in a future release - to improve compatibility with the SQL standard. + Beginning in <productname>PostgreSQL</productname> 9.1, the default is + <literal>on</> (prior releases defaulted to <literal>off</>). Applications can check this parameter to determine how string literals will be processed. The presence of this parameter can also be taken as an indication diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index bf63425a719..fcf5f161d8b 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.147 2010/07/03 02:57:46 rhaas Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.148 2010/07/20 00:34:44 rhaas Exp $ --> <chapter id="sql-syntax"> <title>SQL Syntax</title> @@ -445,16 +445,15 @@ SELECT 'foo' 'bar'; If the configuration parameter <xref linkend="guc-standard-conforming-strings"> is <literal>off</>, then <productname>PostgreSQL</productname> recognizes backslash escapes - in both regular and escape string constants. This is for backward - compatibility with the historical behavior, where backslash escapes - were always recognized. - Although <varname>standard_conforming_strings</> currently defaults to - <literal>off</>, the default will change to <literal>on</> in a future - release for improved standards compliance. Applications are therefore - encouraged to migrate away from using backslash escapes. If you need - to use a backslash escape to represent a special character, write the - string constant with an <literal>E</> to be sure it will be handled the same - way in future releases. + in both regular and escape string constants. However, as of + <productname>PostgreSQL</> 9.1, the default is <literal>on</>, meaning + that backslash escapes are recognized only in escape string constants. + This behavior is more standards-compliant, but might break applications + which rely on the historical behavior, where backslash escapes + were always recognized. As a workaround, you can set this parameter + to <literal>off</>, but it is better to migrate away from using backslash + escapes. If you need to use a backslash escape to represent a special + character, write the string constant with an <literal>E</>. </para> <para> diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 81502adc95e..433ebb3a283 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -24,7 +24,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.167 2010/05/30 18:10:41 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.168 2010/07/20 00:34:44 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -52,7 +52,7 @@ */ int backslash_quote = BACKSLASH_QUOTE_SAFE_ENCODING; bool escape_string_warning = true; -bool standard_conforming_strings = false; +bool standard_conforming_strings = true; /* * Set the type of YYSTYPE. diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 9e85054c675..7a28594e338 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut <peter_e@gmx.net>. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.562 2010/07/16 22:25:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.563 2010/07/20 00:34:44 rhaas Exp $ * *-------------------------------------------------------------------- */ @@ -1211,7 +1211,7 @@ static struct config_bool ConfigureNamesBool[] = GUC_REPORT }, &standard_conforming_strings, - false, NULL, NULL + true, NULL, NULL }, { diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 9d0f5825d42..f02d44de72e 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -511,7 +511,7 @@ #escape_string_warning = on #lo_compat_privileges = off #sql_inheritance = on -#standard_conforming_strings = off +#standard_conforming_strings = on #synchronize_seqscans = on # - Other Platforms and Clients - [parent: 0b4a0868f92b]