Laurent Faillie ([EMAIL PROTECTED]) reports a bug with a severity of 2
The lower the number the more severe it is.

Short Description
pg_dumpall produce erroneous files if the databbase use procedural language.

Long Description
Hi all,

I'm working to migrate my database from postgresql 7.2.2 to 7.3.2
It run on an HP-UX 11 box.

So, I use 7.3.2 pg_dumpall binary to extract my previous database using the following 
command

pg_dumpall -c -h eux170

and, then I try to import these data into my new one (on a test server) 

psql -a -v ON_ERROR_STOP template1 < /datas/depot/tmp/db

which fails for 2 problem :

First :
=======

--
-- TOC entry 247 (OID 16595)
-- Name: plpgsql; Type: ACL; Schema: ; Owner: 
--
REVOKE ALL ON LANGUAGE plpgsql FROM PUBLIC;
ERROR:  permission denied
GRANT ALL ON LANGUAGE plpgsql TO PUBLIC;
ERROR:  permission denied

Why ? Because, in this step, the user remain as it was in the previous step of the 
file, and in my case, it's a normal user.

I think the fix will be to switch to the super user before doing this.

second :
========

--
-- TOC entry 252 (OID 16610)
-- Name: arrondi_date (timestamp with time zone); Type: FUNCTION; Schema: ; Owner: 
faillie
--
CREATE FUNCTION arrondi_date (timestamp with time zone) RETURNS date
    AS '
BEGIN
        IF EXTRACT(HOUR FROM $1) > 20 THEN
                RETURN DATE($1) + 1;
        ELSE
                RETURN DATE($1);
        END IF;
        
END;
'
    LANGUAGE plpgsql;
ERROR:  language "plpgsql" does not exist

Why ? Because plpgsql is not existing at this step ... it will be added to the 
database ... afterwards.

The solution is obviously to create all languages just after database and user 
creation, but BEFORE doing anything on data and on stored procedure.

Best regards,

Laurent


Sample Code


No file was uploaded with this report


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to