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