public inbox for [email protected]
help / color / mirror / Atom feedFrom: Sérgio Saquetim <[email protected]>
To: [email protected]
Subject: Lexical Structure - String Constants
Date: Tue, 17 Jun 2014 00:14:40 -0300
Message-ID: <CACwnGOdA3MZADTbT0hNXJFuge+fwF7=hCCMu2+9r2-0Dbard0g@mail.gmail.com> (raw)
List-Unsubscribe: <mailto:[email protected]?body=unsub%20pgsql-docs>
Hi,
I'm trying to build in Java a SQL lexer/parser, compliant with PostgreSQL
9.3, from scratch as a hobby project and reading chapter 4, section 4.1 (
http://www.postgresql.org/docs/9.3/interactive/sql-syntax-lexical.html) and
I've noticed a few things I thought I should mention:
In section 4.1.2.1, the following text introduces us to SQL's bizarre
multiline/multisegment split style: "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."
The text does not mention if comments are allowed between segments, so I've
run a few tests on PSQL (PostgreSQL 9.3.4):
version
------------------------------------------------------------------------------------------------------
PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu
4.8.2-16ubuntu6) 4.8.2, 64-bit
(1 row)
postgres=# SELECT 'a'
'b';
?column?
----------
ab
(1 row)
postgres=# SELECT 'a' --comment
'b';
?column?
----------
ab
(1 row)
So far everything worked, but I've got different results with C style block
comments:
postgres=# SELECT 'a' /*comment*/
'b';
ERROR: syntax error at or near "'b'"
LINE 2: 'b';
So line style comments (--) are accepted between segments but not C style
block comments (/* */). Do you think this difference in behavior should me
mentioned in the docs?
I've also noticed that in section 4.1.2.6, the following statement: "At
least one digit must follow the exponent marker (e), if one is present."
As I've understood the statement, I think it says that the following
instruction should not be valid because the exponent marker is not followed
by at least one digit, but the expression is successfully evaluated:
postgres=# SELECT 10e;
e
----
10
(1 row)
That said, I live in Brazil and English is not my first language so I may
be mistaken, but I thought I should bring this to this list.
Regards,
Sérgio Saquetim
view thread (3+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: Lexical Structure - String Constants
In-Reply-To: <CACwnGOdA3MZADTbT0hNXJFuge+fwF7=hCCMu2+9r2-0Dbard0g@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox