git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: 7f2f798) | patch
Revise plpgsql's scanner to process comments and string literals in a way
2009年4月19日 18:52:58 +0000 (18:52 +0000)
2009年4月19日 18:52:58 +0000 (18:52 +0000)
commit 3a624e9200bbd8b88d7724e1448fe530f32e2c3c
Revise plpgsql's scanner to process comments and string literals in a way
more nearly matching the core SQL scanner. The user-visible effects are:

* Block comments (slash-star comments) now nest, as per SQL spec.

* In standard_conforming_strings mode, backslash as the last character of a
non-E string literal is now correctly taken as an ordinary character;
formerly it was misinterpreted as escaping the ending quote. (Since the
string also had to pass through the core scanner, this invariably led
to syntax errors.)

* Formerly, backslashes in the format string of RAISE were always treated as
quoting the next character, regardless of mode. Now, they are ordinary
characters with standard_conforming_strings on, while with it off, they
introduce the same set of escapes as in the core SQL scanner. Also,
escape_string_warning is now effective for RAISE format strings. These
changes make RAISE format strings work just like any other string literal.

This is implemented by copying and pasting a lot of logic from the core
scanner. It would be a good idea to look into getting rid of plpgsql's
scanner entirely in favor of using the core scanner. However, that involves
more change than I can justify making during beta --- in particular, the core
scanner would have to become re-entrant.

In passing, remove the kluge that made the plpgsql scanner emit T_FUNCTION or
T_TRIGGER as a made-up first token. That presumably had some value once upon
a time, but now it's just useless complication for both the scanner and the
grammar.
doc/src/sgml/plpgsql.sgml diff | blob | blame | history
src/pl/plpgsql/src/gram.y diff | blob | blame | history
src/pl/plpgsql/src/pl_comp.c diff | blob | blame | history
src/pl/plpgsql/src/pl_funcs.c diff | blob | blame | history
src/pl/plpgsql/src/plpgsql.h diff | blob | blame | history
src/pl/plpgsql/src/scan.l diff | blob | blame | history
src/test/regress/expected/plpgsql.out diff | blob | blame | history
src/test/regress/sql/plpgsql.sql diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /