The following bug has been logged online:
Bug reference: 4533
Logged by: Rod Taylor
Email address: rod.taylor@gmail.com
PostgreSQL version: 8.3.5
Operating system: FreeBSD 7.0 Stable
Description: Plpgsql complex type failure
Details:
The below script should be able to correctly set v_time to the complex type
timestamp_with_precision. It seems to take it as "timestamp with time zone"
instead creating interesting errors like this:
BEGIN
CREATE TYPE
CREATE FUNCTION
psql:/home/rbt/foo.sql:19: ERROR: invalid input syntax for type timestamp
with time zone: "("2008-11-16 00:00:00-05",day)"
CONTEXT: PL/pgSQL function "testfunc" line 4 at SQL statement
ROLLBACK
Note, the below continues to fail in the same way using
timestamp_with_precision%ROWTYPE.
BEGIN;
CREATE TYPE timestamp_with_precision AS
( timestamp timestamp with time zone
, timestamp_precision varchar
);
CREATE OR REPLACE FUNCTION testfunc() RETURNS boolean AS $FUNC$
DECLARE
v_time timestamp_with_precision;
BEGIN
SELECT (CURRENT_DATE, 'day')::timestamp_with_precision
INTO v_time;
RETURN true;
END;
$FUNC$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER RETURNS NULL ON NULL
INPUT;
SELECT testfunc();
ROLLBACK;