string escaping in tutorial/syscat.source

Started by Josh Kupershmidtover 13 years ago5 messageshackers
Jump to latest
#1Josh Kupershmidt
schmiddy@gmail.com

Hi all,
It seems the queries in ./src/tutorial/syscat.source use string
escaping with the assumption that standard_conforming_strings is off,
and thus give wrong results with modern versions. A simple fix is
attached.
Josh

Attachments:

syscat.source_escaping.diffapplication/octet-stream; name=syscat.source_escaping.diffDownload+16-10
#2Jeff Janes
jeff.janes@gmail.com
In reply to: Josh Kupershmidt (#1)

On Sun, Oct 14, 2012 at 8:53 PM, Josh Kupershmidt
<schmiddy@gmail.com<javascript:;>>
wrote:

Hi all,
It seems the queries in ./src/tutorial/syscat.source use string
escaping with the assumption that standard_conforming_strings is off,
and thus give wrong results with modern versions. A simple fix is
attached.

Hi Josh,

Do you propose back-patching this? You could argue that this is a bug in
9.1 and 9.2. Before that, they generate deprecation warnings, but do not
give the wrong answer.

If it is only to be applied to HEAD, or only to 9.1, 9.2, and HEAD, then
this part seems to be unnecessary and I think should be removed (setting a
value to its default is more likely to cause confusion than remove
confusion):

SET standard_conforming_strings TO on;

and the corresponding reset as well.

Other than that, it does what it says (fix a broken example), does it
cleanly, we want this, and I have no other concerns.

I guess the src/tutorial directory could participate in regression tests,
in which case this problem would have been detected when introduced, but I
don't think I can demand that you invent regression tests for a feature you
are just fixing rather than creating.

Thanks for the patch,

Jeff

#3Josh Kupershmidt
schmiddy@gmail.com
In reply to: Jeff Janes (#2)
Re: string escaping in tutorial/syscat.source

On Tue, Jan 15, 2013 at 6:35 PM, Jeff Janes <jeff.janes@gmail.com> wrote:

Do you propose back-patching this? You could argue that this is a bug in
9.1 and 9.2. Before that, they generate deprecation warnings, but do not
give the wrong answer.

I think that backpatching to 9.1 would be reasonable, though I won't
complain if the fix is only applied to HEAD.

If it is only to be applied to HEAD, or only to 9.1, 9.2, and HEAD, then
this part seems to be unnecessary and I think should be removed (setting a
value to its default is more likely to cause confusion than remove
confusion):

SET standard_conforming_strings TO on;

and the corresponding reset as well.

Well, it may be unnecessary for people who use the modern default
standard_conforming_strings. But some people have kept
standard_conforming_strings=off in recent versions because they have
old code which depends on this. And besides, it seems prudent to make
the dependency explicit, rather than just hoping the user has the
correct setting, and silently giving wrong results if not. Plus being
able to work with old server versions.

Other than that, it does what it says (fix a broken example), does it
cleanly, we want this, and I have no other concerns.

I guess the src/tutorial directory could participate in regression tests, in
which case this problem would have been detected when introduced, but I
don't think I can demand that you invent regression tests for a feature you
are just fixing rather than creating.

Yeah, I don't think tying into the regression tests is warranted here.

Josh

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#4Jeff Janes
jeff.janes@gmail.com
In reply to: Josh Kupershmidt (#3)
Re: string escaping in tutorial/syscat.source

On Tuesday, January 15, 2013, Josh Kupershmidt wrote:

On Tue, Jan 15, 2013 at 6:35 PM, Jeff Janes <jeff.janes@gmail.com<javascript:;>>
wrote:

Do you propose back-patching this? You could argue that this is a bug in
9.1 and 9.2. Before that, they generate deprecation warnings, but do

not

give the wrong answer.

I think that backpatching to 9.1 would be reasonable, though I won't
complain if the fix is only applied to HEAD.

If it is only to be applied to HEAD, or only to 9.1, 9.2, and HEAD, then
this part seems to be unnecessary and I think should be removed (setting

a

value to its default is more likely to cause confusion than remove
confusion):

SET standard_conforming_strings TO on;

and the corresponding reset as well.

Well, it may be unnecessary for people who use the modern default
standard_conforming_strings. But some people have kept
standard_conforming_strings=off in recent versions because they have
old code which depends on this.

OK, I didn't anticipate them doing that in their default (i.e.
postgresql.conf) but of course they might do that.

I've marked it ready for committer.

Thanks,

Jeff

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Josh Kupershmidt (#1)
Re: string escaping in tutorial/syscat.source

Josh Kupershmidt <schmiddy@gmail.com> writes:

It seems the queries in ./src/tutorial/syscat.source use string
escaping with the assumption that standard_conforming_strings is off,
and thus give wrong results with modern versions. A simple fix is
attached.

I tweaked the comments a little bit and committed this as far back
as 9.1. Thanks!

regards, tom lane

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers