Re: BUG #14394: No error raised in IN-clause when commas are missing

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

In response to

Responses

Browse pgsql-bugs by date

  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