Re: 8.0 beta1: pg_dump/restore failing - Mailing list pgsql-bugs

From Edmund Bacon
Subject Re: 8.0 beta1: pg_dump/restore failing
Date
Msg-id 4120CCD4.1070202@onesystem.com
Whole thread Raw
In response to Re: 8.0 beta1: pg_dump/restore failing  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: 8.0 beta1: pg_dump/restore failing  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-bugs
Yes. My appologies for the poor bug report.

I have tried this on RedHat 9, gcc 3.2.2 x86 and HP-UX 10.20 gcc 3.2.3
pa-risc

The problem is that pg_restore is not correctly recognizing the ending
$$ quotes on functions:  Note that in the pg_restore text output at the
bottom of the message, the closing $$ quotes are there, but pg_restore
using the custom format (or tar format) doesn't recognize them.  Doing a
strings -a on test.dump also shows the closing $$ quotes.

e.g.

# -- start with a fresh database:

$ createdb test
CREATE DATABASE

# -- do a restore
$ pg_restore --format=c --dbname=test test.dump
pg_restore: [archiver (db)] could not execute query: ERROR:
unterminated dollar
-quoted string at or near "$$begin return 1;" at character 115
pg_restore: WARNING:  there is no transaction in progress
pg_restore: [archiver (db)] could not execute query: ERROR:
unterminated dollar
-quoted string at or near "$$
     LANGUAGE plpgsql;" at character 1
pg_restore: [archiver (db)] could not execute query: ERROR:  function
public.foo
() does not exist
--
-- PostgreSQL database dump complete
--

WARNING, errors ignored on restore: 3

# -- try again with fresh database, but use psql and output from pg_dump

$ dropdb test
DROP DATABASE
$ createdb test
CREATE DATABASE

$ pg_restore test.dump | psql test -f -
SET
SET
COMMENT
SET
CREATE FUNCTION
ALTER FUNCTION
CREATE FUNCTION
ALTER FUNCTION
CREATE LANGUAGE
CREATE FUNCTION
ALTER FUNCTION
REVOKE
REVOKE
GRANT
GRANT
$

#### -- and here is the pg_restore output

$ pg_restore test.dump
--
-- PostgreSQL database dump
--

[ ### snip creating language plpgsql, etc ### ]

--
-- Name: foo(); Type: FUNCTION; Schema: public; Owner: ebacon
--

CREATE FUNCTION foo() RETURNS integer
     AS $$begin return 1; end;$$
     LANGUAGE plpgsql;


ALTER FUNCTION public.foo() OWNER TO ebacon;

--
-- Name: public; Type: ACL; Schema: -; Owner: postgres
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;


--
-- PostgreSQL database dump complete
--

$

Tom Lane wrote:
> Edmund Bacon <ebacon@onesystem.com> writes:
>
>>pg_dump/restore in 8.0beta1 are not working well with formats other
>>thans plain text:
>
>
> What seems to be broken is --clean mode, because it drops and fails to
> restore the public schema.  I can see no reason that it wouldn't
> work exactly the same regardless of dump format though.  Are you
> sure you didn't get confused because things were already broken
> once the destination DB's public schema was gone?
>
>             regards, tom lane

--
Edmund Bacon <ebacon@onesystem.com>

pgsql-bugs by date:

Previous
From: Fabien COELHO
Date:
Subject: Re: BUG #1223: RedHat Linux 8
Next
From: mallah@trade-india.com
Date:
Subject: postgresql 8.0b1 observations.