invalid UTF-8 via pl/perl
Hannu Krosing <hannu@2ndquadrant.com>
From: Hannu Krosing <hannu@2ndquadrant.com>
To: pgsql-hackers@postgresql.org
Date: 2010-01-02T22:21:51Z
Lists: pgsql-hackers
It is possible to get an invalid byte sequence into a text field via pl, in this case pl/perl : ---8<------8<------8<------8<------8<------8<--- CREATE TABLE utf_test ( id serial PRIMARY KEY, data character varying ); CREATE OR REPLACE FUNCTION invalid_utf_seq() RETURNS character varying AS $BODY$ return "\xd0"; $BODY$ LANGUAGE 'plperlu' VOLATILE STRICT; insert into utf_test(data) values(invalid_utf_seq()); ---8<------8<------8<------8<------8<------8<--- This results in a table, which has invalid utf sequence in it and consequently does not pass dump/load What would be the best place to fix this ? Should there be checks in all text types ? (probably too expensive) Or should pl/perl check it's return values for compliance with server_encoding ? Or should postgresql itself check that pl-s return what they promise to return ? -- Hannu Krosing http://www.2ndQuadrant.com PostgreSQL Scalability and Availability Services, Consulting and Training