Minor irritant with comment parsing in a function (SQL) body - Mailing list pgsql-bugs

From Richard Huxton
Subject Minor irritant with comment parsing in a function (SQL) body
Date
Msg-id 200310081921.51688.dev@archonet.com
Whole thread Raw
Responses Re: Minor irritant with comment parsing in a function (SQL)
Re: Minor irritant with comment parsing in a function (SQL) body
List pgsql-bugs
Versions: 7.3, 7.4beta (not latest)
Applies to SQL functions, but not apparently to plpgsql (because of the
different parser, I presume).

This is really a "doctor it hurts when I..." thing - the fact that I've never
come across it before must mean it's pretty hard to trigger.

The first version of this function compiles fine, the second doesn't.

CREATE OR REPLACE FUNCTION zzz_test () RETURNS text AS '
  SELECT ''hello world''::text;
-- SELECT ''goodbye world''
' LANGUAGE 'SQL';

CREATE OR REPLACE FUNCTION zzz_test () RETURNS text AS '
  SELECT ''hello world''
-- SELECT ''goodbye world''
::text;
' LANGUAGE 'SQL';

ERROR:  parser: unterminated quoted string at or near "'hello world'
-- SELECT 'goodbye world'
::text;
"

It took forever to find a simple reproducible example, but the rules seem to
be:
1. You must have quoting at the end of both adjacent lines
2. Both lines must be within a single SQL statement.
3. You must use the -- comment, not /* ... */

Originally spotted with a formulation like:
  AND type1 = ''A''
  AND type2 = ''B''
  ...
I commented one test and got an error message.

--
  Richard Huxton
  Archonet Ltd

pgsql-bugs by date:

Previous
From: Andreas Pflug
Date:
Subject: Re: [pgadmin-hackers] Degrade(character conversion problem) pga3?
Next
From: "Hiroshi Saito"
Date:
Subject: Re: [pgadmin-hackers] Degrade(character conversion problem) pga3?