pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

Started by Heikki Linnakangasalmost 14 years ago8 messages
#1Heikki Linnakangas
heikki.linnakangas@iki.fi

Add new keywords SNAPSHOT and TYPES to the keyword list in gram.y

These were added to kwlist.h as unreserved keywords in separate patches,
but authors forgot to add them to the corresponding list in gram.y.
Because of that, even though they were supposed to be unreserved keywords,
they could not be used as identifiers. src/tools/check_keywords.pl is your
friend.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/82e73ba0d1f8990a76a20b3a57957e633945fb2b

Modified Files
--------------
src/backend/parser/gram.y | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

#2Alvaro Herrera
alvherre@commandprompt.com
In reply to: Heikki Linnakangas (#1)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

Excerpts from Heikki Linnakangas's message of jue feb 09 06:42:12 -0300 2012:

Add new keywords SNAPSHOT and TYPES to the keyword list in gram.y

These were added to kwlist.h as unreserved keywords in separate patches,
but authors forgot to add them to the corresponding list in gram.y.
Because of that, even though they were supposed to be unreserved keywords,
they could not be used as identifiers. src/tools/check_keywords.pl is your
friend.

I wondered a couple of weeks ago if we could, instead, generate the
lists in gram.y from kwlist.h.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#2)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

Alvaro Herrera <alvherre@commandprompt.com> writes:

Excerpts from Heikki Linnakangas's message of jue feb 09 06:42:12 -0300 2012:

src/tools/check_keywords.pl is your friend.

I wondered a couple of weeks ago if we could, instead, generate the
lists in gram.y from kwlist.h.

We've looked into that in the past. bison does not seem to have any
sort of "include" directive, which means the only way to do it would be
to have the gram.y file be built from pieces at compile time. Although
Michael is successfully doing something of the sort for ecpg, I find it
way too ugly in return for the amount of benefit we'd get.

If people are sufficiently worried about this, a better answer would be
to teach the makefiles to run check_keywords.pl during every build.

regards, tom lane

#4Alvaro Herrera
alvherre@commandprompt.com
In reply to: Tom Lane (#3)
1 attachment(s)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

Excerpts from Tom Lane's message of jue feb 09 12:17:59 -0300 2012:

Alvaro Herrera <alvherre@commandprompt.com> writes:

Excerpts from Heikki Linnakangas's message of jue feb 09 06:42:12 -0300 2012:

src/tools/check_keywords.pl is your friend.

I wondered a couple of weeks ago if we could, instead, generate the
lists in gram.y from kwlist.h.

We've looked into that in the past. bison does not seem to have any
sort of "include" directive, which means the only way to do it would be
to have the gram.y file be built from pieces at compile time.

Doh, bummer.

Although
Michael is successfully doing something of the sort for ecpg, I find it
way too ugly in return for the amount of benefit we'd get.

Agreed.

If people are sufficiently worried about this, a better answer would be
to teach the makefiles to run check_keywords.pl during every build.

FWIW that script is throwing a warning here:
Use of assignment to $[ is deprecated at /pgsql/source/HEAD/src/tools/check_keywords.pl line 19.

Also, we should at least do the attached to simplify the process.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Attachments:

check-keywords.patchapplication/octet-stream; name=check-keywords.patchDownload
diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile
index 0bdb324..08355ed 100644
--- a/src/backend/parser/Makefile
+++ b/src/backend/parser/Makefile
@@ -56,6 +56,8 @@ else
 	@$(missing) flex $< $@
 endif
 
+check:
+	$(top_srcdir)/src/tools/check_keywords.pl $(top_srcdir)
 
 # Force these dependencies to be known even without dependency info built:
 gram.o keywords.o parser.o: gram.h
#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#4)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

Alvaro Herrera <alvherre@commandprompt.com> writes:

Excerpts from Tom Lane's message of jue feb 09 12:17:59 -0300 2012:

If people are sufficiently worried about this, a better answer would be
to teach the makefiles to run check_keywords.pl during every build.

FWIW that script is throwing a warning here:
Use of assignment to $[ is deprecated at /pgsql/source/HEAD/src/tools/check_keywords.pl line 19.

Any Perl hackers want to improve that script?

Also, we should at least do the attached to simplify the process.
+check:
+	$(top_srcdir)/src/tools/check_keywords.pl $(top_srcdir)

Actually, what would make sense in that line is to attach it to the
existing maintainer-check target, no? I don't think top-level
"make check" descends into this directory.

regards, tom lane

#6Alex Hunsaker
badalex@gmail.com
In reply to: Tom Lane (#5)
1 attachment(s)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

On Thu, Feb 9, 2012 at 11:30, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Alvaro Herrera <alvherre@commandprompt.com> writes:

Excerpts from Tom Lane's message of jue feb 09 12:17:59 -0300 2012:

FWIW that script is throwing a warning here:
Use of assignment to $[ is deprecated at /pgsql/source/HEAD/src/tools/check_keywords.pl line 19.

Any Perl hackers want to improve that script?

The attached 2 liner does it for me.

Attachments:

check_keyword_fix_deprecated.patchtext/x-patch; charset=US-ASCII; name=check_keyword_fix_deprecated.patchDownload
*** a/src/tools/check_keywords.pl
--- b/src/tools/check_keywords.pl
***************
*** 16,22 **** if (@ARGV) {
  	$path = ".";
  }
  
- $[ = 1;			# set array base to 1
  $, = ' ';		# set output field separator
  $\ = "\n";		# set output record separator
  
--- 16,21 ----
***************
*** 60,66 **** line: while (<GRAM>) {
      $n = (@arr = split(' ', $S));
  
      # Ok, we're in a keyword list. Go through each field in turn
!     for (my $fieldIndexer = 1; $fieldIndexer <= $n; $fieldIndexer++) {
  	if ($arr[$fieldIndexer] eq '*/' && $comment) {
  	    $comment = 0;
  	    next;
--- 59,65 ----
      $n = (@arr = split(' ', $S));
  
      # Ok, we're in a keyword list. Go through each field in turn
!     for (my $fieldIndexer = 0; $fieldIndexer < $n; $fieldIndexer++) {
  	if ($arr[$fieldIndexer] eq '*/' && $comment) {
  	    $comment = 0;
  	    next;
#7Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Alex Hunsaker (#6)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

On 11.02.2012 11:57, Alex Hunsaker wrote:

On Thu, Feb 9, 2012 at 11:30, Tom Lane<tgl@sss.pgh.pa.us> wrote:

Alvaro Herrera<alvherre@commandprompt.com> writes:

Excerpts from Tom Lane's message of jue feb 09 12:17:59 -0300 2012:

FWIW that script is throwing a warning here:
Use of assignment to $[ is deprecated at /pgsql/source/HEAD/src/tools/check_keywords.pl line 19.

Any Perl hackers want to improve that script?

The attached 2 liner does it for me.

Thanks, applied!

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

#8Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#5)
Re: [COMMITTERS] pgsql: Add new keywords SNAPSHOT and TYPES to the keyword list in gram.

On tor, 2012-02-09 at 13:30 -0500, Tom Lane wrote:

Also, we should at least do the attached to simplify the process.
+check:
+     $(top_srcdir)/src/tools/check_keywords.pl $(top_srcdir)

Actually, what would make sense in that line is to attach it to the
existing maintainer-check target, no? I don't think top-level
"make check" descends into this directory.

I have hooked this into maintainer-check now.