Re: pg_execute_from_file review
Itagaki Takahiro <itagaki.takahiro@gmail.com>
From: Itagaki Takahiro <itagaki.takahiro@gmail.com>
To: Alvaro Herrera <alvherre@commandprompt.com>
Cc: Dimitri Fontaine <dimitri@2ndquadrant.fr>, Joshua Tolley <eggyknap@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2010-11-30T03:25:07Z
Lists: pgsql-hackers
On Tue, Nov 30, 2010 at 08:56, Alvaro Herrera <alvherre@commandprompt.com> wrote: >> > * I hope pg_execute_from_file (and pg_read_file) had an option >> > to specify an character encoding of the file. Especially, SJIS >> > is still used widely, but it is not a valid server encoding. >> >> So, what about client_encoding here, again? > > I tried this in an earlier iteration of this patch, and it works fine > (albeit with a Latin1 file in an UTF8 encoded database, but presumably > this is no different from any other pair of client/server encodings; > recoding took place correctly during execution). client_encoding won't work at all because read_sql_queries_from_file() uses pg_verifymbstr(), that is verify the input with *server_encoding*. Even if we replace it with pg_verify_mbstr(client_encoding, ...) and pg_do_encoding_conversion(from client_encoding to server_encoding), it still won't work well when error messages are raised. The client expects the original client encoding, but messages are sent in the file encoding. It would be a security hole. -- Itagaki Takahiro