From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Pantelis Theodosiou <ypercube(at)gmail(dot)com> |
Cc: | andreas(dot)imboden(at)bl(dot)ch, pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #14394: No error raised in IN-clause when commas are missing |
Date: | 2016-10-24 16:59:28 |
Message-ID: | 28326.1477328368@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Pantelis Theodosiou <ypercube(at)gmail(dot)com> writes:
> On Mon, Oct 24, 2016 at 3:46 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Two string constants that are only separated by whitespace *with
>> at least one newline* are concatenated and effectively treated as
>> if the string had been written as one constant.
> I agree but shouldn't it run without errors when there is no newline (only
> spaces or comments) as well?
No, because then the syntax rule that causes the literals to be merged
into a single literal doesn't apply, so you get a syntax error.
> Which version of the standard has this "at least one newline"?
All of them. SQL92 for instance says (see 5.2 <token> and <separator>
and 5.3 <literal>):
<separator> ::= { <comment> | <space> | <newline> }...
<character string literal> ::=
[ <introducer><character set specification> ]
<quote> [ <character representation>... ] <quote>
[ { <separator>... <quote> [ <character representation>... ] <quote> }... ]
1) In a <character string literal> or <national character string
literal>, the sequence:
<quote> <character representation>... <quote>
<separator>... <quote> <character representation>... <quote>
is equivalent to the sequence
<quote> <character representation>... <character representa-
tion>... <quote>
4) In a <character string literal>, <national character string
literal>, <bit string literal>, or <hex string literal>, a <sep-
arator> shall contain a <newline>.
The intent of allowing separators at all is evidently to allow very long
literals to be split across lines. Which is fine, but I wish they'd
used some explicit syntax to specify continuation. The existing
definition is pretty error-prone, as you found out.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Pantelis Theodosiou | 2016-10-24 17:14:45 | Re: BUG #14394: No error raised in IN-clause when commas are missing |
Previous Message | Pantelis Theodosiou | 2016-10-24 16:41:47 | Re: BUG #14394: No error raised in IN-clause when commas are missing |