Tom Lane <[EMAIL PROTECTED]> writes:

>> ... I think we need convert_ident to
>> use a plpgsql_isspace() that accepts these and only these as spaces.
>> Any high-bit-set byte is part of an identifier according to scan.l's
>> rules, and convert_ident must have the same behavior regardless of locale.
>
>> There may be related risks in and around the other flex scanners
>> ... will look.
>
> I've committed a fix along these lines.  ecpg had the identical bug, but
> I couldn't find any other places where we seemed to be assuming that
> <ctype.h> macros would match the behavior of our flex scanners.

Thank you, your commit has fixed this issue. 

The issue with empty table names (when they are multibyte) remains.

The following queries work as expected:

(I use table named as "т" - Unicode 0442, and column named as "к" -
Unicode id 043A) 

CREATE TABLE т (
  к int NOT NULL,
  PRIMARY KEY (к)
);

INSERT INTO т (к) VALUES (1);

SELECT * FROM т;

However, in system catalogs (SELECT * FROM pg_tables WHERE
schemaname='public') there appears to be empty strings instead  
of table names.

This is on patched 8.1.4 (with ILIKE and ctype.h fixes), I'm upgrading
to HEAD now to see if anything improved.

-- 
WBR, Victor V. Snezhko
E-mail: [EMAIL PROTECTED]



---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to