From: | Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> |
---|---|
To: | Simon Riggs <simon(at)2ndQuadrant(dot)com> |
Cc: | Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: SET TRANSACTION and SQL Standard |
Date: | 2009-01-09 15:11:05 |
Message-ID: | 49676909.8060703@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Simon Riggs wrote:
> On Fri, 2009-01-09 at 16:14 +0200, Peter Eisentraut wrote:
>> Simon Riggs wrote:
>>> I notice that we allow commands such as
>>>
>>> SET TRANSACTION read only read write read only;
>>>
>>> BEGIN TRANSACTION read only read only read only;
>>>
>>> Unsurprisingly, these violate the SQL Standard:
>>> * p.977 section 19.1 syntax (1)
>>> * p.957 section 17.3 syntax (2)
>> Well, we allow a lot of things. Violations of the SQL standard happen
>> when a command that appears in the standard doesn't do what the standard
>> says. Allowing commands that are not in the standard is not a violation.
>
> Except when the standard explicitly forbids it, as with the above.
No, it just means that the statement "SET TRANSACTION read only read
write read only;" doesn't conform to the standard, and it's therefore
implementation-dependent what it does. See the meaning of "shall" in
Syntax Rules, section "6.3.3.2 Terms denoting rule requirements".
I agree with Tom that the 2nd form is harmless, but we should throw an
error for the first.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2009-01-09 15:21:46 | Re: foreign_data test fails with non-C locale |
Previous Message | Tom Lane | 2009-01-09 14:52:22 | pgindent does a pretty awful job with function-pointer typedefs |