Your name               :
Your email address      :

System Configuration
---------------------
  Architecture (example: Intel Pentium)         : Intel Pentium

  Operating System (example: Linux 2.4.18)      : Debian unstable 
                                                  Linux 2.6.6-1-k7

  PostgreSQL version (example: PostgreSQL-8.0):  PostgreSQL-8.0 CVS HEAD

  Compiler used (example:  gcc 2.95.2)          : gcc 3.3.4


Please enter a FULL description of your problem:
------------------------------------------------

Problems with Turkish locale are widely known to developers. 
Another one, now in PL/pgSQL have reared it's ugly head.
Regression tests are failing at triggers, plpgsql, copy2 
and rangefuncs. Examienation of regression.diff showed that
the failures were due to unrecognised statements like 
BEGIN, RAISE and IF in PL/pgSQL functions. Replacing
capital "I" with lower-case "i" (BEGiN, RAiSE, iF) completely
sloves the problem.


If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------

Apparently problem is caused by the following directive:

     %option case-insensitive

on line 76 in file src/pl/plpgsql/src/scan.l

flex (flex version 2.5.4) incorporates case-insensitivity in it's 
state tables because if I run flex stage with LANG=C everything 
works fine. A quick and dirty fix could be implemented by placing

     LANG=C
     export LANG

in file src/pl/plpgsql/src/Makefile before calling flex.

A long term fix can be done by implementing a function
for keyword lookup like ScanKeywordLookup() in
src/backend/parser/keywords.c.

I would gladly prepare a patch and send it for your consideration 
tomorrow morning.

Best regards,
Nicolai Tufar


---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to