Re: [HACKERS] OUTER keyword

2011-02-22 Thread Bruce Momjian
Heikki Linnakangas wrote:
 On 04.10.2010 18:23, Tom Lane wrote:
  I wrote:
  Heikki Linnakangasheikki.linnakan...@enterprisedb.com  writes:
  Why is OUTER a type_func_name_keyword? The grammar doesn't require that,
  it could as well be unreserved.
 
  Hm, you sure?  All the JOIN-related keywords used to need to be at least
  that to avoid conflicts, IIRC.
 
 Yes. OUTER is just an optional noise word in LEFT/RIGHT OUTER JOIN.
 
  Actually, on reflection, it's possible that only JOIN itself really
  needs that treatment (because it can be followed by a left paren).
  We might have made the JOIN modifier words the same level for
  consistency or something.  If we can back off both INNER and OUTER
  to unreserved, it might be worth doing.  I'd be a little more worried
  about reducing LEFT/RIGHT/FULL, even if it works at the moment.
 
 No, can't change INNER, that creates conflicts.
 
 SELECT * FROM pg_class inner JOIN pg_namespace nsp ON nsp.oid = 
 relnamespace;
 
 is ambiguous, inner could be either an alias name for pg_class or part 
 of INNER JOIN.
 
 I bumped into the OUTER case because we had a test case in the 
 EnterpriseDB test suite using OUTER as a PL/pgSQL variable name. It used 
 to work, at least in simple cases where you don't try to use LEFT OUTER 
 JOIN, in 8.4 when PL/pgSQL replaced it with $1 in any SQL statements 
 before passing them to the backend. But not anymore in 9.0.

It this a TODO?

-- 
  Bruce Momjian  br...@momjian.ushttp://momjian.us
  EnterpriseDB http://enterprisedb.com

  + It's impossible for everything to be true. +

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2011-02-22 Thread Heikki Linnakangas

On 22.02.2011 16:58, Bruce Momjian wrote:

Heikki Linnakangas wrote:

On 04.10.2010 18:23, Tom Lane wrote:

I wrote:

Heikki Linnakangasheikki.linnakan...@enterprisedb.com   writes:

Why is OUTER a type_func_name_keyword? The grammar doesn't require that,
it could as well be unreserved.



Hm, you sure?  All the JOIN-related keywords used to need to be at least
that to avoid conflicts, IIRC.


Yes. OUTER is just an optional noise word in LEFT/RIGHT OUTER JOIN.


Actually, on reflection, it's possible that only JOIN itself really
needs that treatment (because it can be followed by a left paren).
We might have made the JOIN modifier words the same level for
consistency or something.  If we can back off both INNER and OUTER
to unreserved, it might be worth doing.  I'd be a little more worried
about reducing LEFT/RIGHT/FULL, even if it works at the moment.


No, can't change INNER, that creates conflicts.

SELECT * FROM pg_class inner JOIN pg_namespace nsp ON nsp.oid =
relnamespace;

is ambiguous, inner could be either an alias name for pg_class or part
of INNER JOIN.

I bumped into the OUTER case because we had a test case in the
EnterpriseDB test suite using OUTER as a PL/pgSQL variable name. It used
to work, at least in simple cases where you don't try to use LEFT OUTER
JOIN, in 8.4 when PL/pgSQL replaced it with $1 in any SQL statements
before passing them to the backend. But not anymore in 9.0.


It this a TODO?


If we want to change OUTER, we should just do it now. If not, I don't 
see a TODO here.


--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2011-02-22 Thread Tom Lane
Heikki Linnakangas heikki.linnakan...@enterprisedb.com writes:
 On 22.02.2011 16:58, Bruce Momjian wrote:
 It this a TODO?

 If we want to change OUTER, we should just do it now. If not, I don't 
 see a TODO here.

I don't see a good reason to change it.  The SQL standard is perfectly
clear that OUTER is a fully reserved word.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2011-02-22 Thread Robert Haas
On Tue, Feb 22, 2011 at 10:10 AM, Tom Lane t...@sss.pgh.pa.us wrote:
 Heikki Linnakangas heikki.linnakan...@enterprisedb.com writes:
 On 22.02.2011 16:58, Bruce Momjian wrote:
 It this a TODO?

 If we want to change OUTER, we should just do it now. If not, I don't
 see a TODO here.

 I don't see a good reason to change it.  The SQL standard is perfectly
 clear that OUTER is a fully reserved word.

My vote would be to change it.  We don't normally reserve keywords
unnecessarily.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2011-02-22 Thread Tom Lane
Robert Haas robertmh...@gmail.com writes:
 On Tue, Feb 22, 2011 at 10:10 AM, Tom Lane t...@sss.pgh.pa.us wrote:
 I don't see a good reason to change it.  The SQL standard is perfectly
 clear that OUTER is a fully reserved word.

 My vote would be to change it.  We don't normally reserve keywords
 unnecessarily.

Well, we don't like *upgrading* keywords without real good reason,
but OUTER has had its current classification since forever.  The
argument for trying to downgrade it was to avoid breaking a plpgsql
function that used to work, but I don't have a lot of sympathy for
that.  There are any number of cases where you used to be able
to get away with using reserved words as plpgsql variable names and
now cannot, and most of them are not going to be fixable like this.

The scenario that concerns me is that some future SQL spec addition
uses OUTER in such a way that it has to be reserved again, which
isn't going to bother the committee any since they already think
it's reserved.  Then we have to upgrade it, and all we've accomplished
is to encourage people to write unportable, non-future-proof code.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2010-10-05 Thread Heikki Linnakangas

On 04.10.2010 18:23, Tom Lane wrote:

I wrote:

Heikki Linnakangasheikki.linnakan...@enterprisedb.com  writes:

Why is OUTER a type_func_name_keyword? The grammar doesn't require that,
it could as well be unreserved.



Hm, you sure?  All the JOIN-related keywords used to need to be at least
that to avoid conflicts, IIRC.


Yes. OUTER is just an optional noise word in LEFT/RIGHT OUTER JOIN.


Actually, on reflection, it's possible that only JOIN itself really
needs that treatment (because it can be followed by a left paren).
We might have made the JOIN modifier words the same level for
consistency or something.  If we can back off both INNER and OUTER
to unreserved, it might be worth doing.  I'd be a little more worried
about reducing LEFT/RIGHT/FULL, even if it works at the moment.


No, can't change INNER, that creates conflicts.

SELECT * FROM pg_class inner JOIN pg_namespace nsp ON nsp.oid = 
relnamespace;


is ambiguous, inner could be either an alias name for pg_class or part 
of INNER JOIN.


I bumped into the OUTER case because we had a test case in the 
EnterpriseDB test suite using OUTER as a PL/pgSQL variable name. It used 
to work, at least in simple cases where you don't try to use LEFT OUTER 
JOIN, in 8.4 when PL/pgSQL replaced it with $1 in any SQL statements 
before passing them to the backend. But not anymore in 9.0.


--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] OUTER keyword

2010-10-04 Thread Heikki Linnakangas
Why is OUTER a type_func_name_keyword? The grammar doesn't require that, 
it could as well be unreserved.


--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2010-10-04 Thread Tom Lane
Heikki Linnakangas heikki.linnakan...@enterprisedb.com writes:
 Why is OUTER a type_func_name_keyword? The grammar doesn't require that, 
 it could as well be unreserved.

Hm, you sure?  All the JOIN-related keywords used to need to be at least
that to avoid conflicts, IIRC.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] OUTER keyword

2010-10-04 Thread Tom Lane
I wrote:
 Heikki Linnakangas heikki.linnakan...@enterprisedb.com writes:
 Why is OUTER a type_func_name_keyword? The grammar doesn't require that, 
 it could as well be unreserved.

 Hm, you sure?  All the JOIN-related keywords used to need to be at least
 that to avoid conflicts, IIRC.

Actually, on reflection, it's possible that only JOIN itself really
needs that treatment (because it can be followed by a left paren).
We might have made the JOIN modifier words the same level for
consistency or something.  If we can back off both INNER and OUTER
to unreserved, it might be worth doing.  I'd be a little more worried
about reducing LEFT/RIGHT/FULL, even if it works at the moment.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers